一応ブログとしてまとめておく
環境
- Gentoo Linux (Kernel 5.10.22)
- init: systemd (247.2-r4)
OpenRCの方は多分関係ない - DM: LightDM (1.30.0-r2)
.xprofile
を読むことに関係する(多分それだけ) - DE: i3-gaps (4.18.2)
たぶん結果的にはあんまり関係ない
結論
.xprofile
でdbusを起動するな- USEフラグ
user-sessions
を有効にしろ
どっちかだけだとダメだったので多分両方
以下は曖昧な記憶を辿って(状況再現をサボりつつ)書いただけなので参考にならんかも 文章としても崩れてるし
経緯
Fcitx使って日本語を入力したいのでとりあえずWikiを見る
https://wiki.gentoo.org/wiki/Fcitx/ja
app-i18n/fcitx
をemergeする
ついでにapp-i18n/fcitx-configtool
とかapp-i18n/fcitx-skk
(skkユーザなので)とか入れる(LightDMなので)
.xprofile
に以下を記載
USEフラグは特にいじっていない=デフォルトでついてるgtk3
ありでビルドしてるのでxim
ではなくfcitx
export XMODIFIERS="@im=fcitx" export QT_IM_MODULE=fcitx export GTK_IM_MODULE=fcitx
-
Fcitx が起動する前に D-Bus セッションバスを起動することをお勧めします。これらを X のスタートアップファイル (~/.xprofile または ~/.xinitrc) の最初に追加してください: (gentoo wikiより)
なるほど(脳死 これ多分OpenRCの人だけなんですよね) 追加する
eval "$(dbus-launch --sh-syntax --exit-with-session)"
動かんやんけ
という感じだった
fcitx-diagnose
すると「正しくfcitxに接続できません。」とか出る
fcitx
コマンドを直接入力してみるとdbusがどうのこうの言っている
Connection Error (Failed to connect to socket /tmp/dbus-XXXXXXXXXX: Connection refused)
とかも出てた気がする
これでggるとWSLの記事が大量に出てそうじゃねえよとなったり
私自身dbusに全然詳しくなかったしあんまり勉強する気にもなれなかったので適当に調べまくっているとArchのwikiにこんな記述が
プログラムによっては D-Bus ユーザーメッセージバスを必要とすることがあります。D-Bus は伝統的に dbus-launch によってデスクトップ環境の起動時に実行されていましたが、バージョン226から、systemd がユーザーのメッセージバスを管理するようになりました。 https://wiki.archlinux.jp/index.php/Systemd/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC#D-Bus
そこで.xprofileからdbus-launchを消してみる
ついでにGentoo Wikiのdbusのページ見てるとuser-sessions
とかいうそれっぽい(Connection refusedと関係がありそうな)USEフラグがあることに気付く そこでそいつを加えてリビルドしてみる
→動いた 一気にやったのでどっちが原因かは明確にはわからなかったけど後で片方ずつやってみたところどちらかが欠けるとダメだったので両方必要だったらしい
ちなみにこれでfcitx5もちゃんと動いた
おまけ
fcitx-skkでAlacritty使ってるとBackspace押したときに文字が入力できなくなります。私の環境ではそうなりました。これはEscとかCtrlとかShiftを(単)押すと戻ります。
UXTermとかだと問題ないし、直接入力にすると起きなくなるので、Fcitx-skk+Alacrittyの複合問題っぽい?
原因は不明ですが調査するのが面倒だったのでTilixにしました。ebuildそのうち書くかも