Qt と GTK アプリケーションの外観の統合

提供: ArchWiki
2024年11月29日 (金) 18:27時点におけるAshMyzk (トーク | 投稿記録)による版 (同期)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

QtGTK ベースのプログラムは異なるウィジェットツールキットを使ってグラフィカルユーザーインターフェースを表示しています。それぞれにデフォルトで異なるテーマ・スタイル・アイコンセットが存在するため、"ルックアンドフィール"は著しく乖離してしまいます。この記事ではデスクトップエクスペリエンスを統合するために Qt と GTK のアプリケーションの外観を似たようにする方法を説明しています。

概要

2つのツールキットで同じような見た目を表示するには以下を修正する必要が出てきます:

  • テーマ: アプリケーションやウィジェットセットなどの外観のカスタマイズ。テーマは通常、スタイル・アイコンテーマ・カラーテーマから成ります。
  • スタイル: ウィジェットセットのグラフィカルレイアウトと外観。
  • アイコンテーマ: グローバルアイコンのセット。
  • カーソルテーマ: スタイルと合わせて使われるグローバルカラーのセット。

外観の統一のために取れる方法は様々です:

  • 下で説明しているツールを使って GTK と Qt のスタイルを別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。
  • 特殊なテーマエンジンを使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。

Qt と GTK 両方のためのスタイル

統合のために、Qt と GTK 両方で記述・提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。

ヒント: root アプリケーションに対してユーザ定義のスタイルを適用したい場合もあるでしょう。GTK#root アプリケーションにテーマが適用されないQt#root アプリケーションにテーマが適用されない を参照してください。
ノート: バージョン 3.16 から、GTK 3 は CSS を使用しないテーマを サポートしなくなりました。そのため Oxygen-Gtk などのスタイルはもはや 使うことができなくなっています

GTK プログラム向けの元は Qt ベースだったテーマ

もともと Qt 環境用に作られたテーマだったが、後に GTK に移植されたテーマがあります。

Breeze

Breeze は KDE Plasma のデフォルトの Qt スタイルであり、breeze パッケージでインストールできます。GTK 2 と GTK 3 のテーマは breeze-gtk パッケージでインストールできます。

パッケージをインストールしたら、GTK の設定ツールを使って GTK のテーマを変更してください。

KDE Plasma を使用している場合、kde-gtk-config をインストールし、ログインし直して KDE システム設定 > 外観 > アプリケーションスタイル > GNOME/GTK のアプリケーションスタイルを設定… を開いてください。KDE システム設定におけるフォント、アイコン、カーソル、そしてウィジェットのスタイルセットは、自動的に GTK の設定に適用されます。GTK テーマだけは、前述のモジュールを使って手動で設定する必要があります。

Qt プログラム向けの元は GTK ベースだったテーマ

もともと GTK 環境用に作られたテーマだったが、後に Qt に移植されたテーマがあります。

Adwaita

この記事またはセクションは情報が古くなっています。
理由: Adwaita-qt プロジェクトはメンテナンスされておらず、もはや活発に開発されていません。[1] (Discuss)

Adwaita はデフォルトの GNOME テーマです。GTK 3 バージョンは gtk3 パッケージに含まれています。一方、GTK 2 バージョンは gnome-themes-extra にあります。adwaita-qt は Adwaita テーマの Qt 移植です。GTK 2 テーマを模倣する #QGtkStyle とは異なり、adwaita-qt は GTK 3 Adwaita に見えるように作られたネイティブな Qt スタイルを提供します。Qt 4、5、そして 6 のバージョンはそれぞれパッケージ adwaita-qt4AURadwaita-qt5-gitAUR、そして adwaita-qt6-gitAURインストールできます。

Qt スタイルをデフォルトとして設定するには:

  • Qt 5 の場合、環境変数 QT_STYLE_OVERRIDE=adwaita を設定することで有効化できます。あるいは、qt5ct パッケージを使用してください。より詳細な手順は、Qt#KDE Plasma 以外の環境での Qt 5/6 アプリケーションの設定 を参照してください。
  • Qt 4 の場合、Qt Configuration (qtconfig-qt4) で有効化できます。Appearance > GUI Styleadwaita を選択してください。あるいは、/etc/xdg/Trolltech.conf (システム全体) か ~/.config/Trolltech.conf (ユーザ固有) を編集してください:
~/.config/Trolltech.conf
...
[Qt]
style=adwaita
...

Kvantum に移植された GTK テーマ

Kvantum (kvantum) は、Adapta、Arc、Ambiance、Libadwaita、そして Materia などいくつかの人気な GTK テーマのバージョンを含む、様々な組み込みスタイルが同梱されている Qt6 用の SVG ベースのスタイルカスタマイザーです。その他のテーマは KDE Store で入手可能です。Qt5 に関しては、さらに kvantum-qt5 パッケージも必要です。

Kvantum は、Qt プラットフォームのテーマとしてではなく、Qt スタイルとして機能します。Kvantum をすべての Qt アプリケーションに対して設定するには、Qt6 に対しては qt6ct で、Qt5 に対しては qt5ct で設定してください。あるいは、環境変数 QT_STYLE_OVERRIDE=kvantum を使うこともできます。

テーマ設定

(KvLibadwaita などの) Kvantum のテーマバリアントを設定するには、設定ファイルを編集してください:

/etc/xdg/Kvantum/kvantum.kvconfig (あるいは ~/.config/Kvantum/kvantum.kvconfig)
...
theme=KvLibadwaita
...

または、kvantummanager GUI を使用してください。

テーマエンジン

テーマエンジンは、1つあるいは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API と考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。

QGtkStyle

ノート: QGtkStyle は qt5-base 5.7.0 [2] から除去され、qt5-stylepluginsAUR [3] に追加されました。
警告: GTK 2 のテーマによっては、フォントが透過してしまったりウィジェットがうまく調和しないなどのレンダリング問題が発生することがあります。

この Qt スタイルは GTK 2 を使って全てのコンポーネントをレンダリングすることで、GNOME やそれと似たような GTK ベースの環境とブレンドします。Qt 4.5 から、このスタイルは Qt に含まれています。gtk2 をインストール・設定する必要があります。

QGtkStyle は Cinnamon、GNOME、そして Xfce におけるデフォルトの Qt4 スタイルです。また Cinnamon、GNOME、MATE、LXDE、そして Xfce におけるデフォルトの Qt5 スタイルでもあります。他の環境では:

  • Qt4 の場合、Qt Configuration (qtconfig-qt4) で有効にすることができます。Appearance > GUI Style から GTK を選択してください。もしくは、/etc/xdg/Trolltech.conf (システム全体) あるいは ~/.config/Trolltech.conf (ユーザー個別) ファイルを編集してください:
~/.config/Trolltech.conf
...
[Qt]
style=GTK+
...
  • Qt 5 の場合、qt5-stylepluginsAUR をインストールし、次の環境変数を設定することで有効にできます: QT_QPA_PLATFORMTHEME=gtk2
  • Qt 6 の場合、qt6gtk2AUR をインストールして qt6ctqt6gtk2 を選択するか、あるいは 次の環境変数を設定することで有効化できます: QT_QPA_PLATFORMTHEME=gtk2

完全な統合のために、設定された GTK テーマが GTK 2 と GTK 3 の両方をサポートしていることを確認してください。GTK2 を使用するように Qt を設定したあとにテーマのレンダリングの一貫性が失われてしまった場合、gtk-theme-switch2AUR をインストールしテーマを選択してください。優先テーマが /usr/share/themes にインストールされていることも確認するべきでしょう。アクティブな GTK 2 テーマは $XDG_DATA_HOME/themes ディレクトリからスキャンされないからです。

QGnomePlatform

この記事またはセクションは情報が古くなっています。
理由: QGnomePlatform プロジェクトはメンテナンスされておらず、もはや活発に開発されていません。[4] (Discuss)

この Qt 5 プラットフォームテーマでは、GNOME での外観の設定が Qt アプリケーションに適用されます。qgnomeplatform-qt5-gitAURqgnomeplatform-qt6-gitAUR でインストールできます。これは Qt スタイル自体は提供せず、代わりに Qt と GTK の両方をサポートするスタイルを必要とします。

バージョン 3.20 以降の GNOME では、このプラットフォームテーマは自動的に有効化されます。他のシステムでは、次の環境変数を設定することで有効化できます: QT_QPA_PLATFORMTHEME=gnome

QAdwaitaDecorations

QAdwaitaDecorations は、Wayland に対して Adwaita ライクなクライアントサイド装飾を実装する Qt の装飾プラグインです。これは qadwaitadecorations-qt5AURqadwaitadecorations-qt6AUR でインストールできます。インストール後、QT_WAYLAND_DECORATION=adwaita 環境変数を設定してください。

QWhiteSurGtkDecorations

QWhiteSurGtkDecorations は、Wayland で WhiteSur-gtk のようなクライアントサイド装飾を実装する Qt 装飾プラグインです。qwhitesurgtkdecorations-qt5AURqwhitesurgtkdecorations-qt6AUR でインストールできます。インストール後に、QT_WAYLAND_DECORATION=whitesur-gtk 環境変数を設定してください。

ヒントとテクニック

Qt アプリで GTK のアイコンテーマを使う

Plasma を使っている場合は、kde-gtk-config を実行して、KDE システム設定 > アプリケーションスタイル > GTK でアイコンテーマを選択してください。

GNOME を使っている場合は、dconf-editor を実行して、org > gnome > desktop > interface にある icon-theme キーをあなたの好みのアイコンテーマに変更してください。

デスクトップ環境 を使っていない場合、例えば i3-wm で最小限のシステムを動かしているのなら、dconf-editorインストールして、上記の説明に従ってアイコンテーマを設定してください。 また、プロファイルの DESKTOP_SESSION の値も設定する必要があるかもしれません。望ましい結果を得るために可能な方法については 環境変数#変数の定義 を参照してください。

ノート: アイコンテーマが適用されない場合、入力したテーマ名が正しい形式であったかどうかを確認したい場合があります。例えば、現在アクティブなアイコンテーマを QT アプリケーションに適用したい場合、コマンドでその名前の正しい形式を調べることができます:
$ awk -F= '/icon-theme/ {print $2}' ~/.gtkrc-2.0

KDE Plasma で GTK3 アプリケーションにタイトルバーとフレームを追加する

GNOME/GTK アプリケーションを KDE/Plasma タイトルバーとフレームで表示するには、GTK#クライアントサイドデコレーションで説明されているようにクライアントサイドの装飾を無効にします。

KDE Plasma での GTK アプリのサブピクセルレンダリングを改善

こちらを参照 フォント設定#LCD フィルター

KDE Plasma での一貫性のあるファイルダイアログ

この記事またはセクションの正確性には問題があります。

同じファイルダイアログを表示させるために、XDG デスクトップ ポータル を使うことができます。

xdg-desktop-portalxdg-desktop-portal-kdeインストールし、環境変数 GTK_USE_PORTAL=1 を設定してください。

現在、全ての GTK アプリケーションが KDE ファイルダイアログを正しくサポートしているわけではないことに注意してください。

Electron を使用するアプリケーションは、最低でも Electron 14 を使用していて (#19159 を参照)、この機能を適切に実装している必要があります。

VSCode には問題を修正するためのプルリクエストがあります。#126113 を参照してください。

GIMP は portal の使用をまだ実装していません。バグレポートを参照してください。

ノート: 依然として多くの GTK アプリケーションが portal を正しく実装していません (放棄されたアプリケーション、あるいは作者が他のタスクに集中している)。少なくとも Dolphin から nautilus へブックマークを同期させることで、そのようなアプリケーションからのファイル選択を単純化させることができます。以下のコマンドを使用してください:
$ awk -F\" '/<bookmark href="file/ {print $2}' < $HOME/.local/share/user-places.xbel > $HOME/.config/gtk-3.0/bookmarks

あるいは、bookmarksync-gitAUR をそのような目的で使用することができます。これを使用すると、ブックマークを編集したり、両方向へ同期させたりできます。

アプリケーション固有の設定

環境変数による方法に加えて、一部の GTK アプリケーションには XDG ポータルを強制的に使用させるための独自の設定が存在します:

トラブルシューティング

GTK アプリでテーマが使えない

設定したスタイルやテーマエンジンが GTK アプリケーションで表示されない場合は、おそらく GTK の設定ファイルが何らかの理由でロードされていません。次を実行することでシステムが設定ファイルをどこにあると期待しているか確認できます:

$ export | grep gtk

通常、期待されるファイルは GTK1 は ~/.gtkrc、GTK 2.x は ~/.gtkrc2.0 または ~/.gtkrc2.0-kde です。

システムをアップグレードすると SVG (Breeze) アイコンが GTK アプリで使用されない

次のコマンドを実行してみてください:

# gdk-pixbuf-query-loaders --update-cache

GTK アプリが KDE システム設定を完全には使用しない

GTK アプリで Plasma 設定をさらに統合するには、gnome-settings-daemongsettings-desktop-schemas、および gsettings-qtインストールする必要があるかもしれません。これにより、GTK に適切な Qt バインディングが提供されます。

kde-gtk-config の "システム設定 > アプリケーションスタイル > GTK" メニューが無い

kde-gtk-config が壊れてシステム設定から "アプリケーションスタイル > GTK" メニューが無くなった場合、lxappearancenwg-look のような GTK 設定ツールを選ぶと GTK 2 と GTK 3 のスタイルを構成できるようになります。 lxappearance は LXDE プロジェクト由来ですが、デスクトップに依存していません (つまり、LXDE デスクトップの他のパーツを必要としません)。nwg-look は GTK3 設定エディタであり、wlroots ベースの Wayland 環境で適切に動作するように設計されています。nwg-look のルックアンドフィールは LXAppearance による影響を強く受けていますが、いくつかの不便さからユーザを開放することを意図しています。

Dolphin のテーマが Nautilus と良くマッチしない

フォルダビューの背景色がシステムのテーマと合わない のセクションで、変な色使いの対処法を確認してください。

KDE Plasma の XDG Desktop Portal が使用されない

XDG デスクトップ ポータル#デスクトップ環境を強制する 章に書かれてあることに従い、XDG_CURRENT_DESKTOP=KDE 環境変数を設定してください。

Qt5: kvantum is not available as a style in the Qt settings app

kvantum-qt5 がインストールされていることを確認してください。

翻訳ステータス: このページは en:Uniform look for Qt and GTK applications の翻訳バージョンです。最後の翻訳日は 2024-11-29 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。