IBus

Related articles
Localization
Input method
Fcitx
Fcitx5
IBus
(
Intelligent Input Bus
) is an
input method framework
, a type of application that allows for easily switching between different keyboard layouts. When combined with an
input method editor
, it also allows for typing non-Latin characters using a keyboard that does not natively support them.
Installation
Install
the
ibus
package.
Additionally, see
Input method#List of available input method editors
for a comprehensive list of available input method editors.
Note
GNOME
has
integrated
IBus since version 3.6 and makes use of it by default, so if you use it as your
desktop environment
, you may skip
#Integration
and go straight to
#Configuration
.
Integration
Set the following
the following
environment variables
:
For Wayland sessions:
GTK_IM_MODULE=wayland
XMODIFIERS=@im=ibus
QT_IM_MODULES=wayland;ibus
QT_IM_MODULE=ibus
For X11 sessions:
GTK_IM_MODULE=ibus
XMODIFIERS=@im=ibus
QT_IM_MODULE=ibus
To launch IBus on user login, create an
autostart
entry with the following command:
ibus start
Add the
--type wayland
flag when used on with
Wayland compositor
. On the next login IBus will start along with the user session.
Tip
The
ibus-autostart
AUR
package provides an
autostart
entry that can auto start this.
The
ibus-daemon
AUR
package provides an
ibus@$DISPLAY.service
that can be
enabled
to achieve this.
KDE
comes with a plasmoid called Input Method Panel that can act as an IBus frontend and can possibly provide a better integrated experience.
To launch IBus with Input Method Panel, use the
--panel=/usr/lib/kimpanel-ibus-panel
option with the
ibus-daemon
command above (if the panel does not appear, you can try the
--desktop=kde
option instead). To configure the
Input Method Panel
widget, see the
KDE UserBase Wiki
and
KDE#Widgets
for details.
The
ibus-autostart-kimpanel
AUR
package provides an
autostart
entry that can auto start this.
Configuration
See
Locale
for help with adding non-Latin language support to your system.
See
Fonts#Non-latin scripts
for a non-exhaustive list of available non-Latin fonts.
GNOME
GNOME
uses IBus by default, so you can simply go to
Settings > Keyboard > Input Sources
and add a keyboard layout for the language of your choice.
Some non-Latin languages (e.g. Simplified Chinese) need to enable the
Show Extended Input Sources
option in
GNOME Tweaks
.
Other desktop environments
Tip
For
Wayland
environments see:
WaylandDesktop
To launch the IBus preferences window, you can:
Right-click on its tray icon and select
Preferences
, or
Find and launch the GUI application IBus Preferences, or
Run the command
ibus-setup
in a terminal
The points of interest here are the keyboard shortcut for
Next input method
(which is the one you will want to use instead of the default shortcut provided by your desktop environment) and the
Input Method
tab where you can add or remove the different keyboard layouts (which is where you will want to do this instead of your desktop environment's default layout manager).
Tips and tricks
Emoji input
IBus supports the input of emoji icons. Type
Super+.
and you will see the input prompt change to an underlined
e
character. You can then type the symbol or name of the emoji you want (e.g.
:)
or
face
) and press
Space
to render it. If you are satisfied with the result press
Enter
to submit it and exit emoji input mode, or press
Space
for a second time to open a dialog where you can further customize your desired emoji.
See
ibus-emoji(7)
for more information.
Unicode input
IBus supports the input of complex Unicode characters. Type
Ctrl+Shift+u
and you will see the input prompt change to an underlined
u
character. You can then type the code of the Unicode character you want and press
Space
or
Enter
to render and submit it.
Tray icon color
By default, IBus uses a dark blue color to display the language symbol of the currently active layout (e.g.
EN
). The color value is stored in a
gsettings schema
, so if you wish to change it you can run the following command:
$ gsettings set org.freedesktop.ibus.panel xkb-icon-rgba 'COLOR'
The string
COLOR
should conform to the following guidelines:
The RGBA value can be:
a color name from X11,
a hex value in form
#rrggbb
where
r
,
g
and
b
are hex digits of the red, green, and blue,
a RGB color in form
rgb(r,g,b)
or
a RGBA color in form
rgba(r,g,b,a)
where
r
,
g
and
b
are either integers in the range 0 to 255 or percentage values in the range 0% to 100%, and
a
is a floating point value in the range 0 to 1 of the alpha.
Tip
You can also use
dconf-editor
to edit the gsettings schema in a more user-friendly way.
Note
This does not apply to either
GNOME
, or
KDE
with KDE Input Method Panel, because they both provide their own icons for IBus.
Layout switcher display delay
When pressing the
Next input method
hotkey, IBus displays a small dialog to signify the layout switch. By default this dialog is displayed 400ms after pressing the key, but this value can be changed by the user, with some interesting choices being '0' to display the dialog immediately without any delay, or a negative value (e.g. '-1') to switch the layouts without showing the window at all (which may be useful if you only use two layouts and simply switch from one to the other).
The value is stored in a
gsettings schema
, so if you wish to change it you can run the following command:
$ gsettings set org.freedesktop.ibus.general switcher-delay-time 'VALUE'
To show the currently stored value, run the following command:
$ gsettings get org.freedesktop.ibus.general switcher-delay-time
The string 'VALUE' should conform to the following guidelines:
Set popup delay milliseconds to show IME switcher window. The default is 400.
0 = Show the window immediately.
0 < Delay milliseconds.
0 > Do not show the window and switch prev/next engines.
Tip
You can also use
dconf-editor
to edit the gsettings schema in a more user-friendly way.
Using modifier key combinations to switch layouts
For some reason, the IBus preferences GUI will not let you use a subset of modifier key combinations (e.g.
Alt+Shift_R
) as the layout switching hotkey. However, IBus stores the hotkey as a string in a
gsettings schema
, so you can still use such combinations by directly editing that string:
$ gsettings set org.freedesktop.ibus.general.hotkey triggers "['VALUE']"
The string
'VALUE'
should be any valid modifier key combination written in a format that IBus recognizes, e.g.
<Alt>Shift_R
.
Tip
You can also use
dconf-editor
to edit the gsettings schema in a more user-friendly way.
rxvt-unicode
For
rxvt-unicode
to work correctly with IBus, you may need to add the following lines to
~/.Xresources
:
URxvt.inputMethod: ibus
URxvt.preeditType: OverTheSpot
Troubleshooting
Missing packages due to pyenv
If using
pyenv
to manage python versions and configuration,
ibus
dependencies may not be installed on the set global python version. This can happen if the global version is not the one managed by the system (to which dependencies that ibus depends on, such as
gi
are installed). This may result in a running but non-functional ibus setup (ibus is in the system tray, but preferences can not be opened, etc). One way to verify this issue is to attempt to run
ibus-setup
and see if any missing dependency errors arise.
To fix this issue, change your pyenv global version to the system version:
pyenv global system
Settings removed after restart
If you find your settings are being removed consistently after restart (input methods being reverted), you can confirm the engines set to be preloaded and the order in which they will be loaded:
$ gsettings get org.freedesktop.ibus.general preload-engines
['xkb:us::eng']
$ gsettings get org.freedesktop.ibus.general engines-order
['xkb:us::eng', 'anthy']
To ensure
anthy
gets loaded in this case, add it to the
org.freedesktop.ibus.preload-engines
list:
$ gsettings set org.freedesktop.ibus.general preload-engines "['xkb:us::eng', 'anthy']"
Changes your changes should be reflected immediately, and should persist across restarts.
Ibus IME packages only input keyboard's native charset
A possible fix is to set the GTK_IM_MODULE
environment variable
to xim instead of ibus:
/etc/environment
GTK_IM_MODULE=xim
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
Keys "stick" after being held down
In certain games, especially those running via Proton, keeping a key pressed for several seconds might result in that key "sticking" (continuing to be registered as pressed) until it is pressed and released again. Limited testing
[1]
has found that simply killing the IBus daemon is sufficient to resolve the issue.
See also
GitHub repository