旅とプログラミングを少々

趣味に関する記録などをします。おそらくプログラミング入門に関しての内容を連ねていきます。

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を呼ぶ。

すると.xinputrcGUIツールで書かれた通りに/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デーモンが起動される。