ibus
Enable Intelligent Input Bus for multilingual input
SYNOPSIS
ibus [COMMAND] [OPTIONS]
The ibus command serves as a client to control and query the ibus-daemon. Common uses include starting, stopping, restarting the daemon, listing available input engines, switching engines, or launching the graphical configuration tool.
Examples:
ibus start
ibus exit --force
ibus list-engines
ibus engine pinyin
ibus setup
PARAMETERS
-h, --help
Displays a help message with available commands and options for the ibus client.
-v, --version
Displays the version information of the ibus client.
start
Starts the ibus-daemon process if it's not already running. This command is often handled automatically by desktop environments upon login.
exit
Terminates the running ibus-daemon process. Can be combined with --force for immediate termination.
--force
Used as an option for the exit command (e.g., ibus exit --force) to force the ibus-daemon to terminate immediately, bypassing graceful shutdown procedures.
restart
Restarts the ibus-daemon. This is useful for applying configuration changes, reloading input engines, or resolving minor issues without a full logout/login.
list-engines
Lists all currently installed and available input method engines on the system, showing their IDs and descriptions.
engine [ENGINE_ID]
Sets the current input method engine to the specified ENGINE_ID. For example, ibus engine pinyin would select the Pinyin input method if available.
setup
Launches the graphical configuration tool for ibus, allowing users to add/remove input methods, configure hotkeys, manage preferences, and set up various input behaviors.
panel
Launches or brings to focus the ibus language panel, which typically appears as a system tray icon or a floating window for quick input method switching and status display.
address
Prints the D-Bus address of the running ibus-daemon. This information can be useful for debugging or for other applications to programmatically interact with ibus.
DESCRIPTION
ibus (Intelligent Input Bus) is an open-source input method framework for Linux and Unix-like operating systems. It provides a flexible and powerful architecture for users to input various characters, especially those from East Asian languages (like Chinese, Japanese, Korean) and other complex scripts. ibus acts as a middle-layer between your applications and the actual input method engines (IMEs), allowing seamless switching between different input methods such as Pinyin, Cangjie, Hangul, or diverse keyboard layouts.
It was developed to overcome the limitations of older input method frameworks like SCIM and IIIMF, offering improved stability, better integration with modern desktop environments (like GNOME and KDE), and a more robust D-Bus-based communication protocol. ibus ensures that applications communicate with the input method effectively, providing features like candidate word lists, dynamic word suggestions, and character conversion. It is widely adopted across major Linux distributions as the default input method system, making it a crucial component for internationalized computing. Its modular design allows developers to create new input engines easily, further extending its capabilities.
CAVEATS
ibus primarily integrates with desktop environments based on X11 or Wayland, such as GNOME, KDE, XFCE, etc. Proper functioning requires the correct setting of environment variables like GTK_IM_MODULE, QT_IM_MODULE, and XMODIFIERS, which are usually managed by the desktop session.
Conflicts can arise if multiple input method frameworks (e.g., ibus and fcitx) are simultaneously configured to run in the same user session, leading to unpredictable behavior, input issues, or inconsistent language panel displays.
ENVIRONMENT VARIABLES
For applications to correctly use ibus, specific environment variables must be set in the user's session. These are typically configured by the desktop environment or login manager, but manual setup might be needed in minimalist setups or for debugging:
- GTK_IM_MODULE=ibus: Specifies IBus as the input method for GTK-based applications.
- QT_IM_MODULE=ibus: Specifies IBus as the input method for Qt-based applications.
- XMODIFIERS=@im=ibus: A general X input method specification, crucial for X Window System applications.
D-BUS INTEGRATION
ibus heavily relies on the D-Bus message bus system for communication between its components. The ibus-daemon acts as a central hub, facilitating communication with various input method engines and client applications (e.g., web browsers, text editors). This modern architecture provides a robust and flexible way to manage input events, linguistic processing, and interaction across the entire system.
HISTORY
ibus was initiated by Red Hat in 2007, aiming to provide a modern, robust, and extensible input method framework for Unix-like operating systems. It was designed as a successor to older, less maintainable frameworks like SCIM (Smart Common Input Method) and IIIMF (Internet Intranet Input Method Framework).
Leveraging D-Bus for inter-process communication, ibus offered improved stability, better integration with modern desktop environments, and a more modular design that made it easier for developers to create new input engines. Its development led to its adoption as the default input method system in many major Linux distributions, including Fedora and Ubuntu, significantly enhancing internationalization capabilities for users worldwide.