Setup environment variables
In spite of Ubuntu, Debian, Fedora, OpenSUSE, other distribution don't have utils to help to setup required environment variable.
To explain it as easy as possible how this works. That is, if you are using a graphical GUI to type user name, or to login, you will need to add
GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx
to ~/.pam_environment (It will be a hidden file, since the file name starts with dot), open your favorite editor, gedit, kwrite, vim, emacs to edit it).
And make sure, if you open any gtk application, and right click on an input field, there is an item for fcitx in Input Method Menu, like
And make sure if you open any qt application, and right click on an input field, there is also an item named in input method menu, like
It doesn't have to be selected if you haven't logout and re-login to make your setting effects, but you need to make sure they are selected after you change the setting and re-login.
If you can complete the step above, you don't need to bother following description.
Fcitx can use XIM or Fcitx's own DBus protocol to communicate with input program. Since 4.1, Fcitx provides GTK2/3 and Qt4 input method module, in order to provides better experience in those application, it's highly recommended to use im module instead of XIM, in order to avoid unresolvable problem.
There are several places to setup environment variable. It depends on how you start up your Display Server.
Requires following lines.
export GTK_IM_MODULE=fcitx # or xim export QT_IM_MODULE=fcitx # or xim export XMODIFIERS=@im=fcitx
Use GDM/KDM/LightDM/Slim (Session Mode)
~/.pam_enivironment is the best choice because it works for both X and Wayland (If not exists, create a new one).
Use Slim (~/.xinitrc)/startx
In that case, you are using ~/.xinitrc to startup, you also need those lines in your ~/.xinitrc. And depends on you use DBus (im module and kimpanel need it), you might want to add
eval `dbus-launch --sh-syntax --exit-with-session`
At the head, to make sure DBus correctly initialized.
With newer slim, you may need this instead:
dbus-launch --sh-syntax --exit-with-session > /dev/null
Maybe you are using vncserver, or something else, you need to figure out your start script, for example, vncserver use ~/.vnc/xstartup. Treat it similar with ~/.xinitrc.
For ~/.xinitrc, you can put fcitx to your ~/.xinitrc. Fcitx will run as daemon by default, so no need to use fcitx & to start it.
If you running a XDG compatible desktop, for example, Gnome, KDE, LXDE, Xfce, you can run
cp /usr/share/applications/fcitx.desktop ~/.config/autostart/fcitx.desktop
To add fcitx to your autostart. You can also use tool provided by your desktop to do the same thing.