「Qt と GTK アプリケーションの外観の統合」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎概要: 同期)
22行目: 22行目:
 
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。
 
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。
   
== Qt と GTK+ 両方のためのスタイル ==
+
== Qt と GTK 両方のためのスタイル ==
   
統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
+
統合のために、Qt と GTK 両方で記述・提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
   
  +
{{Tip|root アプリケーションに対してユーザ定義のスタイルを適用したい場合もあるでしょう。[[GTK#root アプリケーションにテーマが適用されない]] と [[Qt#root アプリケーションにテーマが適用されない]] を参照してください。}}
{{Note|1=バージョン 3.16 から、GTK+ 3 は CSS を使用しないテーマを [https://bbs.archlinux.org/viewtopic.php?pid=1518404#p1518404 サポートしなくなりました] 。そのため Oxygen-Gtk などのスタイルはもはや [https://bugs.kde.org/show_bug.cgi?id=340288 使うことができなくなっています] 。}}
 
  +
{{Note|1=バージョン 3.16 から、GTK 3 は CSS を使用しないテーマを [https://bbs.archlinux.org/viewtopic.php?pid=1518404#p1518404 サポートしなくなりました]。そのため Oxygen-Gtk などのスタイルはもはや [https://bugs.kde.org/show_bug.cgi?id=340288 使うことができなくなっています]。}}
   
 
=== Breeze ===
 
=== Breeze ===
   
Breeze は Plasma 5 のデフォルトの Qt スタイルです。Qt5 のスタイルは {{Pkg|breeze}} パッケージで、Qt4 のスタイルは {{AUR|breeze-kde4}} パッケージでインストールできます。Breeze と似ている GTK+ 2 と GTK+ 3 のテーマは {{Pkg|breeze-gtk}} パッケージでインストールできます。
+
Breeze は KDE Plasma のデフォルトの Qt スタイルです。Qt5 のスタイルは {{Pkg|breeze}} パッケージで、Qt4 のスタイルは {{AUR|breeze-kde4}} パッケージでインストールできます。Breeze と似ている GTK 2 と GTK 3 のテーマは {{Pkg|breeze-gtk}} パッケージでインストールできます。
   
パッケージをインストールしたら、[[GTK+#設定ツール|GTK+ の設定ツール]]を使って GTK+ のテーマを変更してください。
+
パッケージをインストールしたら、[[GTK#設定ツール|GTK の設定ツール]]を使って GTK のテーマを変更してください。
   
  +
KDE Plasma を使用している場合、{{pkg|kde-gtk-config}} をインストールし、それをコマンドラインから実行するか、ログインし直して ''KDE システム設定 > 外観 > アプリケーションスタイル > GNOME/GTK のアプリケーションスタイルを設定…'' を開いてください。KDE システム設定におけるフォント、アイコン、カーソル、そしてウィジェットのスタイルセットは、自動的に GTK の設定に適用されます。GTK テーマだけは、前述のモジュールを使って手動で設定する必要があります。
KDE Plasma を利用している場合は、KDE システム設定の ''System Settings > Application Style > Configure GNOME/GTK Application Style…'' にて GTK の設定が反映されるようにしてください。
 
もしくは、{{Pkg|kde-gtk-config}} をインストールしてコマンドラインから実行して設定することもできます。
 
   
 
=== Adwaita ===
 
=== Adwaita ===
   
Adwaita はデフォルトの GNOME テーマです。GTK+ 3 のテ標準で含まれており、GTK+ 2 のテは {{Pkg|gnome-themes-extra}} に含まれています。デフォルトで、Qt アプリケションには GTK+ 2 テーマが使われま([[#QGtkStyle]] を使用)。
+
Adwaita はデフォルトの GNOME テーマです。GTK 3 ジョン {{Pkg|gtk3}} パッケージに含まれています。一方、GTK 2 ジョンは {{Pkg|gnome-themes-extra}} にあります。[https://github.com/MartinBriza/adwaita-qt adwaita-qt] Adwaita テマの Qt 移植です。GTK 2 テーマを模倣 [[#QGtkStyle]] とは異なり、adwaita-qt は GTK 3 Adwaita に見えるように作られたネイティブな Qt スタイル提供します。Qt 4、5、そして 6 のバージョンはそれぞれパッケージ {{AUR|adwaita-qt4}} (コンパイルに時間が掛かるかもしれません)、{{Pkg|adwaita-qt5}}、そして {{Pkg|adwaita-qt6}} で[[インストール]]できます
   
  +
Qt スタイルをデフォルトとして設定するには:
ネイティブの Qt テーマを GTK+ 3 の Adwaita のようにしたいときは [https://github.com/MartinBriza/adwaita-qt adwaita-qt] を見て下さい。Qt 5 バージョンは {{Aur|adwaita}}{{Broken package link|パッケージが存在しません}} パッケージで、Qt 4 バージョンは {{Aur|adwaita-qt4}} パッケージで[[インストール]]できます。
 
   
  +
* Qt 4 の場合、''Qt Configuration'' ({{ic|qtconfig-qt4}}) で有効化できます。''Appearance > GUI Style'' で ''adwaita'' を選択してください。あるいは、{{ic|/etc/xdg/Trolltech.conf}} (システム全体) か {{ic|~/.config/Trolltech.conf}} (ユーザ固有) を編集してください:
デフォルトに設定するときは、Qt 5 では {{Pkg|qt5ct}} パッケージか、{{ic|1=QT_STYLE_OVERRIDE=adwaita}} [[環境変数]]を使います。
 
Qt 4 では ({{AUR|qt4}} パッケージに含まれている) {{ic|qtconfig-qt4}} を使います。
 
   
  +
{{hc|~/.config/Trolltech.conf|2=
=== Kvantum ===
 
  +
...
Kvantum {{Pkg|kvantum-qt5}} は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。
 
  +
[Qt]
  +
style=adwaita
  +
...
  +
}}
  +
  +
* Qt 5 の場合、[[環境変数#グラフィック環境|環境変数]] {{ic|1=QT_STYLE_OVERRIDE=adwaita}} を設定することで有効化できます。あるいは、{{Pkg|qt5ct}} パッケージを使用してください。より詳細な手順は、[[Qt#KDE Plasma 以外の環境での Qt 5 アプリケーションの設定]] を参照してください。
   
 
== テーマエンジン ==
 
== テーマエンジン ==

2023年5月16日 (火) 23:43時点における版

関連記事

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

概要

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

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

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

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

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

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

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

Breeze

Breeze は KDE Plasma のデフォルトの Qt スタイルです。Qt5 のスタイルは breeze パッケージで、Qt4 のスタイルは breeze-kde4AUR パッケージでインストールできます。Breeze と似ている GTK 2 と GTK 3 のテーマは breeze-gtk パッケージでインストールできます。

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

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

Adwaita

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-qt4AUR (コンパイルに時間が掛かるかもしれません)、adwaita-qt5、そして adwaita-qt6インストールできます。

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

  • Qt 4 の場合、Qt Configuration (qtconfig-qt4) で有効化できます。Appearance > GUI Styleadwaita を選択してください。あるいは、/etc/xdg/Trolltech.conf (システム全体) か ~/.config/Trolltech.conf (ユーザ固有) を編集してください:
~/.config/Trolltech.conf
...
[Qt]
style=adwaita
...

テーマエンジン

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

QGtkStyle

ノート: QGtkStyle は qt5-base Qt 5.7.0 [1] から除去され、 qt5-stylepluginsAUR [2] に追加されました。
警告: 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'

完全な統合をするには、GTK+ 2 と GTK+ 3 の両方をサポートしている GTK+ テーマを設定する必要があります。上の設定を有効にすると描画に不具合が生じる場合、GTK+ テーマを変更してください。

QGnomePlatform

この Qt 5 プラットフォームテーマでは、GNOME での外観の設定が Qt アプリケーションに適用されます。qgnomeplatformAURqgnomeplatform-gitAURインストールした上で、別途スタイルをQt と GTK アプリケーションの外観の統合#Qt と GTK+ 両方のためのスタイルを参考にインストールしてください。

GNOME 3.20 以降では自動的に有効化されます。それ以前では QT_QPA_PLATFORMTHEME=gnome と設定すると有効になります。

ヒントとテクニック

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

Plasma を使っている場合は、kde-gtk-config を実行して、System Settings > Application Style > 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 のタイトルバーとフレームで表示するには、 gtk3-nocsd-gitAUR をインストールしてからウィンドウマネージャを再起動し、更新したライブラリパスをロードしてください。

また、GTK アプリケーションをラッパーで実行することもできます。

$ gtk3-nocsd gedit

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

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

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

同じファイル ダイアログを表示するには、XDG Portals を使用します。

xdg-desktop-portalxdg-desktop-portal-kde を {[インストール]] して GTK_USE_PORTAL=1 を設定します。etc/environment で 環境変数 を設定してください。

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

electron を使用するアプリケーションは少なくとも electron 14 (https://github.com/electron/electron/pull/19159 参照) を使用し、この関数を適切に実装する必要があります。 vscode には問題を修正するためのプルリクエストがあります。#126113 を参照してください。

公式リポジトリのバージョン 3.20.3-1 の Meld アプリケーションはまだ gtk ファイルピッカーを開いています。meld-gitAUR のバージョン 3.21.1 では kde ファイルピッカーは開きますが、ディレクトリを開くのに失敗します。詳しくは bug report を参照して下さい。

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

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

代わりに、bookmarksync-gitAUR を使ってください。手動でブックマークを編集し、双方に同期させることができます。

トラブルシューティング

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

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

$ export | grep gtk

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

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

次のコマンドを実行して、gdk-pixbuf のキャッシュ情報を更新してみてください [3]:

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

FlatpakQt アプリに GnomeAdwaita ダークテーマが適用されない

テーマを Adwaita に切り替えた場合 -dark および FlatpakQt アプリケーションは引き続き light バージョンを使用する場合は、必要な KStyle をインストールします。

# flatpak install flathub org.kde.KStyle.Adwaita

GNOME Wayland で実行される Qt アプリケーションが、Qt テーマを設定した後でも、ウィンドウ装飾の外観が一致しない

ウィンドウ装飾の一致した外観を得るには、qgnomeplatformAUR をインストールし、次の 環境変数 を設定する必要があります:QT_QPA_PLATFORMTHEME='gnome' この修正は、Adwaita または Adwaita-dark で動作することが保証されています。

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

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

kde-gtk-config "システム設定>アプリケーションスタイル>GTK" メニューがありません

kde-gtk-config が壊れてシステム設定から "Application Style > GTK" メニューが無くなった場合、 lxappearance のような 設定ツール を選ぶと GTK 2 と GTK 3 スタイルを構成できるようになります。 LXDE プロジェクトに由来するものであっても、デスクトップには依存しません (LXDE デスクトップの他の部分を必要としません。)

Dolphin のテーマが Nautilus に適用されない

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