Ubuntu 24.04LTS上のEmacs 29でインプットメソッドの入力を受け付けない設定

前提

私が試した環境は以下の通り

  • Windows Subsystem for Linux version 2 (WSL2) on Windows 11 24H2
  • Ubuntu 24.04 LTS
cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
  • インプットメソッド: FCITX5
  • 漢字変換サーバ: Mozc

どういう状況の話なのか

結論からいうと、Emacs上で「半角/全角キー」を押してもインプットメソッドが反応しないようにしたい。

Ubuntu 24.04LTSではGUIを動かすのにX Server SystemよりもWaylandの使用が推奨されている。Emacsはバージョン29から、これまでのX Server SystemのアプリケーションとしてのemacsとWaylandネイティブのemacs(pgtk)の2種類が使える。

また、Emacsは漢字変換をするときにインプットメソッド(今回はFCITX5)を利用することもできるし、Emacsが直接漢字変換サーバ(今回はMozc)を利用することもできる。

私は Emacsが直接漢字変換サーバを利用できる方が好みなので、そちらを利用している。このとき、Emacsでインプットメソッドが呼び出されてしまう、具体的には「半角/全角キー」を押したときに直接入力と日本語入力モードに切り替わるのが困る。

このため、Emacs上で「半角/全角キー」を押してもインプットメソッドが反応しないようにしたい。

emacs をインストールしている場合

以下のコマンドでemacsをインストールしている場合は、Emacs.useXIM: false という値をXサーバに引き渡してやる必要がある。

% sudo apt install -y emacs

従来は ~/.Xresources に「Emacs.useXIM: false」を記載しておけばよかったが、Debian Wiki: Wayland "Xresources won't load"によると最近は.Xresourcesの自動読み込みはしないようになったとのこと。

このため、ログイン時に毎回読み込ませる必要がある。

まず、設定ファイルを作成する。

% echo "Emacs.useXIM: false" > ~/.Xresources
% cat ~/.Xresources  (ちゃんと書き込めているか確認する)

続いて、起動時に設定ファイルを読み込ませる。~/.profileの末尾にコマンドを追加する。

% touch ~/.profile
% echo "xrdb -load  ~/.Xresources" >> ~/.profile

Ubuntuを再起動し、以下のコマンドで"Emacs.useXIM: false"が設定されていることを確認する。

% xrdb -query
Emacs.useXIM: false

emacsを起動し、emacs上で半角/全角キーを押してもFCITX5が動作せず、emacsのミニバッファに「 is undefined」と表示されることを確認する。

emacs-pgtkををインストールしている場合

以下のコマンドでemacsをインストールしている場合は、init.elに設定を追記する(参考:WSL2 + Emacs pgtk + mozc.el で日本語入力する - インゲージ開発者ブログ

% sudo apt install -y emacs-pgtk

お好きなエディタで ~/.emacs.d/init.el を開き、以下の行を追加する。

(setq pgtk-use-im-context-on-new-connection nil)

emacsを起動し、emacs上で半角/全角キーを押してもFCITX5が動作せず、emacsのミニバッファに「 is undefined」と表示されることを確認する。