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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「Tips and tricks」を「ヒントとテクニック」に置換)
(同期)
 
(7人の利用者による、間の41版が非表示)
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 両方のためのスタイル ==
  +
  +
統合のために、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 使うことができなくなっています]。}}
  +
  +
=== 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]}}
  +
  +
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 スタイルをデフォルトとして設定するには:
  +
  +
* 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=
  +
...
  +
[Qt]
  +
style=adwaita
  +
...
  +
}}
   
 
== テーマエンジン ==
 
== テーマエンジン ==
  +
テーマエンジンは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API として考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。
 
  +
''テーマエンジン''は、1つあるいは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API と考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。
  +
  +
=== Kvantum ===
  +
  +
Kvantum ({{Pkg|kvantum}}) は、Adapta、Arc、Ambiance、Libadwaita、そして Materia などいくつかの人気な GTK テーマのバージョンを含む、様々な組み込みスタイルが同梱されている Qt5 用のカスタマイズ可能な SVG ベースのテーマエンジンです。その他のテーマは [https://store.kde.org/browse?cat=123 KDE Store で]入手可能です。
  +
  +
Kvantum はプラットフォームテーマではなくスタイルとして扱われます。環境変数を使って Kvantum を全 qt アプリケーションに対して設定するには、{{ic|1=QT_STYLE_OVERRIDE=kvantum}} を設定してください。
  +
  +
==== テーマ設定 ====
  +
  +
([https://github.com/GabePoel/KvLibadwaita KvLibadwaita] などの) Kvantum の[https://github.com/tsujan/Kvantum/blob/master/Kvantum/doc/Theme-Config.pdf テーマバリアントを設定する]には、設定ファイルを編集してください:
  +
  +
{{hc|/etc/xdg/Kvantum/kvantum.kvconfig (あるいは ~/.config/Kvantum/kvantum.kvconfig)|2=
  +
...
  +
theme=KvLibadwaita
  +
...
  +
}}
  +
  +
または、''kvantummanager'' GUI を使用してください。
   
 
=== QGtkStyle ===
 
=== QGtkStyle ===
   
{{Note|QGtkStyle は {{Pkg|qt5-base}} Qt 5.7.0 [https://github.com/qtproject/qtbase/commit/899a815414e95da8d9429a4a4f4d7094e49cfc55] から除去され、 {{Pkg|qt5-styleplugins}} [https://github.com/qtproject/qtstyleplugins/commit/102da7d50231fc5723dba6e72340bef3d29471aa] に追加されました。}}
+
{{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] に追加されました。}}
   
{{Warning|GTK+ 2 のテーマによっては、フォントが透過してしまったりウィジェットがうまく調和しないなどのレンダリング問題が発生することがあります。}}
+
{{Warning|GTK 2 のテーマによっては、フォントが透過してしまったりウィジェットがうまく調和しないなどのレンダリング問題が発生することがあります。}}
   
この Qt スタイルは GTK+ 2 を使って全てのコンポーネントを表示することで [[GNOME]] などの GTK+ ベースの環境とブレンドします。Qt 4.5 から、このスタイルは Qt に含まれているようになっています。{{Pkg|gtk2}} をインストール・設定してください
+
この Qt スタイルは GTK 2 を使って全てのコンポーネントをレンダリングすることで[[GNOME]] やそれと似たような GTK ベースの環境とブレンドします。Qt 4.5 から、このスタイルは Qt に含まれています。{{Pkg|gtk2}} をインストール・設定する必要があります
   
QGtkStyle は Cinnamon, GNOME, Xfce におけるデフォルトの Qt4 スタイルです。また Cinnamon, GNOME, MATE, LXDE, Xfce におけるデフォルトの Qt5 スタイルでもあります。他の環境では:
+
QGtkStyle は CinnamonGNOME、そして Xfce におけるデフォルトの Qt4 スタイルです。また CinnamonGNOMEMATELXDE、そして Xfce におけるデフォルトの Qt5 スタイルでもあります。他の環境では:
   
* Qt4 の場合、''Qt Configuration'' ({{ic|qtconfig-qt4}}) で有効にすることができます。''Appearance > GUI Style'' から ''GTK+'' を選択してください。もしくは、{{ic|/etc/xdg/Trolltech.conf}} (システム全体) あるいは {{ic|~/.config/Trolltech.conf}} (ユーザー個別) ファイルを編集してください:
+
* Qt4 の場合、''Qt Configuration'' ({{ic|qtconfig-qt4}}) で有効にすることができます。''Appearance > GUI Style'' から ''GTK'' を選択してください。もしくは、{{ic|/etc/xdg/Trolltech.conf}} (システム全体) あるいは {{ic|~/.config/Trolltech.conf}} (ユーザー個別) ファイルを編集してください:
   
 
{{hc|~/.config/Trolltech.conf|2=
 
{{hc|~/.config/Trolltech.conf|2=
48行目: 96行目:
 
}}
 
}}
   
* Qt 5 の場合、{{Pkg|qt5-styleplugins}} をインストールし、次の[[環境変数#グラフィカルアプリケーション|環境変数]]を設定することで有効にできます: {{ic|1=QT_QPA_PLATFORMTHEME='gtk2'}}
+
* Qt 5 の場合、{{AUR|qt5-styleplugins}} をインストールし、次の[[環境変数#グラフィック環境|環境変数]]を設定することで有効にできます: {{ic|1=QT_QPA_PLATFORMTHEME=gtk2}}
   
  +
* Qt 6 の場合、{{AUR|qt6gtk2}} をインストールして {{Pkg|qt6ct}} で ''qt6gtk2'' を選択するか、あるいは 次の環境変数を設定することで有効化できます: {{ic|1=QT_QPA_PLATFORMTHEME=gtk2}}
完全な統合をするには、GTK+ 2 と GTK+ 3 の両方をサポートしている [[GTK+#テーマ|GTK+ テーマ]]を設定する必要があります。
 
   
  +
完全な統合のために、設定された [[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 ===
統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
 
   
  +
{{Out of date|QGnomePlatform プロジェクトはメンテナンスされておらず、もはや活発に開発されていません。[https://github.com/FedoraQt/QGnomePlatform#readme]}}
{{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 使うことができなくなっています] 。}}
 
   
  +
この Qt 5 プラットフォームテーマでは、GNOME での外観の設定が Qt アプリケーションに適用されます。{{AUR|qgnomeplatform-qt5-git}} と {{AUR|qgnomeplatform-qt6-git}} でインストールできます。これは Qt スタイル自体は提供せず、代わりに [[#Qt と GTK 両方のためのスタイル|Qt と GTK の両方をサポートするスタイル]]を必要とします。
=== Breeze ===
 
   
  +
バージョン 3.20 以降の GNOME では、このプラットフォームテーマは自動的に有効化されます。他のシステムでは、次の[[環境変数#グラフィック環境|環境変数]]を設定することで有効化できます: {{ic|1=QT_QPA_PLATFORMTHEME=gnome}}。
Breeze は Plasma 5 のデフォルトの Qt スタイルです。Qt5 のスタイルは {{Pkg|breeze}} パッケージで、Qt4 のスタイルは {{Pkg|breeze-kde4}} パッケージでインストールできます。Breeze と似ている GTK+ 2 と GTK+ 3 のテーマは {{Pkg|breeze-gtk}} パッケージでインストールできます。
 
   
  +
=== QAdwaitaDecorations ===
パッケージをインストールしたら、[[GTK+#設定ツール|GTK+ の設定ツール]]を使って GTK+ のテーマを変更してください。
 
   
  +
QAdwaitaDecorations は、Adwaita ライクなクライアントサイド装飾を実装する Qt の装飾プラグインです。これは {{AUR|qadwaitadecorations-qt5}} と {{AUR|qadwaitadecorations-qt6}} でインストールできます。インストール後、{{ic|1=QT_WAYLAND_DECORATION=adwaita}} 環境変数を設定してください。
=== Adwaita ===
 
   
  +
== ヒントとテクニック ==
Adwaita はデフォルトの GNOME のテーマです。{{Pkg|gnome-themes-standard}} パッケージでインストールでき、GTK+ 2 と GTK+ 3 のテーマが含まれています。デフォルトでは、Qt アプリケーションには GTK+ 2 のテーマが使われます ([[#QGtkStyle]] を使用)。
 
   
  +
=== Qt アプリで GTK のアイコンテーマを使う ===
ネイティブの Qt テーマを GTK+ 3 の Adwaita のようにしたいときは [https://github.com/MartinBriza/adwaita-qt adwaita-qt] を見て下さい。Qt 5 バージョンは {{Aur|adwaita-qt5}} パッケージで、Qt 4 バージョンは {{Aur|adwaita-qt4}} パッケージで[[インストール]]できます。
 
   
  +
[[Plasma]] を使っている場合は、{{Pkg|kde-gtk-config}} を実行して、''KDE システム設定 > アプリケーションスタイル > GTK'' でアイコンテーマを選択してください。
デフォルトに設定するときは、Qt 5 では {{Pkg|qt5ct}} を、Qt 4 では ({{Pkg|qt4}} パッケージに含まれている) {{ic|qtconfig-qt4}} を使います。
 
   
  +
[[GNOME]] を使っている場合は、{{Pkg|dconf-editor}} を実行して、''org > gnome > desktop > interface'' にある {{ic|icon-theme}} キーをあなたの好みのアイコンテーマに変更してください。
== ヒントとテクニック ==
 
   
  +
[[デスクトップ環境]] を使っていない場合、例えば {{Pkg|i3-wm}} で最小限のシステムを動かしているのなら、{{Pkg|dconf-editor}} を[[インストール]]して、上記の説明に従ってアイコンテーマを設定してください。
=== GTK+ アプリケーションで KDE ファイルダイアログ ===
 
  +
また、プロファイルの {{ic|DESKTOP_SESSION}} の値も設定する必要があるかもしれません。望ましい結果を得るために可能な方法については [[環境変数#変数の定義]] を参照してください。
   
  +
{{Note|アイコンテーマが適用されない場合、入力したテーマ名が正しい形式であったかどうかを確認したい場合があります。例えば、現在アクティブなアイコンテーマを QT アプリケーションに適用したい場合、コマンドでその名前の正しい形式を調べることができます:
[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]] などと一緒に使っている場合)。}}
 
   
  +
{{bc|1=$ awk -F= '/icon-theme/ {print $2}' ~/.gtkrc-2.0}}
=== 指定のテーマでアプリケーションを起動する ===
 
   
  +
}}
カスタムスタイルを特定の GTK+ 2.x アプリケーションで使用することができます。アプリケーションを指定したテーマで起動するには:
 
GTK2_RC_FILES=/usr/share/themes/QtCurve/gtk-2.0/gtkrc firefox
 
   
  +
=== KDE Plasma で GTK3 アプリケーションにタイトルバーとフレームを追加する ===
このコマンドでは QtCurve テーマで Firefox が起動します。
 
   
  +
Gnome/GTK アプリケーションを KDE/Plasma のタイトルバーとフレームで表示するには、{{AUR|gtk3-nocsd-git}} をインストールしてからウィンドウマネージャを再起動し、新しいライブラリパスをロードしてください。
=== Qt アプリで GTK+ のアイコンテーマを使う ===
 
   
  +
また、GTK アプリケーションをラッパーで実行することもできます:
[[KDE]] を使っている場合、{{Pkg|kde-gtk-config}} をインストールして ''System Settings > Application Style > GTK'' からアイコンテーマを選択してください。
 
  +
$ gtk3-nocsd gedit
   
  +
=== KDE Plasma での GTK アプリのサブピクセルレンダリングを改善 ===
[[GNOME]] を使っていない場合は、{{ic|gconf-editor}} を実行して ''desktop > gnome > interface'' から {{ic|icon_theme}} キーを設定にあわせて変更してください。GNOME を使っていないなら {{ic|~/.xinitrc}} で {{ic|1=export DESKTOP_SESSION=gnome}} を設定する必要があることもあります。[[LightDM]] を使っている場合は {{ic|/etc/environment}} に設定してください。
 
   
  +
こちらを参照 [[フォント設定#LCD フィルター]]
=== KDE における GTK アプリのサブピクセルレンダリングの改善 ===
 
   
  +
=== KDE Plasma での一貫性のあるファイルダイアログ ===
GTK アプリのサブピクセルレンダリングがネイティブの KDE Qt アプリケーションよりもはっきりとしない場合、以下の行を {{ic|$XDG_CONFIG_HOME/fontconfig/fonts.conf}} に追加してみて下さい ({{ic|<fontconfig>}} タグの間):
 
   
  +
{{Accuracy|GTK は {{ic|1=GTK_USE_PORTAL=1}} を {{ic|1=GDK_DEBUG=portals}} に置き換えたようです。 https://gitlab.gnome.org/GNOME/gtk/-/blob/636827800525770715bba96671edb2fc0234ccc2/NEWS#L34}}
{{bc|<nowiki>
 
<match target="font">
 
<edit mode="assign" name="lcdfilter">
 
<const>lcddefault</const>
 
</edit>
 
</match>
 
</nowiki>}}
 
   
  +
同じファイルダイアログを表示させるために、[[XDG デスクトップ ポータル]] を使うことができます。
詳しくは[[フォント設定#LCD フィルター]]を参照。
 
   
  +
{{Pkg|xdg-desktop-portal}} と {{Pkg|xdg-desktop-portal-kde}} を[[インストール]]し、[[環境変数]] {{ic|1=GTK_USE_PORTAL=1}} を設定してください。
== トラブルシューティング ==
 
   
  +
現在、全ての GTK アプリケーションが KDE ファイルダイアログを正しくサポートしているわけではないことに注意してください。
=== gtk-qt-engine が OpenOffice で動かない ===
 
   
  +
Electron を使用するアプリケーションは、最低でも Electron 14 を使用していて ([https://github.com/electron/electron/pull/19159 #19159] を参照)、この機能を適切に実装している必要があります。
OpenOffice に GTK+-Qt エンジンで選択した Qt テーマを使わせるには次の行を {{ic|/etc/profile}} に (root で) 追加する必要があります:
 
export SAL_GTK_USE_PIXMAPPAINT=1
 
   
  +
[[VSCode]] には問題を修正するためのプルリクエストがあります。[https://github.com/microsoft/vscode/pull/126113 #126113] を参照してください。
また、''KDE4 System Settings'' の ''Lost and Found > GTK Styles and Fonts'' で "Use my KDE style in GTK applications" を選択してください。
 
   
  +
[[GIMP]] は portal の使用をまだ実装していません。[https://gitlab.gnome.org/GNOME/gimp/-/issues/1830 バグレポート]を参照してください。
=== Qt アプリケーションが QGtkStyle を使わない ===
 
   
  +
{{Note|依然として多くの GTK アプリケーションが portal を正しく実装していません (放棄されたアプリケーション、あるいは作者が他のタスクに集中している)。少なくとも Dolphin から nautilus へブックマークを同期させることで、そのようなアプリケーションからのファイル選択を単純化させることができます。以下のコマンドを使用してください:
GTK+ が [[#GTK+-Qt エンジン|GTK+-Qt エンジン]]を使っている場合、Qt は QGtkStyle を正しく適用しません。環境変数 {{ic|GTK2_RC_FILES}} に記載された GTK+ 設定ファイルを読み込むことで Qt は GTK+-Qt エンジンが使われるかどうか判定します。環境変数が正しく設定されていないときは、Qt はエンジンを使っているとして仮定し、GTK+ スタイルの ''Clearlooks'' を使うように QGtkStyle を設定し、エラーメッセージを出力します:
 
   
  +
{{bc|1=$ awk -F\" '/<bookmark href="file/ {print $2}' < $HOME/.local/share/user-places.xbel > $HOME/.config/gtk-3.0/bookmarks}}
QGtkStyle cannot be used together with the GTK_Qt engine.
 
   
  +
あるいは、{{AUR|bookmarksync-git}} をそのような目的で使用することができます。これを使用すると、ブックマークを編集したり、両方向へ同期させたりできます。
他にも、シェルから {{ic|qtconfig-qt4}} を起動して GTK+ スタイルを選択するとエラーが表示されることがあります:
 
  +
}}
   
  +
==== アプリケーション固有の設定 ====
QGtkStyle was unable to detect the current GTK+ theme.
 
   
  +
環境変数による方法に加えて、一部の GTK アプリケーションには XDG ポータルを強制的に使用させるための独自の設定が存在します:
[https://bbs.archlinux.org/viewtopic.php?id&#61;99175&p&#61;1 このスレッド]によれば、この問題を解決するには {{AUR|libgnomeui}} をインストールする必要があります。xfce と同じように、これにはグラフィカルツールでテーマを変更する度にファイルを編集する必要がないという利点もあります。
 
   
  +
* [[Firefox]] — [[Firefox#XDG Desktop Portal との統合]] を参照
[[Openbox]] や GNOME 以外の環境を使っているユーザーもこの問題に出くわす可能性があります。問題を解決するには、まず {{ic|.xinitrc}} ファイルに以下を追加してください:
 
{{hc|.xinitrc|<nowiki>
 
...
 
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
 
...
 
</nowiki>}}
 
   
  +
== トラブルシューティング ==
{{Note|
 
* この行を追加するのはウィンドウマネージャを起動する行の前にしてください。
 
* コロンで分割して複数のパスを追加することも可能です。
 
* {{ic|~}} ではなく {{ic|$HOME}} を使うようにしてください。前者では正しくユーザーのホームディレクトリにならないためです。
 
}}
 
   
  +
=== GTK アプリでテーマが使えない ===
それから[[#GTK2 スタイル|特定のアプリケーション]]を使うか手動で {{ic|~/.gtkrc-2.0}} を編集して使いたいテーマを指定してください、以下を追加します:
 
{{hc|.gtkrc-2.0|<nowiki>
 
...
 
gtk-theme-name="[name of theme]"
 
...
 
</nowiki>}}
 
   
  +
設定したスタイルやテーマエンジンが GTK アプリケーションで表示されない場合は、おそらく GTK の設定ファイルが何らかの理由でロードされていません。次を実行することでシステムが設定ファイルをどこにあると期待しているか確認できます:
ツールによっては {{ic|~/.gtkrc-2.0}} に以下のような include ディレクティブしか挿入しないことがあります:
 
  +
$ export | grep gtk
{{hc|.gtkrc-2.0|
 
...
 
include "/usr/share/themes/SomeTheme/gtk-2.0/gtkrc"
 
...
 
}}
 
   
  +
通常、期待されるファイルは GTK1 は {{ic|~/.gtkrc}}、GTK 2.x は {{ic|~/.gtkrc2.0}} または {{ic|~/.gtkrc2.0-kde}} です。
これでは QGtkStyle の全てのバージョンで認識されません。この問題は {{ic|~/.gtkrc-2.0}} ファイルに上の例のように {{ic|gtk-theme-name}} を手動で挿入することで解決できます。
 
   
  +
=== システムをアップグレードすると SVG (Breeze) アイコンが GTK アプリで使用されない ===
{{Note|スタイルを変更するアプリケーションは、テーマを変更したときに {{ic|~/.gtkrc-2.0}} ファイルを書き換えます。}}
 
   
以上の手順が上手く行かないときは、{{Pkg|gconf}} をインストールして次のコマンドを実行してください:
+
次のコマンドを実行してみてください:
  +
# gdk-pixbuf-query-loaders --update-cache
   
  +
=== Flatpak の Qt アプリに Gnome Adwaita ダークテーマが適用されない ===
gconftool-2 --set --type string /desktop/gnome/interface/gtk_theme [name of theme]
 
   
さらに、同じアイやカソル設定たい場合、それらも指定してください
+
テーマを Adwaita-dark 切り替えたがFlatpak Qt プリケーションが依然としてラトバージョのテ使用てしまう場合必要な KStyle をインストールしてください:
   
  +
# flatpak install flathub org.kde.KStyle.Adwaita
gconftool-2 --set --type string /desktop/gnome/interface/icon_theme Faenza-Dark
 
   
  +
=== GTK アプリが KDE システム設定を完全には使用しない ===
上のコマンドはアイコンテーマを {{ic|/usr/share/icons/Faenza-Dark}} にある Faenza-Dark に設定します。カーソルテーマを設定するには最初に gconf の値を設定してください。
 
   
  +
GTK アプリで [[Plasma]] 設定をさらに統合するには、{{Pkg|gnome-settings-daemon}}、{{Pkg|gsettings-desktop-schemas}}、および {{Pkg|gsettings-qt}} を[[インストール]]する必要があるかもしれません。これにより、GTK に適切な Qt バインディングが提供されます。
gconftool-2 --set --type string /desktop/gnome/peripherals/mouse/cursor_theme Adwaita
 
   
  +
=== kde-gtk-config の "システム設定 > アプリケーションスタイル > GTK" メニューが無い ===
それから以下の内容で {{ic|/usr/share/icons/default/index.theme}} ファイルを作成してください:
 
   
  +
{{pkg|kde-gtk-config}} が壊れてシステム設定から "アプリケーションスタイル > GTK" メニューが無くなった場合、{{pkg|lxappearance}} や {{Pkg|nwg-look}} のような [[GTK#設定ツール|GTK 設定ツール]]を選ぶと GTK 2 と GTK 3 のスタイルを構成できるようになります。
[Icon Theme]
 
  +
{{pkg|lxappearance}} は LXDE プロジェクト由来ですが、デスクトップに依存していません (つまり、LXDE デスクトップの他のパーツを必要としません)。{{Pkg|nwg-look}} は GTK3 設定エディタであり、wlroots ベースの Wayland 環境で適切に動作するように設計されています。nwg-look のルックアンドフィールは LXAppearance による影響を強く受けていますが、いくつかの不便さからユーザを開放することを意図しています。
Inherits=Adwaita
 
   
=== GTK+ アプリでテーマが使えない ===
+
=== Dolphin テーマが Nautilus と良くマッチしない ===
   
  +
[[Dolphin#フォルダビューの背景色がシステムのテーマと合わない|フォルダビューの背景色がシステムのテーマと合わない]] のセクションで、変な色使いの対処法を確認してください。
設定したスタイルやテーマエンジンが GTK アプリケーションで表示されない場合は、おそらく GTK+ の設定ファイルが何らかの理由でロードされていません。次を実行することでシステムが設定ファイルをどこにあると期待しているか確認できます:
 
  +
$ export | grep gtk
 
  +
=== KDE Plasma の XDG Desktop Portal が使用されない ===
   
  +
[[XDG デスクトップ ポータル#デスクトップ環境を強制する]] 章に書かれてあることに従い、{{ic|1=XDG_CURRENT_DESKTOP=KDE}} 環境変数を設定してください。
通常は期待されるファイルは GTK1 は {{ic|~/.gtkrc}}、GTK+ 2.x は {{ic|~/.gtkrc2.0}} または {{ic|~/.gtkrc2.0-kde}} です。
 
   
  +
{{TranslationStatus|Uniform look for Qt and GTK applications|2024-02-22|800112}}
新しいバージョンの {{AUR|gtk-qt-engine}}{{Broken package link|{{aur-mirror|gtk-qt-engine}}}} は {{ic|~/.gtkrc2.0-kde}} を使って {{ic|~/.kde/env/gtk-qt-engine.rc.sh}} で export する変数を設定しています。最近 ''gtk-qt-engine'' を削除していて GTK+ テーマを設定しようとしているのであれば {{ic|~/.kde/env/gtk-qt-engine.rc.sh}} も削除して再起動して下さい。これによって GTK+ の外観の設定が {{ic|~/.gtkrc2.0-kde}} ファイルではなく標準的な {{ic|~/.gtkrc2.0}} になります。
 

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 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。