Wayland への対応

問題の前提

Ubuntu では 22.04 LTS からディスプレイ・サーバーのデフォルトが X.org から Wayland に変更されたが、大きな環境変化なので当然ながら動作しないアプリが幾つもあった

24.04 LST になって多くのアプリが問題なく動作するようになったが、それでもデフォルト設定では動作しないアプリが幾つか残っている

逆にデフォルトのままでは上手く動作しないが、使い方次第で対処可能な方法もその情報と共に出てきているので、自分が使っているアプリについては覚書の意味も込めて書き込めておく

問題の対処方法の概要

次の 2 点の対処が必要

  • そのままでは使えない場合はそれ用の対処
  • Wayland はその仕組み上ウィンドウが隠れているとショートカットを受け付けてくれないので、アプリによっては Gnome などのデスクトップ環境全体のショートカットの指定する

私はデスクトップ環境として、Ubuntu 標準の Gnome をつかているので、ここでもその場合の対処方法を記載する

対応・代価可能なアプリ

CopyQ

CopyQ はクリップボード・マネジャー、クリップボードの履歴を管理するアプリ

クリップボードの履歴が取れない問題への対処

Wayland では標準的な起動方法では、その肝心のクリップボードの履歴が記録されなず、この根本的な問題については、環境変数で次の指定をすれば良い

QT_QPA_PLATFORM=xcb

コマンドライン (Bash) から起動するなら

QT_QPA_PLATFORM=xcb copyq --start-server &

そのためアプリケーション・メニューやログイン時に起動する設定ファイルは、それぞれ /usr/share/applications/com.github.hluk.copyq.desktop, ~/.config/autostart/*.desktop (大抵の場合、実際のファイル名は copyq.desktop) で、起動方法は Exec で指定するので、

Exec=copyq --start-server

を次のように書き換えれば良い

Exec=env QT_QPA_PLATFORM=xcb copyq --start-server

なお私の場合、前者に関しては再インストール時置き換わって、元に戻ると面倒なのでシステム全体ではなく、Exec だけでなく、システム側と区別がつくように Name の部分も次のように変更する形で、次の要領でユーザー側の設定で追加した

sed -E \ -e '/^Name=/c Name=CopyQ Wayland' \ -e '/^Exec=/c Exec=env QT_QPA_PLATFORM=xcb /usr/bin/copyq --start-server' \ /usr/share/applications/com.github.hluk.copyq.desktop > ~/.local/share/applications/copyq.desktop ; \ update-desktop-database ~/.local/share/applications/

ショートカットが使えない問題への対処

この手のアプリはたいていショットカットで履歴を読み出し、使用したい履歴を選択して使うが、Wayland では前述のとおり、ウィンドウが非表示だとショートカットが無視されるので、Gnome 全体のショートカットがを設定する

  1. 設定を開き「キーボード」の「ショットカットの設定と表示」を選択する
  2. 「独自のショートカット」を選択
  3. 一つも設定がなければ「ショートカットの追加」、設定がなければ「+」
  4. 名前
    他と見分けが付きやすい適当な内容
    コマンド
    copyq -e "toggle()"
    「ショートカット」
    「ショートカットを設定」で右下画像が表示されるので、設定したいショートカットをタイプ
  5. 例えば下図の様になるで「追加」

ただしここまでしても、一部制限があり履歴から選択してもペーストはされず、クリップボードの取り出しができるだけなので、改めてペースト処理が必要

Tilda

Tilda はドロップ・ダウン型ターミナル・エミュレーターの一つ

Ubuntu 24.04 の公式リポジトリでは Ver. 2.0.0 で下記で使うオプションが存在するが、古いバージョンではそもそも両オプションが使えないので、Wayland では動作させる方法がない

また Ubuntu 24.04 でも info, man 共にドキュメントが古いので、使用する起動オプションについての記載がない

しかし公式サイトの説明を参考にすれば良い

具体的には、こちらもウィンドウの再表示にショートカットを使う場合は、上と同じ要領でショートカットを指定する必要があり、上記 4 の「コマンド」で tilda -T 0 を指定する

それに加えてアプリケーション・メニュー (右図が例) では「Tilda」ではなく「Tilda (D-Bus)」で起動する

ログイン時の起動設定 (*.desktop への記載) では --dbus オプション付きにする

Exec=tilda --dbus

設定がなければ、次のように新規登録/設定変更する

  1. 「Startup Applications」を起動
  2. 設定がなければ「追加」、有れば設定のリストから選択して「編集」
  3. 「コマンド」に tilda --dbus を指定する

日本語入力の問題

まず日本語入力できないような致命的な問題が起きている場合は、 IM を fcitx5 に切り替える

sudo apt install fcitx5 fcitx5-mozc && im-config -n fcitx5

これでもアプリによって日本語入力ができたりできなかった場合、そのアプリの GUI モジュールに対応した設定が必要なので ~/.config/environment.d/00-env.conf などの systemd の設定ファイルに次のファイルを記述すれば良い

GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS="@im=fcitx"

設定は ~/.config/environment.d/ 内のどの設定ファイルでもよいが、複数指定が有ると数値の大きなファイルの設定で上書きされるので、一つのファイルに纒めておいた方が良い

また他の箇所でも設定可能なので、次のコマンドの出力結果を確認すると良い

fcitx5-diagnose

これで再ログインすれば、かな漢字変換は fcitx5+mozc の組み合わせでたいてい対処できるようだが、それだけでは変換中の文節とそれ以外の文節の区別がつかないアプリが有る

具体的には PPA 版の Firefox や GVIM_ENABLE_WAYLAND をセットできる公式リポジトリでない開発版の GVim (以下 Wayland 対応 Gvim) で実際に GVIM_ENABLE_WAYLAND をセットすると変換中に、変換対象がハイライト表示されべきな (下図左) のに、それがされない (下図右) ためにどこが変換対象なのかわからない。これは特に最後は日本語ユーザーには致命的に使いにくい

変換対象がハイライトされている 変換対象がハイライトされていない

これは次の様に、使用しているアプリの GUI モジュールに合わせて fcitx5 もフロントエンド・パッケージを追加すれば良い

sudo apt install fcitx5-frontend-gtk3

対応不能や制限が残る問題

試した範囲だが、対応できなかったり使い勝手が悪くなるアプリ・ツールが幾つか残っている

Window ID の取得

使用しているツールによって、多重起動をしたくないなどの理由で、wmctrl を使って Windows ID を調べ対処していたが、Wayland ではそれに制限がかかっていてごく一部のアプリのそれしか取得できず対応不能

wmctrl 以外の類似ツール xdotool, xwininfo も試してみたがやはり無理そう

NumLock 制御

ノート PC で外付けキーボードの有無によってログイン後の NumLock の ON/OFF を切り替えに numlockx を使っていたが Wayland では使えない

Vim

そのまま使うと GVim

  • ウィンドウサイズを変更すると描画が乱れる (下図左)
  • デフォルトの set nonumber foldcolumn=0 だと日本語入力がインライン表示されない (下図右)
ウィンドウ・サイズ変更で画面が乱れる 入力がインライン表示されない

これに関しては、設定ファイル内でも環境変数を取得・設定できるので、Wayland 対応 GVim なら ~/.vim/vimrc 内で次のようにすれば良い

if has('gui_running') if $XDG_SESSION_TYPE ==# 'wayland' $GVIM_ENABLE_WAYLAND = 1 endif endif

公式リポジトリではまだこのパッチは取り込まれていないので対応作はない

ただしこれをすると

  • ヘルプ (:help gui-wayland) に有る制限が発生する
    • 幾つかの関数・変数・コマンドが使えなくなる
    • ヘルプのこの箇所に記載がないが、その関係で :winpos も使えなくなる
  • clientserver 関連の機能が全て使えなくなる

    例えば多重起動を防ぐために vim --serverlist でサーバーを調べ、有れば gvim --servername で起動済みサーバーで処理していたがそれができない

正直最初の制限は使えなくともそれほど困らないのだが、2 つ目は地味に不便

fcitx5 のスタイル

fcitx は全てのアプリに適用されるわけではないが、アドオン・タブ (下左図) の「クラシックユーザーインターフェイス」からスタイルを指定できる

fcitx5 のアドオンタブ fcitx5 のクラシック設定

本来その設定ページの「システムのライト/ダーク配色に従う」が ON なら、OS 設定に従ってが「テーマ」「ダークテーマ」が使われる。しかし OS がダーク・テーマでも「テーマ」が使われる

しかもテーマによっては、その指定に関係なく「デフォルト」が使われてしまう