Japanese input in Fedora23
First the fix:
Set the following in $HOME/.config/imsettings/xinputrc
export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibus
If the folder $HOME/.config/imsettings doesn’t exist, create it first.
And now a bit of background.
I switched for a short time to Ubuntu. My reasoning was that I can give better family support but I switched back to Fedora. Ubuntu was so far the worst Linux experience, at least with my existing configurations. But after switching back to Fedora 23 Japanese input didn’t work. Fedora 23 uses ibus as default method. And it tries to do things automagically and in doing that, they totally failed for me.
There is a script /etc/X11/xinit/xinitrc.d/50-xinput.sh. This script tries to do some magic and works pretty late in the process of starting your GUI when using the default GDM. First it unsets a whole bunch of environment variables and thus will probably anything you set up locally, when you come from another distribution like in $HOME/.xprofile or $HOME/.xinputrc or some other candidate for setting the variables above. Then it looks up if you have $HOME/.config/imsettings/xinputrc. If not, it should create $HOME/.config/imsettings and looks if you have a file $HOME/.xinputrc. If you have it, it gets moved to that folder. And then the file gets sourced and the script is finished.
The folder creation part is the place where I guess the script failed for me.
And if that file doesn’t get sourced by the script for whatever reason, the script looks up which LANG-variable you have set and compares it to a hardcoded list. And then sets up environment variables depending on your LANG-variable.
If you have set en_US.utf8 like me that means that they get set up in a minimal way which leads to not being able to use an IME. And of course the script doesn’t bother logging anything.
Dear Fedora Project, this is too much magic and can fail. Especially since there are multiple places in $HOME where you can potentially set up the three environment variables, not all recommended but possible. There is .xinputrc, .xinitrc, .xprofile, .profile and even .bashrc. And every tutorial in the net suggests setting it in one of these. Why do you add a new subdirectory in .config? And if stuff doesn’t work because of bugginess, why do you make everything dependent on the set language of the system? Never heard of anyone using English for example as native tongue and then speaks a foreign language? And then apparently you didn’t document that anywhere and do not log anything in the script, so troubleshooting gets really hard. I know those problems of setting up Japanese input in Linux. But I had those problem in the beginnings of 2000 and before. Great job catapulting us back 10 - 20 years, a blast from the past :/