Since UIM didn't want to play ball after installing Ubuntu 12.04 from scratch, I tried IBus, since that's the IME framework that's coming with Ubuntu by default.
However, ibus-table-compose is a pain in the butt to use because just to enter one character I need to press the key combination to trigger IBus first, enter the respective compose sequence, then press the IBus key combination again to disable it. Instead of that I'd rather like to keep my compose key functionality as provided by XIM, since that requires fewer keystrokes.
The problem is, though, that when the default input method is set to IBus and IBus is deactivated so that (AIUI, since I started it with ibus-daemon --xim) it is bypassed in favor of XIM, the settings in ~/.XCompose seem to be overridden by IBus's own version, so e.g. Compose c a doesn't give ą (a-ogonek) as I defined in the .XCompose file in my home directory, but ǎ (a-hacek), as defined by some other settings.
I've grown quite accustomed to my own mnemnonics, so is there any way to make my system use my own ~/.XCompose file with the default input method still being set to IBus so that IBus will still work e.g. in OpenOffice and other applications that don't let you choose the input method with a context menu?
Note: This is not a duplicate of the question How can I get compose back on ibus?
As stated by @von, you CANNOT use your
.XCompose
with IBUS for now.You can use
uim
as Input Method, which supports Unicode, both GTK+ and Qt immodules with legacyXIM
support.A good way to handle your
.XCompose
and keep existing global Compose is:Install uim:
sudo apt-get install uim
Make it the default Input Method:
im-config -n uim
Edit your
.XCompose
and add the current keyboard locale (in my case,en_US
) as first line:include "/usr/share/X11/locale/en_US.UTF-8/Compose"
Done! Restart the programs you want to start to get your
.XCompose
file.Known Issues
Ubuntu Unity Dash will never produces a cedilla.
Other Distros
I played a bit with
.XCompose
and Input Methods on modern distros these days, while trying make Linux keep the same keyboard behavior as Windows(TM) for latin languages (outputç
instead ofć
, no accented consonants, etc).I created a repo with this instructions (for Ubuntu and other distributions too): https://github.com/raelgc/win_us_intl
Since Dennis Williamson said it worked in 16.04 in a comment above, I tested in this fresh 18.04 install with a short
.XCompose
copied from my previous 16.04 install.Then I ran
ibus restart
in a terminal and I can type ʁ.It appears that it is not defined by some other settings, in the sense of some configuration file you might edit. It appears that it is compiled in, hard-coded in the file
gtkimcontextsimpleseqs.h
. It further appears that it's not easy to customize thegtk_compose_seqs_compact
array in that file and add your own Compose key sequences. The table is optimized for space, not easy editiability. So the "simply change the source and recompile" strategy may be more difficult than I thought.There is a bug report at https://bugzilla.gnome.org/show_bug.cgi?id=155010 which has a patch that (they say) would make it possible to customize the compose table. It still wouldn't use your ~/.XCompose file, and the syntax would be different, but it's something. But I note that the bug in question is still open, so I guess this has not made it into the official releases yet.
/etc/environment
) theQT_IM_MODULE
,GTK_IM_MODULE
variables (the last unneeded for gnome) toibus
, andXMODIFIERS
to@im=ibus
.2.α Execute
setxkbmap
with-option
to choose compose key. E.g. to use the right logo key:setxkbmap -option compose:rwin
. This would be overwritten on reboot.2.β To retain the setting on reboot, create the
/etc/X11/xorg.conf.d/00-keyboard.conf
with the following content:Tested, and works for both X11 and (at least the
setxkbmap
way) Wayland.Thanks for a hint goes to fujiwarat, updated per this discussion.