★antiX23での日本語入力設定(決定版)★

2025/11/03
antiXでの鬼門といわれる、日本語入力。(日本語表示は全く問題ありません)
私としては、かなり突っ込んで調べたので、これで少なくとも バージョン23.2 においては大丈夫だと思います。
知ってしまえば、設定は簡単です。

runitのデスクトップ12種で動作することを確認しています。
よくよく考えれば、IceWM,JWM,Fluxboxに分岐するまえの、~/.desktop-session で設定しているので、全部に効くはずですね。

※2025/11時点の情報です。

理屈は不要、手順が欲しいという方はこちら

深謝
antix linuxで中国語入力と日本語入力を切り替えできるようにする
VirtualBoxにAntix入れて日本語環境用に設定する俺用メモ(2)
antiX 19 〜超軽量・軽快 ・・日本語化を含む設定の難易度が高いantiXがDebian 10.1 Buster baseとなってリニューアル!・・インストール・初期設定・日本語化を極める!
Windows 10サポート終了に備える:antiXへの移行と安全対策ガイド
antiX-19 で日本語入力をする設定にチャレンジ【完全版】

antiX runit 日本語IMEをスムーズに導入しましょう

技術的要点

  1. 日本語入力をしようとする各アプリケーションは、環境変数でメソッド名(ibus,Fcitx5等)を取得し、それに見合ったツールキット(プラグイン)を自分の中でロードし、ibus/Fcitxと通信する体制を整えます。
  2. 物理キーが押下され、Xサーバーがそれを受け取って、アプリ(GTK/QT)に渡します。
  3. アプリ*1はD-Busアドレス に接続し、D-Busを通してIMサーバ(ibus/Fcitxデーモン)と通信します(双方向)。各テキスト入力欄(widget)ごとに「Input Context(入力コンテキスト)」を作って通信します。
  4. D-Busは、プロセス間通信一般に使われるソケットのようなもので、高速な通信経路ですが、そのD-Busセッションアドレスをお互いが知って、同じセッションアドレスを通して通信する必要があり、そのセッションアドレスを知らせるための環境変数が、DBUS_SESSION_BUS_ADDRESSです。
  5. 日本語入力に関しては、ibus/fcitxデーモンと、アプリ(GTK/Fcitx)が同じD-Busアドレスを知る必要がありますが、自動的に同じアドレスを知るのではなく、設定によってうまく知らせる必要があります。
  6. DBUS_SESSION_BUS_ADDRESSをシステム内で一意に正しく設定する必要がありますが、antiXの場合、WM(window Manager)とFM(File Manager) が枝分かれして起動していくので、うまく設定しないとD-bus経路(アドレス)を2つ作ってしまい、WMとFMが、異なるD-Busセッションアドレスを扱ってしまうこととや、D-Bus経路が一本であってもDBUS_SESSION_BUS_ADDRESSが、WMとFMとで異なるという不整合が起きる場合があります。
  7. 枝分かれ不整合がある場合、アプリは、枝分かれしたどちらかのプロセスから起動されたかによって、把握するDBUS_SESSION_BUS_ADDRESSが異なることとなります。WMから起動された場合(例:タスクバーからの起動)と、FMから起動された場合(例:デスクトップアイコンからの起動)で、異なるDBUS_SESSION_BUS_ADDRESSがアプリに伝わることとなるからです。
  8. アプリが把握しているDBUS_SESSION_BUS_ADDRESSとIMデーモン(ibus/fcitx)が一致しているほうは通信が成功しますが、食い違っているほうは通信が失敗し*2、日本語入力ができない状態となってしまいます。
  9. 確実に効く設定は「~/.desktop-session/desktop-session.conf(4つの環境変数設定)」+「~/.desktop-session/startup(IMデーモン起動)」の組み合わせです。これでWMとFile Managerrが枝分かれする前にD-BUSデーモンを稼働させてDBUS_SESSION_BUS_ADDRESSを設定し、枝分かれ後にD-Busデーモンが再度起動されることを抑止することで、システム全体で一意のDBUS_SESSION_BUS_ADDRESSを共有することが可能となります*3
  10. antiX(desktop-session)では、Debian標準の im-config 流儀(~/.xinputrc と /etc/X11/Xsession.d/*)の環境変数が使えません。なぜなら仕組み上、必要な環境変数がGUI セッション「全体へ一意に」到達しないからです。
よって概念的には「ENV(環境変数) は desktop-session.confで設定、IMデーモン起動は startup」に一本化するのが最短・最安定の解となります。
IM方式(環境変数GTK_IM_MODULE/QT_IM_MODULE)と通信経路アドレス(環境変数DBUS_SESSION_BUS_ADDRESS)を適切にアプリに伝えるために、最低3つの環境変数を適切にセットする必要があるわけです。

D-Busアドレスでの通信ができない場合、そのままでは日本語入力ができないこととなりますが、その場合にはアプリ側(GTK/QT)からフォールバックし、全く別の古い方式(=XIM方式)で日本語入力することを試みます。このときの(バックアップの)方式を設定するのが、環境変数XMODIFIERSです。例えば、XMODIFIERS=@im=ibus と設定しておくと、D-bus通信が失敗したとき、D-busとは異なる古い経路を使って通信することができます。ただし、これは古い方式であり、①アプリ側でXIM方式に対応していなければフォールバックしないし(最終的に失敗)、②フォールバックしたとしても、アプリ内のインラインでの表示ができず、ポップアップボックスの中で入力・変換したうえで一気にアプリに伝える形式となるので、人間にとってはストレスのある入力作業となります。

上記から、現代で使う高速道路(D-Bus)を使うための3つの環境変数、そして古い旧道を通る方式にフォールバックするための環境変数の合計4つを適切に設定する必要あり、そのうちのひとつ(DBUS_SESSION_BUS_ADDRESS)はD-Busデーモンを先に動かさないと決まらないので、設定と同時にデーモンを稼働させる(厳密にはデーモン稼働後にすぐに環境変数が設定される)こととなります。
  • xterm (旧道しか知らない)
GTK_IM_MODULEは見ない。XMODIFIERS(旧道)のみを見る。
結果: ポップアップ入力(XIM)が成功する。
  • leafpad (古いGTK 2 / フォールバックする)
GTK_IM_MODULE=ibusを見る。D-Bus接続(高速道路)に失敗すると...
フォールバックする → XMODIFIERS(旧道)を見に行く。
結果: ポップアップ入力(XIM)が成功する。
  • Chrome (モダンなGTK 3/4 / フォールバックしない)
GTK_IM_MODULE=ibusを見る。D-Bus接続(高速道路)に失敗すると...
フォールバックしない(諦める) → XMODIFIERS(旧道)を無視する。
結果: 日本語入力が完全に失敗し、英字入力のみになる。


そしてもちろん、ibus/fctxデーモンも稼働させおく必要がありますが、これは、configファイルではなく、startupで起動させます。

ibus-daemon と d-bus-daemon の前後関係は、先にd-bus-daemonが起動することで確実にibus-daemonに環境変数DBUS_SESSION_BUS_ADDRESS)を渡すことができますが、ibus-daemonが、d-bus-daemonより先に起動した場合でもibus-daemonの仕様として、d-bus-daemon起動後にXウィンドウから自力で、d-busアドレスを拾ってくる仕組みがあるので、ibus-daemonが先起動でも日本語入力はできるということです。しかし、その仕組みに頼るのは危険なので、やはりibus-daemonは、d-bus-daemonの後に起動するようにしておいたほうがトラブルは少ないと思われます。

入力メソッドとアプリ側の受け側仕様

入力メソッドには、ibus(堅牢・質実剛健型)、Fcitx5(柔軟、使い勝手を変更できる)の2種類があります。ibusはRedhat主導で開発され、Fcitx5は中国人コミュニティ中心に開発されたそうです。

一方で、アプリ側仕様も、GTK方式とQT方式の種類があります。アプリによって異なります。

アプリ側GTK/QTとibus/Fctxデーモンが通信するために、D-Busデーモンが作る経路(DBUS_SESSION_BUS_ADDRESS)を使う、ということとなります。

日本語変換エンジン

ibus/Fctx5は、Mozcという変換モジュールと通信し、日本語への変換は、Mozcが担当します。
ibus/Fcitx5は、GTK/QTからキー押下情報(元々はXサーバーから受け取ったもの)を取得して、Mozcに渡し、Mozcが変換したものを受け取って、GTK/QT(アプリ)に返すこととなります。

私は、ibusの挙動が好きなので、ibusで使っています。

windowsだと、MSIMEとかATOKとかのIMEがありますが、おおざっぱにいえて、windowsIME = linux(入力メソッド(ibus,Fcitx5等) + 日本語変換(Mocz等)) という関係になります。
(QTかGTKかは、アプリで隠蔽されています)
入力メソッドと変換エンジンについてはこちらがわかりやすい

*1 : 厳密には、D-Busに接続する主体はGeanyやChromeといった「アプリ」そのものではなく、アプリが起動時に環境変数(GTK_IM_MODULE)を読み、GTK(UI部品)がim-ibus.soのようなIMモジュール(プラグイン)」をロードします。D-Busに接続し、ibus-daemonと直接会話(プロセス間通信)するのは、この「IMモジュール」です。

*2 : システム的には応答がないだけなので失敗とは思っていない

*3 : 個人的感想としては、デフォルト設定のantiXでのD-Busデーモン起動タイミングが遅いと思う。またOSにプレインストールされているfirefoxやleafpadは、DBUS_SESSION_BUS_ADDRESSによってD-Busアドレスが伝わらない場合、自分でXサーバーのプロパティから「強引に」D-Busアドレスを参照するようです。

環境

項目内容
ディストリantiX23 Linux(runit)
対象IBus + Mozc / Fcitx5 + Mozc
antiXコントロールセンタから設定すれば、より簡単ですが、きちんと?処理できるよう、あえてシェルからの導入としています。

概要

下記の2つのファイルに、日本語設定をします。
設定ファイル設定項目
~/.desktop-sesshion/desktop-session.conf環境変数の設定+Dbus設定
~/.desktop-sesshion/startupIMデーモン起動の設定

手順

パッケージ導入 ibus,fcitx5の両方をインストールしておきましょう。

sudo apt update
sudo apt install -y ibus ibus-mozc ibus-gtk ibus-gtk3 ibus-gtk4 fonts-noto-cjk
sudo apt install -y fcitx5 fcitx5-mozc fcitx5-frontend-gtk3 fcitx5-frontend-qt5 fcitx5-config-qt
ここから先は、設定ファイル、startupファイルを書換、追記します。
ファイルの変更方法は様々ありますが、antiXコントロールセンタ→(左メニュー)セッション→ユーザのデスクトップセッション、からファイルを選択するのが楽だと思います。
※ここで間違ってIceWM設定の編集、とかに入らないように。ファイル名が同じでもディレクトリ名が異なれば、全く違う設定箇所となります。ここでは、デスクトップ全体設定(初期の設定)変更となります。

環境変数(*ここがキモ*) — ~/.desktop-session/desktop-session.conf

desktop-session.conf の「ファイルの一番最後」に下記の追記をします。
.xsissionとか他のディストリビューションで使われる設定ファイルではうまくいきませんのでご注意ください。公式もこのファイルで設定するように言っています。

ここではibusで設定しますが、Fcitx5としたい方は入れ替えてください。

~/.desktop-session/desktop-session.conf
# ibus をローカル変数に代入
im_module="ibus"
#im_module="fcitx5"

# 環境変数に代入(展開)
export GTK_IM_MODULE=$im_module
export QT_IM_MODULE=$im_module
export XMODIFIERS=@im=$im_module

# WMでの Dbus-deamon起動を禁止(ここでDbus-deamonを起動させ、環境変数も設定)
DBUS_SESSION_LAUNCH="false"

#下記の実行で、環境変数 DBUS_SESSION_BUS_ADDRESS がセットされる
eval $(dbus-launch --autolaunch $(cat /var/lib/dbus/machine-id) --sh-syntax --exit-with-session)
DBUS_SESSION_LAUNCH="false" については80行目付近に、true で先行代入されているのでそれをオーバーライドです。80行目付近をfalseに書き換えることでも構いません。
このDBUS_SESSION_LAUNCHをfalseにしておかないと、非オープンソース版Chromeなどでトラブルが発生します。(これに気がつくのに時間がかかりました)

IMデーモン起動 — ~/.desktop-session/startup

startupファイルで、IMのdeamonを起動、常駐させます。以下をファイル末尾に追加。
Fcitx5を選択する場合は、ibusをコメントアウトして、fcitx5の # を外してください。

## すでに動いていれば何もしない(-d)、見えない(-x)、再接続(-r)
## ibus か fcitx5かどちらかを選択
ibus-daemon -drx
#fcitx5 -d &

再ログイン後の検証

printenv | egrep 'GTK_IM_MODULE|QT_IM_MODULE|XMODIFIERS'
ibus engine   # ← mozc-jp が返ればOK

構造の要点(im-config が効かない理由の整理)

/etc/X11/Xsession.d/70im-config_launch は Xsession フェーズで ~/.xinputrc を読み込み、XMODIFIERS/GTK_IM_MODULE/QT_IM_MODULE などを export する。
・ しかし antiX の desktop-session は**独自セッション起動**のため、標準 Xsession の export が IceWM/アプリへ届かないケースがある。
・ また antiX は軽量化思想により「IMデーモン自動起動」を行わない。startup にて明示起動が必要。
・ よって、**desktop-session.conf(ENV)+ startup(デーモン起動)** を正として運用する。

ありがちな失敗と対処

症状主因対処
トレイに「あ/A」やキーボードが出るが日本語へ切替できないENVが空(GTK_IM_MODULE 等が未設定)desktop-session.conf の3変数を export 付きで定義→再ログイン
im-configでFcitxを選んだのに入力不可ENV=fcitx5 なのに startup が ibus-daemon 起動startup を fcitx5 -d & に統一
Qt アプリだけ入力不可Qtフロントエンド不足IBusなら ibus-qt、Fcitx5なら fcitx5-frontend-qt5 を導入
文字が豆腐CJKフォント不足fonts-noto-cjk を導入

検証・診断コマンド

環境変数がGUIへ届いているか
printenv | egrep 'GTK_IM_MODULE|QT_IM_MODULE|XMODIFIERS'
現在のエンジン確認
ibus engine        # IBus: mozc-jp が理想
fcitx5-remote -n   # Fcitx5: mozc 等の名前が返る
プロセスの実在
pgrep -a ibus
pgrep -a fcitx5
pgrep -a mozc
WMプロセスにENVが載っているか(IceWM例)
grep -azE 'IM_MODULE|XMODIFIERS' /proc/$(pgrep icewm)/environ | tr '\0' '\n'

補足メモ

・デーモン起動 `&` を忘れるとログイン処理が停止・遅延する。必ず末尾に付ける。
・ENV の多重定義やデーモン二重起動は不具合の温床。**「ENV は desktop-session.conf、起動は startup」**に一本化

付録:パッケージ一覧(例)

IBus系
ibus ibus-mozc ibus-gtk ibus-gtk3 ibus-gtk4 ibus-qt fonts-noto-cjk
Fcitx5系
fcitx5 fcitx5-mozc fcitx5-frontend-gtk3 fcitx5-frontend-qt5 fcitx5-config-qt fonts-noto-cjk