「Qt と GTK アプリケーションの外観の統合」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→トラブルシューティング: add sections.) |
Kusanaginoturugi (トーク | 投稿記録) (move sections.) |
||
25行目: | 25行目: | ||
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。 |
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。 |
||
* 下で説明しているツールを使って [[#Qt と GTK+ 両方のためのスタイル|GTK+ と Qt のスタイル]]を別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。 |
* 下で説明しているツールを使って [[#Qt と GTK+ 両方のためのスタイル|GTK+ と Qt のスタイル]]を別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。 |
||
+ | |||
+ | == Qt と GTK+ 両方のためのスタイル == |
||
+ | |||
+ | 統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。 |
||
+ | |||
+ | {{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 は Plasma 5 のデフォルトの Qt スタイルです。Qt5 のスタイルは {{Pkg|breeze}} パッケージで、Qt4 のスタイルは {{AUR|breeze-kde4}} パッケージでインストールできます。Breeze と似ている GTK+ 2 と GTK+ 3 のテーマは {{Pkg|breeze-gtk}} パッケージでインストールできます。 |
||
+ | |||
+ | パッケージをインストールしたら、[[GTK+#設定ツール|GTK+ の設定ツール]]を使って GTK+ のテーマを変更してください。 |
||
+ | |||
+ | KDE Plasma を利用している場合は、KDE システム設定の ''System Settings > Application Style > Configure GNOME/GTK Application Style…'' にて GTK の設定が反映されるようにしてください。 |
||
+ | もしくは、{{Pkg|kde-gtk-config}} をインストールしてコマンドラインから実行して設定することもできます。 |
||
+ | |||
+ | === Adwaita === |
||
+ | |||
+ | Adwaita はデフォルトの GNOME のテーマです。GTK+ 3 のテーマは標準で含まれており、GTK+ 2 のテーマは {{Pkg|gnome-themes-extra}} に含まれています。デフォルトでは、Qt アプリケーションには GTK+ 2 のテーマが使われます ([[#QGtkStyle]] を使用)。 |
||
+ | |||
+ | ネイティブの 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 5 では {{Pkg|qt5ct}} パッケージか、{{ic|1=QT_STYLE_OVERRIDE=adwaita}} [[環境変数]]を使います。 |
||
+ | Qt 4 では ({{AUR|qt4}} パッケージに含まれている) {{ic|qtconfig-qt4}} を使います。 |
||
== テーマエンジン == |
== テーマエンジン == |
||
60行目: | 84行目: | ||
=== Kvantum === |
=== Kvantum === |
||
Kvantum {{Pkg|kvantum-qt5}} は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。 |
Kvantum {{Pkg|kvantum-qt5}} は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。 |
||
− | |||
− | == Qt と GTK+ 両方のためのスタイル == |
||
− | |||
− | 統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。 |
||
− | |||
− | {{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 は Plasma 5 のデフォルトの Qt スタイルです。Qt5 のスタイルは {{Pkg|breeze}} パッケージで、Qt4 のスタイルは {{AUR|breeze-kde4}} パッケージでインストールできます。Breeze と似ている GTK+ 2 と GTK+ 3 のテーマは {{Pkg|breeze-gtk}} パッケージでインストールできます。 |
||
− | |||
− | パッケージをインストールしたら、[[GTK+#設定ツール|GTK+ の設定ツール]]を使って GTK+ のテーマを変更してください。 |
||
− | |||
− | KDE Plasma を利用している場合は、KDE システム設定の ''System Settings > Application Style > Configure GNOME/GTK Application Style…'' にて GTK の設定が反映されるようにしてください。 |
||
− | もしくは、{{Pkg|kde-gtk-config}} をインストールしてコマンドラインから実行して設定することもできます。 |
||
− | |||
− | === Adwaita === |
||
− | |||
− | Adwaita はデフォルトの GNOME のテーマです。GTK+ 3 のテーマは標準で含まれており、GTK+ 2 のテーマは {{Pkg|gnome-themes-extra}} に含まれています。デフォルトでは、Qt アプリケーションには GTK+ 2 のテーマが使われます ([[#QGtkStyle]] を使用)。 |
||
− | |||
− | ネイティブの 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 5 では {{Pkg|qt5ct}} パッケージか、{{ic|1=QT_STYLE_OVERRIDE=adwaita}} [[環境変数]]を使います。 |
||
− | Qt 4 では ({{AUR|qt4}} パッケージに含まれている) {{ic|qtconfig-qt4}} を使います。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
2022年2月16日 (水) 11:25時点における版
Qt と GTK+ ベースのプログラムは異なるウィジェットツールキットを使ってグラフィカルユーザーインターフェースを表示しています。それぞれにデフォルトで異なるテーマ・スタイル・アイコンセットが存在するため、"ルックアンドフィール"は著しく乖離してしまいます。この記事ではデスクトップエクスペリエンスを統合するために Qt と GTK+ のアプリケーションの外観を似たようにする方法を説明しています。
目次
- 1 概要
- 2 Qt と GTK+ 両方のためのスタイル
- 3 テーマエンジン
- 4 ヒントとテクニック
- 5 トラブルシューティング
- 5.1 GTK+ アプリでテーマが使えない
- 5.2 システムをアップグレードすると SVG (Breeze) アイコンが GTK+ アプリで使用されない
- 5.3 Flatpak Qt apps do not use Gnome Adwaita dark theme
- 5.4 Qt apps run on GNOME Wayland have a non-matching window decoration look, even after setting a Qt theme
- 5.5 GTK apps do not fully use KDE system settings
- 5.6 kde-gtk-config "System Settings > Application Style > GTK" menu missing
- 5.7 Dolphin theming does not match Nautilus well
概要
2つのツールキットで同じような見た目を表示するには以下を修正する必要が出てきます:
- テーマ: アプリケーションやウィジェットセットなどの外観のカスタマイズ。テーマは通常、スタイル・アイコンテーマ・カラーテーマから成ります。
- スタイル: ウィジェットセットのグラフィカルレイアウトと外観。
- アイコンテーマ: グローバルアイコンのセット。
- カーソルテーマ: スタイルと合わせて使われるグローバルカラーのセット。
外観の統一のために取れる方法は様々です:
- 特殊なテーマエンジンを使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。
- 下で説明しているツールを使って GTK+ と Qt のスタイルを別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。
Qt と GTK+ 両方のためのスタイル
統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
Breeze
Breeze は Plasma 5 のデフォルトの Qt スタイルです。Qt5 のスタイルは breeze パッケージで、Qt4 のスタイルは breeze-kde4AUR パッケージでインストールできます。Breeze と似ている GTK+ 2 と GTK+ 3 のテーマは breeze-gtk パッケージでインストールできます。
パッケージをインストールしたら、GTK+ の設定ツールを使って GTK+ のテーマを変更してください。
KDE Plasma を利用している場合は、KDE システム設定の System Settings > Application Style > Configure GNOME/GTK Application Style… にて GTK の設定が反映されるようにしてください。 もしくは、kde-gtk-config をインストールしてコマンドラインから実行して設定することもできます。
Adwaita
Adwaita はデフォルトの GNOME のテーマです。GTK+ 3 のテーマは標準で含まれており、GTK+ 2 のテーマは gnome-themes-extra に含まれています。デフォルトでは、Qt アプリケーションには GTK+ 2 のテーマが使われます (#QGtkStyle を使用)。
ネイティブの Qt テーマを GTK+ 3 の Adwaita のようにしたいときは adwaita-qt を見て下さい。Qt 5 バージョンは adwaitaAUR[リンク切れ: パッケージが存在しません] パッケージで、Qt 4 バージョンは adwaita-qt4AUR パッケージでインストールできます。
デフォルトに設定するときは、Qt 5 では qt5ct パッケージか、QT_STYLE_OVERRIDE=adwaita
環境変数を使います。
Qt 4 では (qt4AUR パッケージに含まれている) qtconfig-qt4
を使います。
テーマエンジン
テーマエンジンは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API として考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。
QGtkStyle
この 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 アプリケーションに適用されます。qgnomeplatformAUR か qgnomeplatform-gitAUR をインストールした上で、別途スタイルをQt と GTK アプリケーションの外観の統合#Qt と GTK+ 両方のためのスタイルを参考にインストールしてください。
GNOME 3.20 以降では自動的に有効化されます。それ以前では QT_QPA_PLATFORMTHEME=gnome
と設定すると有効になります。
Kvantum
Kvantum kvantum-qt5 は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。
ヒントとテクニック
Qt アプリで GTK+ のアイコンテーマを使う
If you are running Plasma, run kde-gtk-config and select the icon-theme under System Settings > Application Style > GTK.
If you are using GNOME, run dconf-editor and change the icon-theme
key under org > gnome > desktop > interface to your preferred icon theme.
If you are not using a Desktop environment, for example if you are running a minimal system with i3-wm, install dconf-editor and set the icon-theme as explained above.
You might also have to set the value of DESKTOP_SESSION
in your profile. See Environment variables#Defining variables for the possible ways to obtain the desired result.
Add Title bar and frame to GTK3 applications under KDE Plasma
To have Gnome/GTK applications display with a KDE/Plasma title bar and frame, install gtk3-nocsd-gitAUR and restart your window manager to load the updated library path.
You can also run Gtk application with the wrapper:
$ gtk3-nocsd gedit
Improve subpixel rendering of GTK apps under KDE Plasma
See Font configuration#LCD filter.
Consistent file dialog
In order to have the same file dialog, one can use XDG Portals.
Install xdg-desktop-portal and xdg-desktop-portal-kde and set GTK_USE_PORTAL=1
environment variable in /etc/environment.
Note that currently not all gtk applications support kde file dialogs correctly. For example, Thunderbird supports it normally.
Applications using electron should use at least electron 14 (see #19159) and properly implement this function.
vscode has a pull request for fixing a problem, see #126113.
Meld application from official repository version 3.20.3-1 still opens gtk file picker; version 3.21.1 from meld-gitAUR opens kde file picker, but fails to open directories, see bug report for more info.
GIMP has not implemented use of the portal yet, see bug report.
トラブルシューティング
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
Flatpak Qt apps do not use Gnome Adwaita dark theme
If you switched your theme to Adwaita-dark and Flatpak Qt applications still use the light version, install the required KStyle:
# flatpak install flathub org.kde.KStyle.Adwaita
Qt apps run on GNOME Wayland have a non-matching window decoration look, even after setting a Qt theme
In order to have a matching window decoration look, you have to install qgnomeplatformAUR, and set the following environment variable: QT_QPA_PLATFORMTHEME='gnome'
This fix is guaranteed to work with Adwaita or Adwaita-dark.
GTK apps do not fully use KDE system settings
To further integrate Plasma settings on GTK apps, one may want to install gnome-settings-daemon, gsettings-desktop-schemas and gsettings-qt. This will offer proper Qt bindings for GTK.
When kde-gtk-config breaks and the "Application Style > GTK" menu is missing from System Settings, it is possible to choose GTK configuration tools like lxappearance to be able to configure GTK 2 and GTK 3 styles. It is desktop independent even if it comes from the LXDE project (it does not require other parts of the LXDE desktop).
Dolphin theming does not match Nautilus well
Check the section Mismatched folder view background colors for how to deal with weird coloring.