x11上のmltermでマウスアウト時に文字入力ができない

たくさんの環境で動作する軽量で多機能なターミナルエミュレーターのmlterm(Multi Lingual TERMinal)を近年メインに利用しています．

mlterm

最近の問題としてmlterm のウィンドウからマウスカーソルが外れるとmlterm がアクティブウィンドウでも文字が入力できません．文字が入力できない→カーソルをmlterm に持ってくるというのが地味に面倒です．
今回これを調べて解決しました．

まず検索して以下の記事を見つけました．

解決方法は、

~/.mlterm/main

に

input_method=ibus

を追加すること。

— mlterm でマウスカーソルが外れると文字入力ができなくなる症状: hama の record of life
‘

直接マウスアウトのときの設定ではないのですが，これを真似すると確かにマウスアウトしても文字が入力できます．

~/.mlterm/main に以下の設定を追加

input_method = fcitx

しかし，今度は日本語が入力できません．
mlterm のドキュメントを見ても設定は大丈夫そう．

doc/ja/README.ja より

o input_method (*default*) (#)
使用するインプットメソッド
default は、x11 版の mlterm では xim、それ以外は、システムが提供する標準
のインプットメソッドが使用されます。
フォーマットは以下のようになります。

[input method];[option1]:[option2]

[input method] にインプットメソッド(xim/uim/m17nlib/scim/kbd/skk/wnn/
canna/iiimf)を指定し、必要であれば ":" で区切ってオプションを列挙します。

各インプットメソッドのオプションは以下の通りです。

xim の場合: xim:[xim server]:[locale]
[xim server] で XIM サーバー名(kinput2, Ami, xcin など)を指定します。
指定しなかった場合は、環境変数 XMODIFIERS で指定した XIM サーバーが
使用されます。[locale] には XIM サーバーのローケールを指定します。指定し
なかった場合はシステムのローケールが使用されます。use_xim オプションで
xim を無効にした場合、xim を指定しても無視されます。

uim の場合:
uim:[conversion engine]
[conversion engine] に変換エンジン(anthy, prime, hangul2など)を指定しま
す。指定しなかった場合は uim のデフォルト変換エンジンが使用されます。

m17nlib の場合:
m17nlib:[language id]:[input method]
[language id] には ISO-639 に従って言語(ar, zh, ja など)を指定します。
指定しなかった場合はシステムのローケールから取得した言語が使われます
[input_method] で使用するインプットメソッド(anthy, py など)を指定します
指定されなかった場合は [language id] のデフォルトインプットメソッドが使
用されます。m17nlib を指定した時は key ファイルで IM_HOTKEY を指定して
ください。

scim の場合:
scim (オプション無し)

ibus の場合：
ibus:[conversion engine]
[conversion engine] に変換エンジン(anthy, prime, hangul2など)を指定しま
す。指定しなかった場合は ibus のデフォルト変換エンジンが使用されます。
(ibusを使用する際の注意点)
ibus の preferences 画面からキーボードショートカットを設定する場合、モデ
ィファイアの Release にはチェックを付けないでください。

fcitx の場合:
fcitx (オプション無し)

wnn の場合:
wnn:[server]
[server] には、接続するかな漢字変換サーバを指定します。
なお、JSERVER 環境変数により指定することも可能です。
また、WNNENVRC 環境変数により wnnenvrc ファイルの場所を指定することができます。

canna の場合:
canna (オプション無し)

skk の場合:
skk:dict=[dictionary](:utf8),sskey=[sticky shift key]
[dictionary] に、接続する辞書サーバ(skkserv)の "ホスト名:ポート番号" 又
は、辞書ファイルのパスを指定します。辞書が UTF-8 の場合には、末尾に
:utf8 を付けてください。
SKK_DICTIONARY 環境変数により指定することも可能です。
指定しない場合は、localhost の辞書サーバに接続します。
なお、上記とは別に、~/.mlterm/skk-jisyo をローカルの辞書として使用します。

[sticky shift key] には、sticky shift key として使用するキーを指定してく
ださい。印刷可能な文字のキーを指定する場合はその文字(\x3bのように16進数
で指定することも可)を、それ以外の場合は <X11/keysymdef.h> に定義されたシ
ンボル(XK_を除く)を指定してください。
SKK_STICKY_SHIFT_KEY 環境変数により指定することも可能です。

kbd の場合:
kbd(:hide):[lang]
US キーボードで入力された文字を、指定したキーボードレイアウトの文字に変
換します。
:hide を指定した場合は、ステータスウィンドウを表示しません。
[lang]には、次のいずれかを指定することができます。
arabic, hebrew, de, fr, es, pt, jp106, isciixxx
なお、[lang]を省略した場合、ISCII モードの時は ISCII 配列、それ以外では
ローケールにより判定します。
kbd を指定した時は key ファイルで IM_HOTKEY を指定してください。

iiimf の場合:
iiimf:[language id]:[language engine]
[language id] には RFC1766 に従って言語(ar, zh_CN, ja など)を指定しま
す。指定されなかった場合はシステムのローケールから取得した言語が使われ
ます。[language engine] では使用する LE (CannaLE, newpy など)を指定しま
す。指定されなかった場合は [language id] のデフォルト LE が使用されま
す。
なお、HTT_SERVER_ADDRESS 環境変数により、接続するサーバのアドレス(Unix
Domain Socket の場合はファイルパス)を指定できます。
また、HTT_SHOW_STATUS_WINDOW=trueを指定することにより、ステータス表示用の
ウィンドウを表示します。
HTT_AUX_BASE_DIR 環境変数により、aux モジュールのあるパスを指定するこ
とができます(デフォルトは/usr/lib/iiim/le)。

mlterm のログを見るとfcitx が読み込めていません．

~/.mlterm/msg.log

Jan 21 19:22:50[3188254] ERROR(Resource temporarily unavailable): fcitx: Could not load.

この端末にはmlterm のインプットメソッドプラグインの mlterm-im-fcitx パッケージが導入されていませんでした．ibus は入っていたのでfcitx 切替時に入れていなかったのですね．そしてmlterm plugin を使わず日本語入力をしていたと．
mlterm-im-fcitx を導入してmlterm を起動し直すことでマウスアウト時も文字入力できるし日本語入力もできるようになりました．

$ apt-cache search mlterm input method
mlterm-im-fcitx - MultiLingual TERMinal, Flexible Input Method plugin
mlterm-im-ibus - MultiLingual TERMinal, IBus input method plugin
mlterm-im-m17nlib - MultiLingual TERMinal, m17nlib input method plugin
mlterm-im-scim - MultiLingual TERMinal, scim input method plugin
mlterm-im-skk - MultiLingual TERMinal, SKK input method plugin
mlterm-im-uim - MultiLingual TERMinal, uim input method plugin
$ sudo apt install mlterm-im-fcitx

環境

$ dpkg-query -W mlterm*
mlterm 3.9.4-3
mlterm-common:amd64 3.9.4-3
mlterm-im-fcitx:amd64 3.9.4-3
mlterm-im-ibus 3.9.4-3
mlterm-im-m17nlib
mlterm-im-scim
mlterm-im-uim
mlterm-tiny
mlterm-tools 3.9.4-3
$ echo "${XDG_SESSION_TYPE}"
x11
$ lsb_release -dr
Description: Debian GNU/Linux forky/sid
Release: n/a
$ arch
x86_64

SEE ALSO

mlterm のインプットメソッドプラグインについて #端末エミュレータ – Qiita

toot

matoken:susie: (@matoken@snac.matoken.org)