Wayland 上での動作について

Wayland 上での動作について
こちらで公開されているアプリは、自作の GUI ライブラリ mlk を使用しています。
このライブラリ (新しく公開されたバージョン) は、X11 と Wayland に対応しています。

アプリを Wayland デスクトップ上で動作させる場合は、いくつか注意点があります。

  • Wayland では、アプリ側で、ウィンドウ位置の取得や、任意のウィンドウ位置への移動ができないため、ウィンドウ位置の保存・復元ができません。
  • 現在、HiDPI には対応していません。
    ディスプレイのスケールを上げた場合、等倍の画像を拡大する形になるので、画面がぼやけます。
  • ウィンドウのタイトルバーなどの装飾は、ライブラリ側で作成しています。
  • stable (安定版) でないプロトコルを一部使用しているため、そのプロトコルが stable に移行したり、デスクトップ側でプロトコルの実装に変化があった場合、ライブラリ側で対応するまで、機能の一部が動かなくなる可能性があります。
    (日本語入力など)
  • デスクトップ側で、以下のプロトコルが実装されていない場合、アプリが起動しません。
    - wl_data_device_manager ver 3 以降
    - xdg_wm_base ver 3 以降
    - wp_viewporter ver 1 以降
ウィンドウ位置について
Wayland では、現状、アプリ側でウィンドウの現在位置を取得したり、任意のウィンドウ位置に移動したりすることができません。
そのため、ウィンドウ位置に関しては、動作に問題が出ます。
ウィンドウ位置の復元
まず、アプリ終了時に現在のウィンドウ位置を保存して、次回起動時にウィンドウ位置を復元するということができません (X11 では可能)。

Wayland では、ウィンドウが表示される際、毎回デスクトップ側が位置を決めます。
そのため、デスクトップ側でウィンドウ位置関連の設定があれば、そちらでどうにかできるかもしれません。
パネルウィンドウ
Wayland では、ウィンドウが表示/非表示されるたびにデスクトップ側が位置を決めるので、メインウィンドウへの格納・別ウィンドウへの分離が可能な「パネル」ウィジェットの場合、ウィンドウの分離と格納、または表示/非表示を切り替えるたびに、パネルウィンドウの位置がリセットされます。

パネルをウィンドウに分離して使う場合、前回終了時のウィンドウ位置が復元できないので、起動時に毎回ウィンドウ位置を移動しなければならず、起動中もウィンドウ状態を切り替えるたびに位置が変わってしまうので、かなり不便になります。

Wayland では、基本的にパネルは格納して使っていただくことになりますが、どうしてもパネルウィンドウを使いたいという場合は、X11 クライアントとして起動してください。

X11 のデスクトップを使用してその中で起動するか、Wayland 上で XWayland を使って X11 として起動した場合は、問題なく動作させることができます。

Wayland 上で、アプリを X11 クライアントとして起動させたい場合は、環境変数 MLK_BACKEND を使います。

$ env MLK_BACKEND=x11 <app_exe>

アプリの実行ファイルの前に、このようにして環境変数を指定してください。