Fcitx

Fcitx is a lightweight input method framework aimed at providing environment independent language support for Linux. It supports a lot of different languages and also provides many useful non-CJK features.

Other languages

Input method module

To obtain a better experience in Gtk+ and Qt programs, install the fcitx-gtk2, fcitx-gtk3, fcitx-qt4[broken link: package not found] and fcitx-qt5 input method modules as your need, or the fcitx-im group to install all of them. Without those modules, the input method may work on most applications but you may experience input method hang up, preview window screen location error or no preview error.

Usage

Desktop Environment Autostart

If you are using any XDG compatible desktop environment such as KDE, GNOME, Xfce, LXDE, after you re-login, the autostart should work out of box. If not run the fcitx executable. To see if fcitx is working correctly, open an application and press Ctrl+Space (the default shortcut for switching the input method) to invoke fcitx and input some words.

If fcitx failed to start with your desktop automatically or if you want to change the parameters to start fcitx, configure autostart or edit the fcitx-autostart.desktop file in your ~/.config/autostart/ directory (copy it from /etc/xdg/autostart/ if it doesn't exist yet).

When other input methods with xim support are also running, fcitx may fail to start due to an xim error. Ensure that no other input methods are running before you start fcitx.

Also please set the following environment variables to prefer IM modules for GTK/Qt applications.

Set environment variables for IM modules

Define the environment variables to register the input method modules and support xim programs.

~/.pam_environment

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

Re-login or reboot to make these environment changes effective.

If fcitx process does not start automatically, you might need to add fcitx & in your ~/.xinitrc.

If all Qt apps have problem with fcitx, run qtconfig (qtconfig-qt4), and go to the third tab, make sure fcitx is in the Default Input Method combo-box.

XIM

Optionally, you can use the X Input Method (XIM) in your GTK+ and/or Qt programs without installing the above modules in which case you need to change the corresponding lines above as following:

GTK_IM_MODULE=xim
QT_IM_MODULE=xim

Warning: Using XIM can sometimes cause problems including not being able to input, no cursor following, word selection window issue, application freeze on input method restart. For these XIM related problems, Fcitx cannot provide any fix or support. This is the same with any other input method framework, so please use the GTK+ and Qt input method modules instead of xim whenever possible

Note: Gtk2 uses /usr/lib/gtk-2.0/2.10.0/immodules.cache as immodule cache file since 2.24.20. If you have set GTM_IM_MODULE_FILE environment variable or do not use install script of official packages to update the cache, please change/clear the environment variable and use /usr/bin/gtk-query-immodules-2.0 --update-cache to update immodule cache.

Note: Qt5 applications no longer support XIM protocol as Qt4 did, and rely on IM modules entirely for communicating with fcitx.

Configuration

GUI configuration tools

Run fcitx-config-gtk3 after fcitx-configtool is installed. Unset Only Show Current Language if you want to enable an input method for a different language.

Stop fcitx manually before changing configuration, or the change may be lost.

In order to enable spell checking, press Ctrl+Alt+h when fcitx is on an input method provided by fcitx-keyboard.

Input methods configuration

You can add/remove input methods in the GUI tools. Note that the search is case sensitive.

The first set input method is the inactive state, while all the rest will be active states. You generally want the inactive state to be one of the Keyboard options (e.g. "Keyboard - English (US)"). These options just input based on the keyboard layout in the name.

Under Global Config, the Trigger Input Method shortcut will only switch between the inactive and last used active state. The Scroll between Input Methods will by default only scroll between different active states, but can also be set to include the inactive state in the advanced settings. Furthermore, the Scroll between Input Methods shortcut has to be pressed in order, e.g. ALT_SHIFT will only activate if alt is pressed before shift.

Configuration settings for IME's can be found by by setting the keyboard to the desired IME and right-clicking the tray icon.

Extend pinyin dictionary

Pinyin dictionary is located at ~/.config/fcitx/pinyin. File pybase.mb is for single characters and file pyphrase.mb defines pinyin phrases. To extend them, put your file into /usr/share/fcitx/pinyin and restart fcitx.

Skins

You can download skins and extract them to one of the following directories, you can create the directory if it doesn't exist:

Cloud Pinyin configuration

After installing the fcitx-cloudpinyin input method, restart fcitx. If you could not find it in configuration GUI, enable advanced settings. The cloud query result will be added to current input method dictionary automatically.

The query result from cloud will list as secondary candidate by default and it is configurable. If the result already exists, only one item is shown.

Note: Set query result as first candidate is not recommend because the dictionary order will be changed if query returns an empty result

Tips and tricks

Clipboard Access

You can use fcitx to input text in you clipboard (as well as a short clipboard history and primary selection). The default trigger key is Ctrl-;. You can change the trigger key as well as other options in the Clipboard addon configure page.

Note: This is NOT a clipboard manager, it doesn't hold the selection or change its content as what a clipboard manager is supposed to do. It can only be used to input from the clipboard.

Warning: Some clients do not support multi-line input, so you may see the multi-line clipboard content pasted as a single line using fcitx-clipboard. This is either a bug or feature of the program being used and it is not something fcitx is able to help with.

fcitx-remote

fcitx-remote is a commandline tool that can be used to control the fcitx state. It is installed with the fcitx package.

One option worth elaborating upon here is fcitx-remote -s imname, which switches to the input method identified by imname. The correct imname for an in use input method can be found by executing fcitx-diagnose, and looking under the "## Input Methods:" section.

Troubleshooting

Disable or change Extra key for trigger input method [sic]

This setting is under the Global Config tab and defaults to SHIFT Both, meaning that pressing either shift key will immediately change input methods. Although it should only apply when a shift key is pressed individually, it tends to randomly interrupt typing capital letters, selecting text with the keyboard, etc. while using standard keyboard input.

In addition, this setting may revert to default without warning at any time. To ensure fcitx's config cannot be modified, you must make fcitx's config file immutable: # chattr +i ~/.config/fcitx/config.

Diagnose the problem

If you have problems using fcitx, eg. Ctrl+Space fail to work in all applications, then the first thing you should try is to diagnose using fcitx-diagnose.
The output of fcitx-diagnose should contain the clue to most common problems.
Providing the output of it will also help when you consult other people(eg. in IRC or forums).

Emacs

If your LC_CTYPE is English, you may not be able to use input method in emacs due to an old emacs bug. You can set your LC_CTYPE to something else such as zh_CN.UTF-8 before emacs starts to get rid of this problem.

Note that the corresponding locale should be generated on your your system.

The default fontset will use `-*-*-*-r-normal--14-*-*-*-*-*-*-*' as basefont (in src/xfns.c), if you do not have one matched (like terminus or 75dpi things, you can look the output of `xlsfonts'), XIM can not be activated.

Emacs Daemon

If you are using emacs daemon/client mode, LC_CTYPE should be set when starting the daemon. For example, by running emacs daemon with LC_CTYPE=zh_CN.UTF-8 emacs --daemon.

If starting emacs daemon from systemd, setEnvironment="LC_CTYPE=zh_CN.UTF-8" "XMODIFIERS=@im=fcitx" in the unit file.

(XMODIFIERS may need to be set explicitly here as systemd doesn't load .xprofile. Check the initial-environment variable in emacs to verify both variables are set correctly.)

Firefox popup menu not work

For Firefox above version 13, the popup menu may fail to work due to xim, make sure that fcitx-gtk3 along with a latest version fcitx are installed.

Ctrl+Space fail to work in GTK programs

This problem sometimes happens especially when the locale is set as English. Please make sure your GTK_IM_MODULE is set correctly.

If you have set the *_IM_MODULE environment variables to fcitx but cannot activate fcitx, please check if you have installed the corresponding input method modules.

Some programs can only use xim, if you are using these programs, please make sure your XMODIFIERS is set properly and be aware of the problems you may have. These programs include all programs that are not using GTK or Qt (e.g. programs that use tk, motif, or xlib directly), emacs, opera, openoffice, libreoffice, skype.

If you cannot enable fcitx in gnome-terminal under Gnome and the above way doesn't work, try:

Buildin Chinese Pinyin Default NOT ACTIVE

If your locale is en_US.UTF-8, fcitx did NOT enable the buildin Chinese Pinyin input method by default. There is only fcitx-keyboard-us input method enabled. You can get a notice by fcitx-diagnose command like this:

## Input Methods:
1. Found 1 enabled input methods:
fcitx-keyboard-us
2. Default input methods:
**You only have one input method enabled, please add a keyboard input method as the first one and your main input method as the second one.**

Then you should add Pinyin or Shuangpin input method to actived input methods by the GUI configure tool.

fcitx and KDE

For some reasons, KDE doesn't handle keyboard layouts properly. For example, if you switch from US (English) to LT (Lithuanian), all numbers on the keyboard should produce Lithuanian letters, but they still produce numbers as the output. This can be fixed by these steps:

Turn off fcitx if it is running in the background.

Disable stuff related to KDE:

At System settings > Input devices > Layouts (tab) make sure that Configure layouts is unchecked.