Ubuntu22.04のIME設定
Ubuntuは国際化の際にアジア等を軽視すること甚しく、全く要領を得ないGNOMEのキーボード設定と入力設定が一体化したインタフェースを利用してしまったことでとても使いにくい設定GUIがあるがその中身について。
GUI (その1)
Settings -> Region & Language -> Manage Installed Languages 内になぜか存在するKeyboard input method systemでIMEをドロップダウンから設定できる。
GUI(その2)
im-configコマンドがウィザード形式でIME設定できる。
設定ファイル
GUIその1も実態はim-configコマンドを利用しており、設定は~/.xinputrc
の書き換えによって行われる。
起動時の動作
Ubuntuは基本的にWaylandに移行しており、一部の未対応なアプリケーションがXWaylandによってXインタフェースをエミュレーションされて動くのみである。IMEの設定も本来ならばxinputrcに書くだけでは無視されるが、Ubuntu 22.04時点では移行期ということで複雑に動いている。
まず、システム全体のprofileである/etc/profile
から/etc/profile.d/im-config_wayland.sh
が呼ばれる。
/etc/profile.d/im-config_wayland.sh
は本来ならばXセッションの起動時に順に呼ばれる設定ファイルのうち/etc/X11/Xsession.d/70im-config_launch
のみ呼ぶ。
/etc/X11/Xsession.d/70im-config_launch
はIM_CONFIG_PHASEを1にし、/usr/share/im-config/xinputrc.common
を呼び、その後.xinputrc
を呼ぶ。
すると.xinputrc
にGUIツールで書かれた通りに/usr/share/im-config/xinputrc.common
で定義されているbash関数run_im
が引数の通り/usr/share/im-config/data/*.rc
を呼びだす (ただし、9がmissing等正常ではないものに予約されているので0-8で始まる2桁の番号のファイルのみ)。ここではGTK_IM_MODULE等の環境変数が設定されるのみである。
次に、大部分の起動が終わった後XDG Autostart specに従って、起動時に/etc/xdg/autostart/im-launch.desktop
が呼ばれる。ここの呼ばれ方はUbuntu22.04時点のGNOME shellではまだsystemdを利用してはいないようだが、おそらく将来的には/usr/lib/systemd/user/xdg-desktop-autostart.target
を介して呼ぶはず。今は単にGNOME shellがXDG specのautostart directoryを探査して全部起動しているようである。
ここでIM_CONFIG_PHASEを2として.xinputrc
を呼び、前記の通り/usr/share/im-config/data/*.rc
が呼ばれ、ここでようやくIMデーモンが起動される。