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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(4人の利用者による、間の30版が非表示)
2行目: 2行目:
 
[[Category:視覚効果]]
 
[[Category:視覚効果]]
 
[[en:Uniform look for Qt and GTK applications]]
 
[[en:Uniform look for Qt and GTK applications]]
[[es:Uniform look for Qt and GTK applications]]
 
[[it:Uniform look for Qt and GTK applications]]
 
 
[[ru:Uniform look for Qt and GTK applications]]
 
[[ru:Uniform look for Qt and GTK applications]]
[[uk:Uniform look for Qt and GTK applications]]
 
 
[[zh-hans:Uniform look for Qt and GTK applications]]
 
[[zh-hans:Uniform look for Qt and GTK applications]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|GTK+}}
+
{{Related|GTK}}
 
{{Related|Qt}}
 
{{Related|Qt}}
 
{{Related articles end}}
 
{{Related articles end}}
[[Qt]] と [[GTK+]] ベースのプログラムは異なるウィジェットツールキットを使ってグラフィカルユーザーインターフェースを表示しています。それぞれにデフォルトで異なるテーマ・スタイル・アイコンセットが存在するため、"ルックアンドフィール"は著しく乖離してしまいます。この記事ではデスクトップエクスペリエンスを統合するために Qt と GTK+ のアプリケーションの外観を似たようにする方法を説明しています。
+
[[Qt]] と [[GTK]] ベースのプログラムは異なるウィジェットツールキットを使ってグラフィカルユーザーインターフェースを表示しています。それぞれにデフォルトで異なるテーマ・スタイル・アイコンセットが存在するため、"ルックアンドフィール"は著しく乖離してしまいます。この記事ではデスクトップエクスペリエンスを統合するために Qt と GTK のアプリケーションの外観を似たようにする方法を説明しています。
   
 
== 概要 ==
 
== 概要 ==
22行目: 19行目:
   
 
外観の統一のために取れる方法は様々です:
 
外観の統一のために取れる方法は様々です:
  +
* 下で説明しているツールを使って [[#Qt と GTK 両方のためのスタイル|GTK と Qt のスタイル]]を別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。
 
 
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。
 
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。
* 下で説明しているツールを使って [[#Qt と GTK+ 両方のためのスタイル|GTK+ と Qt のスタイル]]を別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。
 
   
  +
== Qt と GTK 両方のためのスタイル ==
== テーマエンジン ==
 
テーマエンジンは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API として考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。
 
   
  +
統合のために、Qt と GTK 両方で記述・提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
=== QGtkStyle ===
 
   
  +
{{Tip|root アプリケーションに対してユーザ定義のスタイルを適用したい場合もあるでしょう。[[GTK#root アプリケーションにテーマが適用されない]] と [[Qt#root アプリケーションにテーマが適用されない]] を参照してください。}}
{{Note|QGtkStyle は {{Pkg|qt5-base}} Qt 5.7.0 [https://github.com/qtproject/qtbase/commit/899a815414e95da8d9429a4a4f4d7094e49cfc55] から除去され、 {{AUR|qt5-styleplugins}} [https://github.com/qtproject/qtstyleplugins/commit/102da7d50231fc5723dba6e72340bef3d29471aa] に追加されました。}}
 
  +
{{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 は KDE Plasma のデフォルトの Qt スタイルであり、{{Pkg|breeze}} パッケージでインストールできます。GTK 2 と GTK 3 のテーマは {{Pkg|breeze-gtk}} パッケージでインストールできます。
  +
  +
パッケージをインストールしたら、[[GTK#設定ツール|GTK の設定ツール]]を使って GTK のテーマを変更してください。
  +
  +
KDE Plasma を使用している場合、{{pkg|kde-gtk-config}} をインストールし、ログインし直して ''KDE システム設定 > 外観 > アプリケーションスタイル > GNOME/GTK のアプリケーションスタイルを設定…'' を開いてください。KDE システム設定におけるフォント、アイコン、カーソル、そしてウィジェットのスタイルセットは、自動的に GTK の設定に適用されます。GTK テーマだけは、前述のモジュールを使って手動で設定する必要があります。
  +
  +
=== Adwaita ===
   
  +
{{Out of date|Adwaita-qt プロジェクトはメンテナンスされておらず、もはや活発に開発されていません。[https://github.com/FedoraQt/adwaita-qt#readme]}}
{{Warning|GTK+ 2 のテーマによっては、フォントが透過してしまったりウィジェットがうまく調和しないなどのレンダリング問題が発生することがあります。}}
 
   
  +
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}}、{{AUR|adwaita-qt5-git}}、そして {{AUR|adwaita-qt6-git}} で[[インストール]]できます。
この Qt スタイルは GTK+ 2 を使って全てのコンポーネントを表示することで [[GNOME]] などの GTK+ ベースの環境とブレンドします。Qt 4.5 から、このスタイルは Qt に含まれているようになっています。{{Pkg|gtk2}} をインストール・設定してください。
 
   
  +
Qt スタイルをデフォルトとして設定するには:
QGtkStyle は Cinnamon, GNOME, Xfce におけるデフォルトの Qt4 スタイルです。また Cinnamon, GNOME, MATE, LXDE, Xfce におけるデフォルトの Qt5 スタイルでもあります。他の環境では:
 
   
* Qt4 の場合、''Qt Configuration'' ({{ic|qtconfig-qt4}}) で有効にすることできます。''Appearance > GUI Style'' から ''GTK+''選択してください。もしくは、{{ic|/etc/xdg/Trolltech.conf}} (システム全体) あるいは {{ic|~/.config/Trolltech.conf}} (ユザー個別) ファイル編集してください:
+
* Qt 5 の場合、[[環境変数#グラフィック環境|環境変数]] {{ic|1=QT_STYLE_OVERRIDE=adwaita}} を設定することで有効化できます。あるいは、{{Pkg|qt5ct}} パッケージ使用してください。より詳細な手順は、[[Qt#KDE Plasma 以外の環境での Qt 5 アプリケションの設定]]参照してください
  +
* Qt 4 の場合、''Qt Configuration'' ({{ic|qtconfig-qt4}}) で有効化できます。''Appearance > GUI Style'' で ''adwaita'' を選択してください。あるいは、{{ic|/etc/xdg/Trolltech.conf}} (システム全体) か {{ic|~/.config/Trolltech.conf}} (ユーザ固有) を編集してください:
   
 
{{hc|~/.config/Trolltech.conf|2=
 
{{hc|~/.config/Trolltech.conf|2=
 
...
 
...
 
[Qt]
 
[Qt]
style=GTK+
+
style=adwaita
 
...
 
...
 
}}
 
}}
   
  +
== テーマエンジン ==
* Qt 5 の場合、{{AUR|qt5-styleplugins}} をインストールし、次の[[環境変数#グラフィカルアプリケーション|環境変数]]を設定することで有効にできます: {{ic|1=QT_QPA_PLATFORMTHEME='gtk2'}}。
 
   
  +
''テーマエンジン''は、1つあるいは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API と考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。
完全な統合をするには、GTK+ 2 と GTK+ 3 の両方をサポートしている [[GTK+#テーマ|GTK+ テーマ]]を設定する必要があります。上の設定を有効にすると描画に不具合が生じる場合、GTK+ テーマを変更してください。
 
   
=== QGnomePlatform ===
+
=== Kvantum ===
   
  +
Kvantum ({{Pkg|kvantum}}) は、Adapta、Arc、Ambiance、Libadwaita、そして Materia などいくつかの人気な GTK テーマのバージョンを含む、様々な組み込みスタイルが同梱されている Qt5 用のカスタマイズ可能な SVG ベースのテーマエンジンです。その他のテーマは [https://store.kde.org/browse?cat=123 KDE Store で]入手可能です。
この Qt 5 プラットフォームテーマでは、GNOME での外観の設定が Qt アプリケーションに適用されます。{{AUR|qgnomeplatform}} か {{AUR|qgnomeplatform-git}} を[[インストール]]した上で、別途スタイルを[[Qt と GTK アプリケーションの外観の統合#Qt と GTK+ 両方のためのスタイル]]を参考にインストールしてください。
 
   
  +
Kvantum はプラットフォームテーマではなくスタイルとして扱われます。環境変数を使って Kvantum を全 qt アプリケーションに対して設定するには、{{ic|1=QT_STYLE_OVERRIDE=kvantum}} を設定してください。
GNOME 3.20 以降では自動的に有効化されます。それ以前では {{ic|1=QT_QPA_PLATFORMTHEME=gnome}} と設定すると有効になります。
 
   
=== Kvantum ===
+
==== テーマ設定 ====
Kvantum {{Pkg|kvantum-qt5}} は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。
 
   
  +
([https://github.com/GabePoel/KvLibadwaita KvLibadwaita] などの) Kvantum の[https://github.com/tsujan/Kvantum/blob/master/Kvantum/doc/Theme-Config.pdf テーマバリアントを設定する]には、設定ファイルを編集してください:
== Qt と GTK+ 両方のためのスタイル ==
 
   
  +
{{hc|/etc/xdg/Kvantum/kvantum.kvconfig (あるいは ~/.config/Kvantum/kvantum.kvconfig)|2=
統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
 
  +
...
  +
theme=KvLibadwaita
  +
...
  +
}}
   
  +
または、''kvantummanager'' GUI を使用してください。
{{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 ===
+
=== QGtkStyle ===
   
  +
{{Note|QGtkStyle は {{Pkg|qt5-base}} 5.7.0 [https://github.com/qtproject/qtbase/commit/899a815414e95da8d9429a4a4f4d7094e49cfc55] から除去され、{{AUR|qt5-styleplugins}} [https://github.com/qtproject/qtstyleplugins/commit/102da7d50231fc5723dba6e72340bef3d29471aa] に追加されました。}}
Breeze は Plasma 5 のデフォルトの Qt スタイルです。Qt5 のスタイルは {{Pkg|breeze}} パッケージで、Qt4 のスタイルは {{AUR|breeze-kde4}} パッケージでインストールできます。Breeze と似ている GTK+ 2 と GTK+ 3 のテーマは {{Pkg|breeze-gtk}} パッケージでインストールできます。
 
   
  +
{{Warning|GTK 2 のテーマによっては、フォントが透過してしまったりウィジェットがうまく調和しないなどのレンダリング問題が発生することがあります。}}
パッケージをインストールしたら、[[GTK+#設定ツール|GTK+ の設定ツール]]を使って GTK+ のテーマを変更してください。
 
   
  +
この Qt スタイルは GTK 2 を使って全てのコンポーネントをレンダリングすることで、[[GNOME]] やそれと似たような GTK ベースの環境とブレンドします。Qt 4.5 から、このスタイルは Qt に含まれています。{{Pkg|gtk2}} をインストール・設定する必要があります。
KDE Plasma を利用している場合は、KDE システム設定の ''System Settings > Application Style > Configure GNOME/GTK Application Style…'' にて GTK の設定が反映されるようにしてください。
 
もしくは、{{Pkg|kde-gtk-config}} をインストールしてコマンドラインから実行して設定することもできます。
 
   
  +
QGtkStyle は Cinnamon、GNOME、そして Xfce におけるデフォルトの Qt4 スタイルです。また Cinnamon、GNOME、MATE、LXDE、そして Xfce におけるデフォルトの Qt5 スタイルでもあります。他の環境では:
=== Adwaita ===
 
   
  +
* Qt4 の場合、''Qt Configuration'' ({{ic|qtconfig-qt4}}) で有効にすることができます。''Appearance > GUI Style'' から ''GTK'' を選択してください。もしくは、{{ic|/etc/xdg/Trolltech.conf}} (システム全体) あるいは {{ic|~/.config/Trolltech.conf}} (ユーザー個別) ファイルを編集してください:
Adwaita はデフォルトの GNOME のテーマです。GTK+ 3 のテーマは標準で含まれており、GTK+ 2 のテーマは {{Pkg|gnome-themes-extra}} に含まれています。デフォルトでは、Qt アプリケーションには GTK+ 2 のテーマが使われます ([[#QGtkStyle]] を使用)。
 
   
  +
{{hc|~/.config/Trolltech.conf|2=
ネイティブの 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]
  +
style=GTK+
  +
...
  +
}}
   
  +
* Qt 5 の場合、{{AUR|qt5-styleplugins}} をインストールし、次の[[環境変数#グラフィック環境|環境変数]]を設定することで有効にできます: {{ic|1=QT_QPA_PLATFORMTHEME=gtk2}}
デフォルトに設定するときは、Qt 5 では {{Pkg|qt5ct}} パッケージか、{{ic|1=QT_STYLE_OVERRIDE=adwaita}} [[環境変数]]を使います。
 
Qt 4 では ({{AUR|qt4}} パッケージに含まれている) {{ic|qtconfig-qt4}} を使います。
 
   
  +
* Qt 6 の場合、{{AUR|qt6gtk2}} をインストールして {{Pkg|qt6ct}} で ''qt6gtk2'' を選択するか、あるいは 次の環境変数を設定することで有効化できます: {{ic|1=QT_QPA_PLATFORMTHEME=gtk2}}
== ヒントとテクニック ==
 
   
  +
完全な統合のために、設定された [[GTK#テーマ|GTK テーマ]]が GTK 2 と GTK 3 の両方をサポートしていることを確認してください。GTK2 を使用するように Qt を設定したあとにテーマのレンダリングの一貫性が失われてしまった場合、{{AUR|gtk-theme-switch2}} をインストールしテーマを選択してください。優先テーマが {{ic|/usr/share/themes}} にインストールされていることも確認するべきでしょう。アクティブな GTK 2 テーマは {{ic|$XDG_DATA_HOME/themes}} ディレクトリからスキャンされないからです。
=== Qt アプリで GTK+ のアイコンテーマを使う ===
 
  +
  +
=== QGnomePlatform ===
  +
  +
{{Out of date|QGnomePlatform プロジェクトはメンテナンスされておらず、もはや活発に開発されていません。[https://github.com/FedoraQt/QGnomePlatform#readme]}}
  +
  +
この Qt 5 プラットフォームテーマでは、GNOME での外観の設定が Qt アプリケーションに適用されます。{{AUR|qgnomeplatform-qt5-git}} と {{AUR|qgnomeplatform-qt6-git}} でインストールできます。これは Qt スタイル自体は提供せず、代わりに [[#Qt と GTK 両方のためのスタイル|Qt と GTK の両方をサポートするスタイル]]を必要とします。
  +
  +
バージョン 3.20 以降の GNOME では、このプラットフォームテーマは自動的に有効化されます。他のシステムでは、次の[[環境変数#グラフィック環境|環境変数]]を設定することで有効化できます: {{ic|1=QT_QPA_PLATFORMTHEME=gnome}}。
  +
  +
=== QAdwaitaDecorations ===
  +
  +
QAdwaitaDecorations は、Adwaita ライクなクライアントサイド装飾を実装する Qt の装飾プラグインです。これは {{AUR|qadwaitadecorations-qt5}} と {{AUR|qadwaitadecorations-qt6}} でインストールできます。インストール後、{{ic|1=QT_WAYLAND_DECORATION=adwaita}} 環境変数を設定してください。
  +
  +
== ヒントとテクニック ==
   
  +
=== Qt アプリで GTK のアイコンテーマを使う ===
   
  +
[[Plasma]] を使っている場合は、{{Pkg|kde-gtk-config}} を実行して、''KDE システム設定 > アプリケーションスタイル > GTK'' でアイコンテーマを選択してください。
If you are running [[Plasma]], run {{Pkg|kde-gtk-config}} and select the icon-theme under ''System Settings > Application Style > GTK''.
 
   
If you are using [[GNOME]], run {{Pkg|dconf-editor}} and change the {{ic|icon-theme}} key under ''org > gnome > desktop > interface'' to your preferred icon theme.
+
[[GNOME]] を使っている場合は、{{Pkg|dconf-editor}} を実行して、''org > gnome > desktop > interface'' にある {{ic|icon-theme}} キーをあなたの好みのアイコンテーマに変更してください。
   
  +
[[デスクトップ環境]] を使っていない場合、例えば {{Pkg|i3-wm}} で最小限のシステムを動かしているのなら、{{Pkg|dconf-editor}} を[[インストール]]して、上記の説明に従ってアイコンテーマを設定してください。
If you are not using a [[Desktop environment]], for example if you are running a minimal system with {{Pkg|i3-wm}}, [[install]] {{Pkg|dconf-editor}} and set the icon-theme as explained above.
 
  +
また、プロファイルの {{ic|DESKTOP_SESSION}} の値も設定する必要があるかもしれません。望ましい結果を得るために可能な方法については [[環境変数#変数の定義]] を参照してください。
You might also have to set the value of {{ic|DESKTOP_SESSION}} in your profile. See [[Environment variables#Defining variables]] for the possible ways to obtain the desired result.
 
   
  +
{{Note|アイコンテーマが適用されない場合、入力したテーマ名が正しい形式であったかどうかを確認したい場合があります。例えば、現在アクティブなアイコンテーマを QT アプリケーションに適用したい場合、コマンドでその名前の正しい形式を調べることができます:
{{Note| If the icon theme was not applied, you might want to check if the name that you entered of your preferred theme, was in the correct format. For example, if you want to apply the currently active icon theme to your QT applications, you can find the correct format of its name with the command:
 
   
 
{{bc|1=$ awk -F= '/icon-theme/ {print $2}' ~/.gtkrc-2.0}}
 
{{bc|1=$ awk -F= '/icon-theme/ {print $2}' ~/.gtkrc-2.0}}
103行目: 131行目:
 
}}
 
}}
   
=== GTK+ アプリケーションで KDE ファイルダイアログ ===
+
=== KDE Plasma で GTK3 アプリケーションにタバーとフレームを追加する ===
   
  +
Gnome/GTK アプリケーションを KDE/Plasma のタイトルバーとフレームで表示するには、{{AUR|gtk3-nocsd-git}} をインストールしてからウィンドウマネージャを再起動し、新しいライブラリパスをロードしてください。
[http://kde-apps.org/content/show.php?content=36077 KGtk] は LD_PRELOAD を使って GTK+ 2.x のアプリで KDE のファイルダイアログ (開く、保存など) を強制するラッパースクリプトです。KDE を使用していてそのファイルダイアログが GTK+ よりも好ましいときは [[Arch User Repository|AUR]] から {{AUR|kgtk}} をインストールできます。インストールした後、2つの方法で {{ic|kgtk-wrapper}} を使って GTK+ 2.x アプリケーションを実行することが可能です (例として [[GIMP]] を使います):
 
* {{ic|kgtk-wrapper}} を直接呼び出し、引数として GTK+ 2.x バイナリを指定する:
 
:{{bc|$ /usr/bin/kgtk-wrapper gimp}}
 
* {{ic|/usr/share/applications/}} にある KDE の .desktop ショートカットを修正して {{ic|Exec}} に kgtk-wrapper を前に付ける。
 
:例えば [[GIMP]] なら、{{ic|/usr/share/applications/gimp.desktop}} ショートカットファイルを編集して {{ic|1=Exec=gimp-2.8 %U}} を {{ic|1=Exec=kgtk-wrapper gimp-2.8 %U}} に置き換えて下さい。
 
{{Note|GTK+ アプリケーションには KGtk ラッパーと互換性がないものがあります (例: [[Chromium]])。場合によってはラッパーによってアプリケーションがクラッシュします (例: [[Firefox]])。さらに [[KDM]] など他のアプリケーションに影響を与えることもあります ([[Thunderbird]] などと一緒に使っている場合)。}}
 
   
=== 指定のテーマでアプリケーションを起動する ===
+
また、GTK アプリケーションをラッパーで実行することもできます:
  +
$ gtk3-nocsd gedit
   
  +
=== KDE Plasma での GTK アプリのサブピクセルレンダリングを改善 ===
カスタムスタイルを特定の GTK+ 2.x アプリケーションで使用することができます。アプリケーションを指定したテーマで起動するには:
 
GTK2_RC_FILES=/usr/share/themes/QtCurve/gtk-2.0/gtkrc firefox
 
   
  +
こちらを参照 [[フォント設定#LCD フィルター]]
このコマンドでは QtCurve テーマで Firefox が起動します。
 
   
  +
=== KDE Plasma での一貫性のあるファイルダイアログ ===
   
  +
{{Accuracy|GTK は {{ic|1=GTK_USE_PORTAL=1}} を {{ic|1=GDK_DEBUG=portals}} に置き換えたようです。 https://gitlab.gnome.org/GNOME/gtk/-/blob/636827800525770715bba96671edb2fc0234ccc2/NEWS#L34}}
=== KDE における GTK アプリのサブピクセルレンダリングの改善 ===
 
   
  +
同じファイルダイアログを表示させるために、[[XDG デスクトップ ポータル]] を使うことができます。
GTK アプリのサブピクセルレンダリングがネイティブの KDE Qt アプリケーションよりもはっきりとしない場合、以下の行を {{ic|$XDG_CONFIG_HOME/fontconfig/fonts.conf}} に追加してみて下さい ({{ic|<fontconfig>}} タグの間):
 
   
  +
{{Pkg|xdg-desktop-portal}} と {{Pkg|xdg-desktop-portal-kde}} を[[インストール]]し、[[環境変数]] {{ic|1=GTK_USE_PORTAL=1}} を設定してください。
{{bc|<nowiki>
 
<match target="font">
 
<edit mode="assign" name="lcdfilter">
 
<const>lcddefault</const>
 
</edit>
 
</match>
 
</nowiki>}}
 
   
  +
現在、全ての GTK アプリケーションが KDE ファイルダイアログを正しくサポートしているわけではないことに注意してください。
詳しくは[[フォント設定#LCD フィルター]]を参照。
 
   
  +
Electron を使用するアプリケーションは、最低でも Electron 14 を使用していて ([https://github.com/electron/electron/pull/19159 #19159] を参照)、この機能を適切に実装している必要があります。
== トラブルシューティング ==
 
   
  +
[[VSCode]] には問題を修正するためのプルリクエストがあります。[https://github.com/microsoft/vscode/pull/126113 #126113] を参照してください。
=== Qt アプリケーションが QGtkStyle を使わない ===
 
   
  +
[[GIMP]] は portal の使用をまだ実装していません。[https://gitlab.gnome.org/GNOME/gimp/-/issues/1830 バグレポート]を参照してください。
GTK+ が [[#GTK+-Qt エンジン|GTK+-Qt エンジン]]を使っている場合、Qt は QGtkStyle を正しく適用しません。環境変数 {{ic|GTK2_RC_FILES}} に記載された GTK+ 設定ファイルを読み込むことで Qt は GTK+-Qt エンジンが使われるかどうか判定します。環境変数が正しく設定されていないときは、Qt はエンジンを使っているとして仮定し、GTK+ スタイルの ''Clearlooks'' を使うように QGtkStyle を設定し、エラーメッセージを出力します:
 
   
  +
{{Note|依然として多くの GTK アプリケーションが portal を正しく実装していません (放棄されたアプリケーション、あるいは作者が他のタスクに集中している)。少なくとも Dolphin から nautilus へブックマークを同期させることで、そのようなアプリケーションからのファイル選択を単純化させることができます。以下のコマンドを使用してください:
QGtkStyle cannot be used together with the GTK_Qt engine.
 
   
  +
{{bc|1=$ awk -F\" '/<bookmark href="file/ {print $2}' < $HOME/.local/share/user-places.xbel > $HOME/.config/gtk-3.0/bookmarks}}
他にも、シェルから {{ic|qtconfig-qt4}} を起動して GTK+ スタイルを選択するとエラーが表示されることがあります:
 
   
  +
あるいは、{{AUR|bookmarksync-git}} をそのような目的で使用することができます。これを使用すると、ブックマークを編集したり、両方向へ同期させたりできます。
QGtkStyle was unable to detect the current GTK+ theme.
 
  +
}}
   
  +
==== アプリケーション固有の設定 ====
[https://bbs.archlinux.org/viewtopic.php?id&#61;99175&p&#61;1 このスレッド]によれば、この問題を解決するには {{AUR|libgnomeui}} をインストールする必要があります。xfce と同じように、これにはグラフィカルツールでテーマを変更する度にファイルを編集する必要がないという利点もあります。
 
   
  +
環境変数による方法に加えて、一部の GTK アプリケーションには XDG ポータルを強制的に使用させるための独自の設定が存在します:
[[Openbox]] や GNOME 以外の環境を使っているユーザーもこの問題に出くわす可能性があります。問題を解決するには、まず {{ic|.xinitrc}} ファイルに以下を追加してください:
 
{{hc|.xinitrc|<nowiki>
 
...
 
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
 
...
 
</nowiki>}}
 
   
  +
* [[Firefox]] — [[Firefox#XDG Desktop Portal との統合]] を参照
{{Note|
 
* この行を追加するのはウィンドウマネージャを起動する行の前にしてください。
 
* コロンで分割して複数のパスを追加することも可能です。
 
* {{ic|~}} ではなく {{ic|$HOME}} を使うようにしてください。前者では正しくユーザーのホームディレクトリにならないためです。
 
}}
 
   
  +
== トラブルシューティング ==
それから[[#GTK2 スタイル|特定のアプリケーション]]を使うか手動で {{ic|~/.gtkrc-2.0}} を編集して使いたいテーマを指定してください、以下を追加します:
 
{{hc|.gtkrc-2.0|<nowiki>
 
...
 
gtk-theme-name="[name of theme]"
 
...
 
</nowiki>}}
 
   
  +
=== GTK アプリでテーマが使えない ===
ツールによっては {{ic|~/.gtkrc-2.0}} に以下のような include ディレクティブしか挿入しないことがあります:
 
{{hc|.gtkrc-2.0|
 
...
 
include "/usr/share/themes/SomeTheme/gtk-2.0/gtkrc"
 
...
 
}}
 
   
  +
設定したスタイルやテーマエンジンが GTK アプリケーションで表示されない場合は、おそらく GTK の設定ファイルが何らかの理由でロードされていません。次を実行することでシステムが設定ファイルをどこにあると期待しているか確認できます:
これでは QGtkStyle の全てのバージョンで認識されません。この問題は {{ic|~/.gtkrc-2.0}} ファイルに上の例のように {{ic|gtk-theme-name}} を手動で挿入することで解決できます。
 
  +
$ export | grep gtk
   
  +
通常、期待されるファイルは GTK1 は {{ic|~/.gtkrc}}、GTK 2.x は {{ic|~/.gtkrc2.0}} または {{ic|~/.gtkrc2.0-kde}} です。
{{Note|スタイルを変更するアプリケーションは、テーマを変更したときに {{ic|~/.gtkrc-2.0}} ファイルを書き換えます。}}
 
   
  +
=== システムをアップグレードすると SVG (Breeze) アイコンが GTK アプリで使用されない ===
以上の手順が上手く行かないときは、{{AUR|gconf}} をインストールして次のコマンドを実行してください:
 
   
  +
次のコマンドを実行してみてください:
gconftool-2 --set --type string /desktop/gnome/interface/gtk_theme [name of theme]
 
  +
# gdk-pixbuf-query-loaders --update-cache
   
  +
=== Flatpak の Qt アプリに Gnome Adwaita ダークテーマが適用されない ===
さらに、同じアイコンやカーソルを設定したい場合、それらも指定してください。
 
   
  +
テーマを Adwaita-dark に切り替えたが、Flatpak Qt アプリケーションが依然としてライトバージョンのテーマを使用してしまう場合は、必要な KStyle をインストールしてください:
gconftool-2 --set --type string /desktop/gnome/interface/icon_theme Faenza-Dark
 
   
  +
# flatpak install flathub org.kde.KStyle.Adwaita
上のコマンドはアイコンテーマを {{ic|/usr/share/icons/Faenza-Dark}} にある Faenza-Dark に設定します。カーソルテーマを設定するには最初に gconf の値を設定してください。
 
   
  +
=== GTK アプリが KDE システム設定を完全には使用しない ===
gconftool-2 --set --type string /desktop/gnome/peripherals/mouse/cursor_theme Adwaita
 
   
  +
GTK アプリで [[Plasma]] 設定をさらに統合するには、{{Pkg|gnome-settings-daemon}}、{{Pkg|gsettings-desktop-schemas}}、および {{Pkg|gsettings-qt}} を[[インストール]]する必要があるかもしれません。これにより、GTK に適切な Qt バインディングが提供されます。
それから以下の内容で {{ic|/usr/share/icons/default/index.theme}} ファイルを作成してください:
 
   
  +
=== kde-gtk-config の "システム設定 > アプリケーションスタイル > GTK" メニューが無い ===
[Icon Theme]
 
Inherits=Adwaita
 
   
  +
{{pkg|kde-gtk-config}} が壊れてシステム設定から "アプリケーションスタイル > GTK" メニューが無くなった場合、{{pkg|lxappearance}} や {{Pkg|nwg-look}} のような [[GTK#設定ツール|GTK 設定ツール]]を選ぶと GTK 2 と GTK 3 のスタイルを構成できるようになります。
=== GTK+ アプリでテーマが使えない ===
 
  +
{{pkg|lxappearance}} は LXDE プロジェクト由来ですが、デスクトップに依存していません (つまり、LXDE デスクトップの他のパーツを必要としません)。{{Pkg|nwg-look}} は GTK3 設定エディタであり、wlroots ベースの Wayland 環境で適切に動作するように設計されています。nwg-look のルックアンドフィールは LXAppearance による影響を強く受けていますが、いくつかの不便さからユーザを開放することを意図しています。
   
  +
=== Dolphin のテーマが Nautilus と良くマッチしない ===
設定したスタイルやテーマエンジンが GTK アプリケーションで表示されない場合は、おそらく GTK+ の設定ファイルが何らかの理由でロードされていません。次を実行することでシステムが設定ファイルをどこにあると期待しているか確認できます:
 
$ export | grep gtk
 
   
  +
[[Dolphin#フォルダビューの背景色がシステムのテーマと合わない|フォルダビューの背景色がシステムのテーマと合わない]] のセクションで、変な色使いの対処法を確認してください。
通常は期待されるファイルは GTK1 は {{ic|~/.gtkrc}}、GTK+ 2.x は {{ic|~/.gtkrc2.0}} または {{ic|~/.gtkrc2.0-kde}} です。
 
   
=== システムをアップグレードすると SVG (Breeze) アイコンが GTK+ アプリで使用されない ===
+
=== KDE Plasma XDG Desktop Portal が使用されない ===
   
  +
[[XDG デスクトップ ポータル#デスクトップ環境を強制する]] 章に書かれてあることに従い、{{ic|1=XDG_CURRENT_DESKTOP=KDE}} 環境変数を設定してください。
次のコマンドを実行して、gdk-pixbuf のキャッシュ情報を更新してみてください [https://developer.gnome.org/gdk-pixbuf/stable/gdk-pixbuf-query-loaders.html]:
 
  +
# gdk-pixbuf-query-loaders --update-cache
 
  +
{{TranslationStatus|Uniform look for Qt and GTK applications|2024-02-22|800112}}

2024年2月22日 (木) 17:49時点における最新版

関連記事

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 スタイルであり、breeze パッケージでインストールできます。GTK 2 と GTK 3 のテーマは breeze-gtk パッケージでインストールできます。

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

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

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

テーマエンジン

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

Kvantum

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

Kvantum はプラットフォームテーマではなくスタイルとして扱われます。環境変数を使って Kvantum を全 qt アプリケーションに対して設定するには、QT_STYLE_OVERRIDE=kvantum を設定してください。

テーマ設定

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

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

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

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

ヒントとテクニック

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 のタイトルバーとフレームで表示するには、gtk3-nocsd-gitAUR をインストールしてからウィンドウマネージャを再起動し、新しいライブラリパスをロードしてください。

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

$ gtk3-nocsd gedit

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

Flatpak の Qt アプリに Gnome Adwaita ダークテーマが適用されない

テーマを Adwaita-dark に切り替えたが、Flatpak Qt アプリケーションが依然としてライトバージョンのテーマを使用してしまう場合は、必要な KStyle をインストールしてください:

# flatpak install flathub org.kde.KStyle.Adwaita

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 環境変数を設定してください。

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