Qt 5.11 での Wayland 対応の改善

この記事は The Qt BlogWhat’s new with the Wayland platform plugin in Qt 5.11? を翻訳したものです。
執筆: Johan Helsing, 2018年05月29日

Wayland は最近の Linux で使われているディスプレイサーバーのプロトコルで、Qt Wayland プラットフォームプラグインにより、Qt のアプリケーションは Wayland のディスプレイサーバー(コンポジタ)上で動作可能になります。

Qt 5.11 では、バグの修正以外に加えてとくにデスクトップユーザーに向けた様々な改善がなされました。

合成キー入力の対応

key-composition

キー入力の合成は長らく未対応でしたが、ようやく対応ができました。これにより、以下のような入力に複数のキー入力を必要とする文字の入力が可能になりました。

  • ¨A で "ä" を入力
  • Compose キーSS で "ß" を入力

オフィシャルバイナリに含まれるように

Qt 5.11 と Qt Creator 4.7 以降、Qt Wayland はオフィシャルのインストーラーでのインストールが可能になりました(これまでは自分でビルドをする必要がありました)。

みなさんがオフィシャルな Qt で開発したアプリケーションと同様に、オフィシャルパッケージに含まれる Qt Creator 自体も Wayland 上で動作します。

アップデート:QtWayland が Qt Creator 4.7 のリリースに含まれるかどうかは未定とのことです。これは、Qt 5.11 では gnome-shell のセッションで Qt Wayland がデフォルトのプラグインになってしまうというミスのためです。gonome-shell と Qt Wayland の組み合わせはまだまだバグが多いため、Qt Wayland は現在は Qt Creator のプレリリースからは完全に削除されています。今後再度追加が可能になるかもしれません。

Qt creator 4.7 nightly running on WaylandWayland 上で動作している開発版の Qt Creator 4.7

正式リリースを待てない方は、毎晩ビルドしている 開発版の Qt Creator 4.7 でお試しいただけます。

Wayland が見つからない場合の X11 へのフォールバック

QPA の一般的な指定の仕方は、環境変数を利用して QT_QPA_PLATFORM=wayland とすることです。Linux のデスクトップ環境はこれがしばしば問題を引き起こしていて、例えば Qt Creator のリリースパッケージのように Wayland に非対応の Qt を使っているようなアプリケーションは以下のようなエラーメッセージとともに起動に失敗していました。

This application failed to start because it could not find or load the Qt platform plugin "wayland" in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Reinstalling the application may fix this problem.

Qt 5.11 では QPA にフォールバックの指定が可能になり、QT_QPA_PLATFORM="wayland;xcb" とすることで Wayland が利用不可能な場合に xcb(X11) のプラグインを利用することになります。

高解像度ディスプレイ対応の改善

automatic-dpi-change

高解像度と通常の解像度の複数のモニタを使用する場合、Qt のウィンドウはスクリーンの移動時に適切なスケールに切り替わるようになりました。もう小さいウィンドウやぼやけたウィンドウとはおさらばです :)

テストと CI

QA 的にも Qt Wayland には大幅に改善されました。現在は QtBase のサブセットのユニットテストをパッチごとに実施していて、これがバグの早期発見につながっています。これについては、また別途記事を書くことにします。

開発ブランチの最新情報

5.11 のリリースには間に合わなかった様々な変更があります。リサイズや最大化などの状態の変更も大きく変わりました。ようやく xdg-shell-v6 の最大化とフルスクリーンの対応が完了しました。また、xdg-shell stable 向けに新たなシェルインテグレーションも追加しました。

Qt Wayland のバックポートレポジトリ

新機能やバグフィックスが入った Qt Wayland を試したいけれど、リリースまで待てないという場合や、Qt のアップグレードやコンパイルをしたくない方向けに、a href="https://github.com/johanhelsing/qtwayland-backports">非公式な qtwayland-backports リポジトリ を作成しました。

It contains branches with new versions of Qt Wayland that compile against older versions of Qt. I.e. if you use Qt 5.10.x, you can still test recent changes in the Qt Wayland dev branch using the dev-for-5.10 branch.

Arch Linux のユーザーは、qt5-wayland の代替として使える qt5-wayland-dev-backport-git の AUR パッケージをインストールすることができます。繰り返しとなりますが、これらのバックポートは非公式で、これを更新し続ける保証はいたしません。


Blog Topics:

Comments