Ubuntu – How to set iBus default input method in 14.04

14.04ibus

Recently I upgraded from 12.04 to 14.04 LTS but found iBus going insane.

In 12.04 there is no English input method in the list because when an application is launched, iBus would be in a state of "Input method off"; then I could turn on the IM by hitting Ctl+Sp, and then input Chinese or something else.

But in 14.04, the English (US) is also one of the input methods. Besides that, I have Chinese (pinyin) and Japanese (mozc) activated. As a result, an application would be launched with Chinese as its default input method. I've tried remove and re-add input methods, but the input method list is fixed in the order in the following pic and pinyin seems to be the default

enter image description here

How may I configure the sequence and make English default? Thanks a lot!

EDIT

In fact the initial input method for each newly launched application appears to be random, and Mozc could possibly be the default as well.

And I also found a solution though it is only a way to set default IM in current login session. It's like this

  • go to a workspace without any application window (or just don't focus on any application)
  • press the hotkey to change the IM to English (or any default one you like)
  • then the initial IM in newly started application or new xterm tab will be English

The output of gsettings list-recursively org.freedesktop.ibus is

org.freedesktop.ibus.general dconf-preserve-name-prefixes ['/desktop/ibus/engine/pinyin', '/desktop/ibus/engine/bopomofo', '/desktop/ibus/engine/hangul']
org.freedesktop.ibus.general preload-engines-inited true
org.freedesktop.ibus.general use-system-keyboard-layout true
org.freedesktop.ibus.general embed-preedit-text true
org.freedesktop.ibus.general enable-by-default false
org.freedesktop.ibus.general use-global-engine false
org.freedesktop.ibus.general preload-engine-mode 0
org.freedesktop.ibus.general use-xmodmap true
org.freedesktop.ibus.general switcher-delay-time 400
org.freedesktop.ibus.general version '1.5.5'
org.freedesktop.ibus.general load-xkb-layouts ['us', 'us(chr)', 'us(dvorak)', 'ad', 'al', 'am', 'ara', 'az', 'ba', 'bd', 'be', 'bg', 'br', 'bt', 'by', 'de', 'dk', 'ca', 'ch', 'cn(tib)', 'cz', 'ee', 'epo', 'es', 'et', 'fi', 'fo', 'fr', 'gb', 'ge', 'ge(dsb)', 'ge(ru)', 'ge(os)', 'gh', 'gh(akan)', 'gh(ewe)', 'gh(fula)', 'gh(ga)', 'gh(hausa)', 'gn', 'gr', 'hu', 'hr', 'ie', 'ie(CloGaelach)', 'il', 'in', 'in(tel)', 'in(bolnagri)', 'iq', 'iq(ku)', 'ir', 'ir(ku)', 'is', 'it', 'jp', 'kg', 'kh', 'kz', 'la', 'latam', 'lk', 'lk(tam_unicode)', 'lt', 'lv', 'ma', 'ma(tifinagh)', 'mal', 'mao', 'me', 'mk', 'mm', 'mt', 'mv', 'ng', 'ng(hausa)', 'ng', 'ng(igbo)', 'ng(yoruba)', 'nl', 'no', 'no(smi)', 'np', 'pk', 'pl', 'pl(csb)', 'pt', 'ro', 'rs', 'ru', 'ru(cv)', 'ru(kom)', 'ru(sah)', 'ru(tt)', 'ru(xal)', 'se', 'si', 'sk', 'sy', 'sy(ku)', 'th', 'tj', 'tr', 'ua', 'uz', 'vn']
org.freedesktop.ibus.general engines-order ['xkb:us::eng', 'pinyin', 'mozc-jp']
org.freedesktop.ibus.general preload-engines ['pinyin', 'xkb:us::eng', 'mozc-jp']
org.freedesktop.ibus.general xkb-latin-layouts ['ara', 'bg', 'cz', 'dev', 'gr', 'gur', 'in', 'jp(kana)', 'mal', 'mkd', 'ru', 'ua']
org.freedesktop.ibus.general.xkblayoutconfig east-asia ['dz', 'km', 'lo', 'my', 'th', 'vi']
org.freedesktop.ibus.general.xkblayoutconfig center-asia ['bo', 'zh']
org.freedesktop.ibus.general.xkblayoutconfig north-europe ['da', 'fi', 'fo', 'is', 'no', 'se', 'sv']
org.freedesktop.ibus.general.xkblayoutconfig west-europe ['ca', 'cs', 'de', 'en', 'es', 'fr', 'gd', 'hu', 'it', 'nl', 'pt', 'sk', 'sl']
org.freedesktop.ibus.general.xkblayoutconfig group-list ['west_europe', 'south_europe', 'east_europe', 'north_europe', 'west_asia', 'center_asia', 'east_asia', 'india', 'australia']
org.freedesktop.ibus.general.xkblayoutconfig south-europe ['bg', 'bs', 'el', 'mk', 'mt', 'ro', 'sq', 'sr']
org.freedesktop.ibus.general.xkblayoutconfig west-asia ['am', 'ar', 'az', 'ber', 'fa', 'ha', 'he', 'hy', 'ig', 'ku', 'tg', 'tr', 'yo']
org.freedesktop.ibus.general.xkblayoutconfig india ['bn', 'dv', 'gu', 'hi', 'kn', 'ml', 'ne', 'or', 'pa', 'si', 'ta', 'te', 'ur']
org.freedesktop.ibus.general.xkblayoutconfig east-europe ['be', 'csb', 'cv', 'et', 'ka', 'kk', 'ky', 'lt', 'lv', 'pl', 'ru', 'tt', 'uk', 'uz']
org.freedesktop.ibus.general.xkblayoutconfig australia ['mi']
org.freedesktop.ibus.general.hotkey next-engine ['Alt+Shift_L']
org.freedesktop.ibus.general.hotkey disable-unconditional @as []
org.freedesktop.ibus.general.hotkey enable-unconditional @as []
org.freedesktop.ibus.general.hotkey triggers-no-modifiers @as []
org.freedesktop.ibus.general.hotkey trigger ['Control+space', 'Zenkaku_Hankaku', 'Alt+Kanji', 'Alt+grave', 'Hangul', 'Alt+Release+Alt_R']
org.freedesktop.ibus.general.hotkey previous-engine @as []
org.freedesktop.ibus.general.hotkey prev-engine @as []
org.freedesktop.ibus.general.hotkey next-engine-in-menu ['Alt+Shift_L']
org.freedesktop.ibus.general.hotkey triggers ['<Alt><Shift>', '<Control>space']
org.freedesktop.ibus.panel x -1
org.freedesktop.ibus.panel y -1
org.freedesktop.ibus.panel lookup-table-orientation 1
org.freedesktop.ibus.panel show 1
org.freedesktop.ibus.panel auto-hide-timeout 10000
org.freedesktop.ibus.panel show-im-name false
org.freedesktop.ibus.panel custom-font 'Sans 10'
org.freedesktop.ibus.panel show-icon-on-systray true
org.freedesktop.ibus.panel use-custom-font false

Best Answer

Just use setxkbmap when you want to switch to the US keyboard. Ex:

setxkbmap us

I've created a desktop shortcut icon to help me switch keyboard layouts because of Ibus language problems. Just edit a file named layout.desktop in $HOME/Desktop and make it executable. Here is an example for getting back to a US keyboard layout:

[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Keymap US
Comment=
Exec=setxkbmap us
StartupNotify=false
Terminal=false
Hidden=false
Related Question