🦁

WaylandとGNOME環境でfcitx5 + mozcがサードパーティアプリで機能しない問題を解決する方法

2023/05/03に公開

環境

  • OS: Linux 6.2.13-arch1-1 x86_64 GNU/Linux
    • uname -a
  • Desktop Environment: GNOME 43.5(Wayland)
    • GNOME: gnome-shell --version
    • Windowing System: 以下のいずれかの方法から確認
      • 環境変数を確認: echo $XDG_SESSION_TYPE
      • プロセスリストから確認: ps aux | grep -i wayland

この問題は、WaylandとGNOMEを組み合わせて使用しているLinuxディストリビューションで発生する可能性がある。


1. 問題

Arch LinuxのGNOME環境において、fcitx5 + mozcを使った日本語入力が機能しない問題が起きていた。

2. 原因

  • 以下の環境変数がサードパーティアプリを起動する際に反映されていなかった

    export GTK_IM_MODULE=fcitx
    export QT_IM_MODULE=fcitx
    export XMODIFIERS="@im=fcitx"
    
  • WaylandはXorgとは異なるディスプレイサーバープロトコルを使用しているため、Xorgで使用される.xprofile.xinitrc等で宣言していた環境変数やアプリケーションの設定が反映されていなかった

3. 解決法

  • 解決法の一つとして、GNOME環境でサポートされている~/.config/environment.dディレクトリに環境変数を設定するファイルを作成した
  • これにより、GNOMEセッション起動時に環境変数が設定され、アプリケーションの設定が反映させた

4. 解決法の詳細

具体的な手順は以下の通り:

  1. ~/.config/environment.d/<your_profile>.confを作成
  2. .xprofileにあった環境変数設定やアプリケーション設定を、KEY=VALUE形式で<your_profile>.confファイルに記述
  • 例えば、~/.xprofileに以下のような内容がある場合:
    export GTK_IM_MODULE=fcitx
    export QT_IM_MODULE=fcitx
    export XMODIFIERS="@im=fcitx"
    
  • <your_profile>.confには以下のように記述:
    GTK_IM_MODULE=fcitx
    QT_IM_MODULE=fcitx
    XMODIFIERS="@im=fcitx"
    

これで、次回のGNOMEセッション開始時に、指定した環境変数が設定され、アプリケーションの設定が反映されるようになった。

5. ダメだったこと

  • .bashrc, .bash_profileに環境変数を指定
    • bashから起動したアプリケーションではfcitx5による入力ができるようになった
    • それ以外の手段で起動したアプリケーションでは適用されなかった
  • ~/.config/autostart/<your_profile>.desktopファイルを作成
    • .desktopファイルのExecに環境変数を宣言するbashコマンドを記述
  • systemdユーザーサービスを登録
    • systemctl --user enable <your_profile>.service
    • <your_profile>.serviceに環境変数を宣言するシェルスクリプトを絶対パスで指定

6. 関連

GitHubで編集を提案

Discussion