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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(1版 をインポートしました)
(→‎Kvantum: 英語版より追加)
(4人の利用者による、間の15版が非表示)
1行目: 1行目:
 
[[Category:ウィジェットツールキット]]
 
[[Category:ウィジェットツールキット]]
 
[[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]]
+
[[es:Uniform look for Qt and GTK applications]]
[[it: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]]
+
[[uk:Uniform look for Qt and GTK applications]]
[[zh-CN:Uniform Look for Qt and GTK Applications]]
+
[[zh-hans:Uniform look for Qt and GTK applications]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related2|GTK+|GTK+}}
+
{{Related|GTK+}}
{{Related2|Qt|Qt}}
+
{{Related|Qt}}
 
{{Related articles end}}
 
{{Related articles end}}
[[Qt|Qt]] と [[GTK+|GTK+]] ベースのプログラムは異なるウィジェットツールキットを使ってグラフィカルユーザーインターフェースを表示しています。それぞれにデフォルトで異なるテーマ・スタイル・アイコンセットが存在するため、"ルックアンドフィール"は著しく乖離してしまいます。この記事ではデスクトップエクスペリエンスを統合するために Qt と GTK+ のアプリケーションの外観を似たようにする方法を説明しています。
+
[[Qt]] と [[GTK+]] ベースのプログラムは異なるウィジェットツールキットを使ってグラフィカルユーザーインターフェースを表示しています。それぞれにデフォルトで異なるテーマ・スタイル・アイコンセットが存在するため、"ルックアンドフィール"は著しく乖離してしまいます。この記事ではデスクトップエクスペリエンスを統合するために Qt と GTK+ のアプリケーションの外観を似たようにする方法を説明しています。
  +
  +
== 概要 ==
   
 
2つのツールキットで同じような見た目を表示するには以下を修正する必要が出てきます:
 
2つのツールキットで同じような見た目を表示するには以下を修正する必要が出てきます:
21行目: 23行目:
 
外観の統一のために取れる方法は様々です:
 
外観の統一のために取れる方法は様々です:
   
  +
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる。
 
* 下で説明しているツールを使って [[#Qt と GTK+ 両方のためのスタイル|GTK+ と Qt のスタイル]]を別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。
 
* 下で説明しているツールを使って [[#Qt と GTK+ 両方のためのスタイル|GTK+ と Qt のスタイル]]を別個に修正し、同じような見た目のテーマ (スタイル・カラー・アイコン・カーソル・フォント) を選択する。
* 特殊な[[#テーマエンジン|テーマエンジン]]を使って、他のグラフィカルツールキットの見た目をメインのツールキットに合うように仲介させる:
 
** KDE 4 デスクトップ環境を使っている場合、GTK-Qt エンジンが利用可能です。GTK+ の設定ファイルが自動的に更新され GTK+ の外観が Qt に類するようになります。
 
** 同じく [[Trinity]] デスクトップ環境を使っている場合、GTK-Qt と GTK3-Qt エンジンが利用可能です。
 
** 他のデスクトップ環境を使っている場合、(Qt で作られた) QGtkStyle エンジンを選ぶことができます。Qt アプリに強制的に GTK+ 2.x テーマを使わせます。
 
   
  +
== テーマエンジン ==
GTK+ 3.x ツールキットも使っているときは、[[GTK+#GTK+ 3.x|GTK+ 3.x]] の wiki 記事にある GTK3 を GTK+ 2.x テーマのように見せる方法を調べて下さい。
 
  +
テーマエンジンは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API として考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。
   
  +
=== QGtkStyle ===
{{Note|ローカルテーマの変更は通常 root で実行されるアプリケーションには適用されません。[[GTK+#設定プログラム|GTK+#設定プログラム]] を参照。}}
 
   
  +
{{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] に追加されました。}}
== Qt と GTK+ 両方のためのスタイル ==
 
   
  +
{{Warning|GTK+ 2 のテーマによっては、フォントが透過してしまったりウィジェットがうまく調和しないなどのレンダリング問題が発生することがあります。}}
統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
 
   
  +
この Qt スタイルは GTK+ 2 を使って全てのコンポーネントを表示することで [[GNOME]] などの GTK+ ベースの環境とブレンドします。Qt 4.5 から、このスタイルは Qt に含まれているようになっています。{{Pkg|gtk2}} をインストール・設定してください。
=== KDE4 Oxygen ===
 
   
[http://www.oxygen-icons.org/ Oxygen]KDE4 にデフォルトで入っている Qt スタイルです。以下で説明しているよう外観を似させ方法が様々に存在します。
+
QGtkStyleCinnamon, 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}} (ユーザー個別) ファイルを編集してください:
==== oxygen-gtk ====
 
   
  +
{{hc|~/.config/Trolltech.conf|2=
[http://kde-look.org/content/show.php/?content=136216 oxygen-gtk] は Oxygen の開発者による Oxygen Qt スタイルの GTK+ ポートです。他とは異なり、ネイティブの GTK+ スタイルなので Qt には依存しておらず (Qt から GTK+ に変換するエンジンを使っています) ハードコードされたピクセルマップを使ってウィジェットの外観をレンダリングしません。このスタイルは KDE で動作している GTK+ 2.x/3.x と Qt ベースのアプリケーションで外観を統一することを主たる目的としており、他のデスクトップ環境でも上手く動くスタンドアロンの、見た目が良い GTK+ テーマを作ることを第二の目的としています。
 
  +
...
 
  +
[Qt]
oxygen-gtk は GTK+ 2.x と GTK+ 3.x で別れており、[[official Repositories|公式リポジトリ]]から {{Pkg|oxygen-gtk2}} もしくは {{Pkg|oxygen-gtk3}} で[[Pacman|インストール]]が可能です。
 
  +
style=GTK+
 
  +
...
{{Note|Before KDE 4.10, you needed to create the file {{ic|~/.kde4/share/config/gtkrc-2.0}}, or let it automatically create like described below. But that is actually counter-productive with KDE 4.10’s oxygen-gtk, and you should delete this file after upgrading to prevent it from messing with your colors. Cleanup-removal of {{ic|~/.kde4/share/config/gtkrc}} might be necessary, too.}}
 
 
===== 自動設定 =====
 
 
GTK+ テーマを変更することができる[[#それぞれのツールキットのスタイルを変更する|専用のアプリケーション]]が公式リポジトリからインストールできます。
 
 
{{Pkg|kde-gtk-config}} をインストールしても良いでしょう。インストールした後、''システム設定 > アプリケーションの外観 > GTK の設定'' から設定できます。これを使うことで GTK+ 2.x と GTK+ 3.x 両方のアプリケーションのルックアンドフィールを設定でき、KDE のアドオンインストーラ (Get Hot New Stuff) と統合され、他の GTK+ テーマをダウンロード・インストールすることもできます。
 
 
===== 手動設定 =====
 
 
GTK+ のテーマを手動で '''oxygen-gtk''' に変更するには、以下の内容でファイル {{ic|~/.kde4/share/config/gtkrc-2.0}} を作成する必要があります:
 
{{hc|~/.kde4/share/config/gtkrc-2.0|<nowiki>
 
include "/usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc"
 
 
style "user"
 
{
 
fg[NORMAL] = "#1b1918"
 
bg[NORMAL] = "#d5d1cf"
 
text[NORMAL] = "#181615"
 
base[NORMAL] = "#ffffff"
 
fg[ACTIVE] = "#1b1918"
 
bg[ACTIVE] = "#d5d1cf"
 
text[ACTIVE] = "#181615"
 
base[ACTIVE] = "#ffffff"
 
fg[PRELIGHT] = "#1b1918"
 
bg[PRELIGHT] = "#d5d1cf"
 
text[PRELIGHT] = "#ffffff"
 
base[PRELIGHT] = "#43ace8"
 
fg[SELECTED] = "#1b1918"
 
bg[SELECTED] = "#d5d1cf"
 
text[SELECTED] = "#ffffff"
 
base[SELECTED] = "#43ace8"
 
fg[INSENSITIVE] = "#8d8a88"
 
bg[INSENSITIVE] = "#ccc7c5"
 
text[INSENSITIVE] = "#a6a5a5"
 
base[INSENSITIVE] = "#f4f4f4"
 
GtkTreeView::odd_row_color="#ffffff"
 
GtkTreeView::even_row_color="#f8f7f6"
 
}
 
 
widget_class "*" style "user"
 
 
style "tooltips"
 
{
 
bg[NORMAL] = "#bedfff"
 
fg[NORMAL] = "#252321"
 
}
 
 
widget "gtk-tooltips" style "tooltips"
 
#gtk-theme-name="qt4"
 
gtk-font-name="Sans Serif 9"
 
gtk-icon-theme-name="gk4ico"
 
gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-button=22,22:gtk-large-toolbar=22,22"
 
</nowiki>
 
 
}}
 
}}
   
  +
* Qt 5 の場合、{{Pkg|qt5-styleplugins}} をインストールし、次の[[環境変数#グラフィカルアプリケーション|環境変数]]を設定することで有効にできます: {{ic|1=QT_QPA_PLATFORMTHEME='gtk2'}}。
そしてシンボリックリンク {{ic|~/.kde4/share/config/gtkrc}} を作成してください:
 
$ ln -s ~/.kde4/share/config/gtkrc-2.0 ~/.kde4/share/config/gtkrc
 
   
  +
完全な統合をするには、GTK+ 2 と GTK+ 3 の両方をサポートしている [[GTK+#テーマ|GTK+ テーマ]]を設定する必要があります。上の設定を有効にすると描画に不具合が生じる場合、GTK+ テーマを変更してください。
==== Oxygen アイコン ====
 
   
  +
=== QGnomePlatform ===
Oxygen アイコンを使っていて、GTK+ のダイアログでも同じような見た目にしたい場合、[[Arch User Repository|AUR]] から {{AUR|oxygenrefit2-icon-theme}} して GTK+ のアイコンテーマに設定することが可能です。このテーマを適用するには {{ic|lxappearance}} (または類似のプログラム) を使うか、次の行を {{ic|~/.kde4/share/config/gtkrc-2.0}} に追加して手動で設定してください:
 
gtk-icon-theme-name="OxygenRefit2"
 
   
  +
この Qt 5 プラットフォームテーマでは、GNOME での外観の設定が Qt アプリケーションに適用されます。{{AUR|qgnomeplatform}} か {{AUR|qgnomeplatform-git}} を[[インストール]]した上で、別途スタイルを[[Qt と GTK アプリケーションの外観の統合#Qt と GTK+ 両方のためのスタイル]]を参考にインストールしてください。
GTK+ アプリケーションのための Oxygen アイコンテーマの他のバージョンは [[Arch User Repository|AUR]] の {{AUR|oxygen-gtk-icons}} パッケージでインストールできます。
 
   
  +
GNOME 3.20 以降では自動的に有効化されます。それ以前では {{ic|1=QT_QPA_PLATFORMTHEME=gnome}} と設定すると有効になります。
=== QtCurve ===
 
   
  +
=== Kvantum ===
QtCurve は高い人気を誇り設定が可能な GTK+ 2.x, Qt4, Qt5, KDE4 のためのウィジェットスタイルのセットです。QtCurve は[[official Repositories|公式リポジトリ]]から利用できる {{Grp|qtcurve}} グループのパッケージでインストールできます。ボタンの外観からスライダーの形まで、様々なオプションの多数のコントロールが存在します。
 
  +
Kvantum {{Pkg|kvantum-qt5}} は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。
   
  +
== Qt と GTK+ 両方のためのスタイル ==
GTK+ テーマを手動で '''QtCurve''' に変更するには、以下の内容でファイル {{ic|~/.gtkrc-2.0-kde4}} を作成する必要があります:
 
include "/usr/share/themes/QtCurve/gtk-2.0/gtkrc"
 
include "/etc/gtk-2.0/gtkrc"
 
 
style "user-font"
 
{
 
font_name="Sans Serif"
 
}
 
widget_class "*" style "user-font"
 
gtk-theme-name="QtCurve"
 
   
  +
統合のために、Qt と GTK+ 両方で提供されているウィジェットスタイルのセットが存在し、全ての主要なバージョンが含まれています。このようなスタイルを使うことで、アプリケーションが使っているツールキットに関係なく全てのアプリケーションの見た目を一つにすることが可能です。
それからシンボリックリンク {{ic|~/.gtkrc-2.0}} を作成してください:
 
ln -s .gtkrc-2.0-kde4 .gtkrc-2.0
 
フォントも指定したい場合は、ファイルに次の行を追加(編集)してください:
 
gtk-font-name="Sans Serif 9"
 
   
  +
{{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 ===
類似のスタイルセットは互いに見た目が似ています - Qt と GTK+ の両方で提供されています - ただし開発者は異なっている可能性があります。同じ見た目にするために細かい修正が必要な場合も存在します (例: Qt4/KDE4 の {{AUR|kdestyle-klearlook}} と Clearlooks GTK+ テーマ)。
 
   
  +
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 の設定が反映されるようにしてください。
=== Qt5 スタイル ===
 
  +
もしくは、{{Pkg|kde-gtk-config}} をインストールしてコマンドラインから実行して設定することもできます。
   
  +
=== Adwaita ===
Qt5 は使われているデスクトップ環境に基づいて使用するスタイルを決定します。デスクトップ環境を認識できないときは、通常のスタイルが使用されます。特定のスタイルを強制するには、{{ic|QT_STYLE_OVERRIDE}} 環境変数を設定してください。つまり、gtk テーマを使用したい場合は {{ic|gtk}} に設定してください。Qt5 アプリケーションは {{ic|-style}} フラグもサポートしており、特定のスタイルを使って Qt5 アプリケーションを起動することが可能です。
 
   
  +
Adwaita はデフォルトの GNOME のテーマです。GTK+ 3 のテーマは標準で含まれており、GTK+ 2 のテーマは {{Pkg|gnome-themes-extra}} に含まれています。デフォルトでは、Qt アプリケーションには GTK+ 2 のテーマが使われます ([[#QGtkStyle]] を使用)。
=== Qt4 スタイル ===
 
   
  +
ネイティブの Qt テーマを GTK+ 3 の Adwaita のようにしたいときは [https://github.com/MartinBriza/adwaita-qt adwaita-qt] を見て下さい。Qt 5 バージョンは {{Aur|adwaita}} パッケージで、Qt 4 バージョンは {{Aur|adwaita-qt4}} パッケージで[[インストール]]できます。
Qt4 のスタイルも同様に変更できます:
 
* ''KDE4 システム設定'' (systemsettings) を使う。設定は ''Common Appearance and Behavior > Application Appearance > Style > Widget Style'' にあります。
 
* コマンドラインツールを使う {{ic|$ kwriteconfig --file kdeglobals --group General --key widgetStyle [name of style]}}。
 
* ''Qt 設定'' ('''qtconfig-qt4''') アプリケーションを使う。設定は ''Appearance > Select GUI Style'' にあります。
 
   
  +
デフォルトに設定するときは、Qt 5 では {{Pkg|qt5ct}} パッケージか、{{ic|1=QT_STYLE_OVERRIDE=adwaita}} [[環境変数]]を使います。
Qt 設定では Qt アプリのテーマやフォントなどを選ぶことができますが、KDE4 システム設定ではさらに多くの設定を変更することが可能です (例: フォントアンチエイリアス、ヒンティングなど)。また、[[Font Configuration|フォント設定]]の記事に書いてあるようにすれば {{ic|~/.config/fontconfig/fonts.conf}} でアンチエイリアスやヒンティングを手動で設定できます。
 
  +
Qt 4 では ({{AUR|qt4}} パッケージに含まれている) {{ic|qtconfig-qt4}} を使います。
   
  +
== ヒントとテクニック ==
=== Qt3 スタイル ===
 
 
Qt3 のスタイルは以下の方法で変更できます:
 
* ''KDE3 コントロールセンター'' ('''kcontrol''') を使う。設定は ''Appearance & Themes > Style > Widget Style'' にあります。
 
* コマンドラインツールを使う {{ic|kde-config --style [name of style]}}。
 
* デフォルトの ''Qt 設定'' ('''qt3config''') アプリケーションを使う。設定は ''Appearance > Select GUI Style'' にあります。
 
 
=== GTK+3 スタイル ===
 
 
GTK+ 3.x のスタイルを変更するアプリケーションが存在します:
 
* {{App|kde-gtk-config|GTK+2 や Gtk+3 アプリケーションのスタイルとフォントを変更できるアプリケーション。|https://projects.kde.org/kde-gtk-config|{{Pkg|kde-gtk-config}}}}
 
:インストールした後、{{ic|kde-gtk-config}} が ''System Settings > Application Appearance > GTK'' に出来ます。
 
* {{App|LXAppearance|LXDE プロジェクトによる、デスクトップとは独立した GTK+2 や GTK+3 のスタイル設定ツール (LXDE デスクトップの他のパーツを必要としません)。|http://wiki.lxde.org/en/LXAppearance|{{Pkg|lxappearance}}}}
 
* 手動で設定する方法は [[GTK+#GTK.2B_3.x|GTK+]] のページを見て下さい。
 
 
=== GTK+2 スタイル ===
 
 
GTK+ 2.x のスタイルを変更するアプリケーションは多数存在します:
 
(詳しくは上の GTK+3 セクションを見て下さい。)
 
* {{App|gtk-kde4|KDE4 での GTK+2 アプリケーションのスタイルとフォントを変更できるアプリケーション。|http://kde-look.org/content/show.php?content&#61;74689|{{AUR|gtk-kde4}}}}
 
:インストールした後、{{ic|gtk-kde4}} が ''System Settings > Lost and Found > GTK style'' に出来ます。
 
* {{App|GTK+ Change Theme|GTK+ 2.0 テーマを変更できる小さなプログラム (''switch2'' の代替)。|http://plasmasturm.org/code/gtk-chtheme/|{{Pkg|gtk-chtheme}}}}
 
* {{App|GTK+ Preference Tool|GTK+ のテーマセレクター・フォントスイッチャー。|http://gtk-win.sourceforge.net/home/index.php/Main/GTKPreferenceTool|{{Pkg|gtk2_prefs}}}}
 
* {{App|GTK+ Theme Switch|シンプルな GTK+ テーマスイッチャー。|http://muhri.net/nav.php3?node&#61;gts|{{Pkg|gtk-theme-switch2}}}}
 
* 手動設定は [[GTK%2B#GTK.2B_2.x|GTK+]] のページを見て下さい。
 
 
=== GTK+1 スタイル ===
 
 
GTK1 のスタイルを変更するために [[Arch User Repository|AUR]] から {{AUR|gtk-theme-switch}} パッケージをインストールできます。
 
 
== テーマエンジン ==
 
テーマエンジンは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー API として考えることができます。これらのエンジンはプロセスに余分なコードを追加するため、この種の解決方法がネイティブのスタイルを使うのと比べ最適なのかどうかは議論の余地があります。
 
 
=== GTK+-Qt エンジン ===
 
 
KDE で動作する GTK+ アプリケーションによって使用されます、基本的には他のデスクトップ環境では動作しません。全ての Qt 設定 (スタイル・フォント、アイコンは除く) を GTK+ アプリケーションに適用しスタイルプラグインを直接使用します。このエンジンは AUR から {{AUR|gtk-qt-engine}} パッケージでインストールできます。
 
 
{{Note|Qt スタイルによってはレンダリングに問題が生じます。}}
 
 
''KDE System Settings'' の ''Lost and Found > GTK Styles and Fonts'' からこのエンジンにアクセス可能です。
 
 
エンジンを完全に削除したいときはエンジンをアンインストールするだけでなく以下のファイルも削除してください:
 
$ rm ~/.gtkrc2.0-kde
 
$ rm ~/.kde4/env/gtk-qt-engine.rc.sh
 
$ rm ~/gtk-qt-engine.rc
 
 
=== QGtkStyle ===
 
 
これは GTK+ を使って全てのコンポーネントをレンダリングすることでアプリケーションを GNOME デスクトップ環境に完全に調和させる Qt スタイルです。このスタイルを使うには最低でも GTK+ 2.0 と Qt 4.3 が必要ですが、できれば Qt 4.4 以上が推奨です。このスタイルを有効にするには:
 
* ''Qt Configuration'': ''Appearance > GUI Style'' で "GTK+" を選択してください。
 
* ''KDE4 System Settings'': ''Application Appearance > Style > Applications'' で "GTK+ Style" を選択してください。
 
* コマンドライン: {{ic|~/.config/Trolltech.conf}} ファイルを編集して以下を加えて下さい:
 
 
{{hc|~/.config/Trolltech.conf|<nowiki>
 
...
 
[Qt]
 
style=GTK+
 
...</nowiki>}}
 
 
{{Note|Beginning with version 4.5 this style is included in Qt and does not require a separate package anymore.}}
 
 
== Tips and tricks ==
 
   
 
=== GTK+ アプリケーションで KDE ファイルダイアログ ===
 
=== GTK+ アプリケーションで KDE ファイルダイアログ ===
   
[http://kde-apps.org/content/show.php?content&#61;36077 KGtk] は LD_PRELOAD を使って GTK+ 2.x のアプリで KDE のファイルダイアログ (開く、保存など) を強制するラッパースクリプトです。KDE を使用していてそのファイルダイアログが GTK+ よりも好ましいときは [[Arch User Repository|AUR]] から {{AUR|kgtk}} をインストールできます。インストールした後、2つの方法で {{ic|kgtk-wrapper}} を使って GTK+ 2.x アプリケーションを実行することが可能です (例として [[GIMP|Gimp]] を使います):
+
[http://kde-apps.org/content/show.php?content&#61;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 バイナリを指定する:
 
* {{ic|kgtk-wrapper}} を直接呼び出し、引数として GTK+ 2.x バイナリを指定する:
 
:{{bc|$ /usr/bin/kgtk-wrapper gimp}}
 
:{{bc|$ /usr/bin/kgtk-wrapper gimp}}
 
* {{ic|/usr/share/applications/}} にある KDE の .desktop ショートカットを修正して {{ic|Exec}} に kgtk-wrapper を前に付ける。
 
* {{ic|/usr/share/applications/}} にある KDE の .desktop ショートカットを修正して {{ic|Exec}} に kgtk-wrapper を前に付ける。
:例えば [[GIMP|GIMP]] なら、{{ic|/usr/share/applications/gimp.desktop}} ショートカットファイルを編集して {{ic|1=Exec=gimp-2.8 %U}} を {{ic|1=Exec=kgtk-wrapper gimp-2.8 %U}} に置き換えて下さい。
+
:例えば [[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|Chromium]])。場合によってはラッパーによってアプリケーションがクラッシュします (例: [[Firefox|Firefox]])。さらに [[KDM|KDM]] など他のアプリケーションに影響を与えることもあります ([[Thunderbird|Thunderbird]] などと一緒に使っている場合)。}}
+
{{Note|GTK+ アプリケーションには KGtk ラッパーと互換性がないものがあります (例: [[Chromium]])。場合によってはラッパーによってアプリケーションがクラッシュします (例: [[Firefox]])。さらに [[KDM]] など他のアプリケーションに影響を与えることもあります ([[Thunderbird]] などと一緒に使っている場合)。}}
   
 
=== 指定のテーマでアプリケーションを起動する ===
 
=== 指定のテーマでアプリケーションを起動する ===
233行目: 105行目:
 
=== Qt アプリで GTK+ のアイコンテーマを使う ===
 
=== Qt アプリで GTK+ のアイコンテーマを使う ===
   
GNOME を使っていない場合、{{ic|gconf-editor}} を実行して ''desktop > gnome > interface'' から {{ic|icon_theme}} キーを設定にあわせて変更してください。GNOME を使っていないなら {{ic|~/.xinitrc}} で {{ic|1=export DESKTOP_SESSION=gnome}} を設定する必要があることもあります
+
[[KDE]] を使ってい場合、{{Pkg|kde-gtk-config}} をインストールして ''System Settings > Application Style > GTK'' からアイコンテ選択してください。
  +
  +
[[GNOME]] を使っていない場合は、{{ic|gconf-editor}} を実行して ''desktop > gnome > interface'' から {{ic|icon_theme}} キーを設定にあわせて変更してください。GNOME を使っていないなら {{ic|~/.xinitrc}} で {{ic|1=export DESKTOP_SESSION=gnome}} を設定する必要があることもあります。[[LightDM]] を使っている場合は {{ic|/etc/environment}} に設定してください。
   
 
=== KDE における GTK アプリのサブピクセルレンダリングの改善 ===
 
=== KDE における GTK アプリのサブピクセルレンダリングの改善 ===
246行目: 120行目:
 
</match>
 
</match>
 
</nowiki>}}
 
</nowiki>}}
  +
  +
詳しくは[[フォント設定#LCD フィルター]]を参照。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
 
=== gtk-qt-engine が OpenOffice で動かない ===
 
 
OpenOffice に GTK+-Qt エンジンで選択した Qt テーマを使わせるには次の行を {{ic|/etc/profile}} に (root で) 追加する必要があります:
 
export SAL_GTK_USE_PIXMAPPAINT=1
 
 
また、''KDE4 System Settings'' の ''Lost and Found > GTK Styles and Fonts'' で "Use my KDE style in GTK applications" を選択してください。
 
   
 
=== Qt アプリケーションが QGtkStyle を使わない ===
 
=== Qt アプリケーションが QGtkStyle を使わない ===
262行目: 131行目:
 
QGtkStyle cannot be used together with the GTK_Qt engine.
 
QGtkStyle cannot be used together with the GTK_Qt engine.
   
他にも、シェルから {{ic|qtconfig}} を起動して GTK+ スタイルを選択するとエラーが表示されることがあります:
+
他にも、シェルから {{ic|qtconfig-qt4}} を起動して GTK+ スタイルを選択するとエラーが表示されることがあります:
   
 
QGtkStyle was unable to detect the current GTK+ theme.
 
QGtkStyle was unable to detect the current GTK+ theme.
   
[https://bbs.archlinux.org/viewtopic.php?id&#61;99175&p&#61;1 このスレッド]によれば、この問題を解決するには {{Pkg|libgnomeui}} をインストールする必要があります。xfce と同じように、これにはグラフィカルツールでテーマを変更する度にファイルを編集する必要がないという利点もあります。
+
[https://bbs.archlinux.org/viewtopic.php?id&#61;99175&p&#61;1 このスレッド]によれば、この問題を解決するには {{AUR|libgnomeui}} をインストールする必要があります。xfce と同じように、これにはグラフィカルツールでテーマを変更する度にファイルを編集する必要がないという利点もあります。
   
[[Openbox|Openbox]] や GNOME 以外の環境を使っているユーザーもこの問題に出くわす可能性があります。問題を解決するには、まず {{ic|.xinitrc}} ファイルに以下を追加してください:
+
[[Openbox]] や GNOME 以外の環境を使っているユーザーもこの問題に出くわす可能性があります。問題を解決するには、まず {{ic|.xinitrc}} ファイルに以下を追加してください:
 
{{hc|.xinitrc|<nowiki>
 
{{hc|.xinitrc|<nowiki>
 
...
 
...
297行目: 166行目:
 
これでは QGtkStyle の全てのバージョンで認識されません。この問題は {{ic|~/.gtkrc-2.0}} ファイルに上の例のように {{ic|gtk-theme-name}} を手動で挿入することで解決できます。
 
これでは QGtkStyle の全てのバージョンで認識されません。この問題は {{ic|~/.gtkrc-2.0}} ファイルに上の例のように {{ic|gtk-theme-name}} を手動で挿入することで解決できます。
   
  +
{{Note|スタイルを変更するアプリケーションは、テーマを変更したときに {{ic|~/.gtkrc-2.0}} ファイルを書き換えます。}}
{{Note|Style-changing applications will most probably rewrite the {{ic|~/.gtkrc-2.0}} file the next time you change themes.}}
 
   
 
以上の手順が上手く行かないときは、{{Pkg|gconf}} をインストールして次のコマンドを実行してください:
 
以上の手順が上手く行かないときは、{{Pkg|gconf}} をインストールして次のコマンドを実行してください:
323行目: 192行目:
 
通常は期待されるファイルは GTK1 は {{ic|~/.gtkrc}}、GTK+ 2.x は {{ic|~/.gtkrc2.0}} または {{ic|~/.gtkrc2.0-kde}} です。
 
通常は期待されるファイルは GTK1 は {{ic|~/.gtkrc}}、GTK+ 2.x は {{ic|~/.gtkrc2.0}} または {{ic|~/.gtkrc2.0-kde}} です。
   
  +
=== システムをアップグレードすると SVG (Breeze) アイコンが GTK+ アプリで使用されない ===
新しいバージョンの {{AUR|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}} になります。
 
  +
  +
次のコマンドを実行して、gdk-pixbuf のキャッシュ情報を更新してみてください [https://developer.gnome.org/gdk-pixbuf/stable/gdk-pixbuf-query-loaders.html]:
  +
# gdk-pixbuf-query-loaders --update-cache

2020年9月24日 (木) 12:10時点における版

関連記事

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

概要

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

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

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

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

テーマエンジン

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

QGtkStyle

ノート: QGtkStyle は qt5-base Qt 5.7.0 [1] から除去され、 qt5-styleplugins [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-styleplugins をインストールし、次の環境変数を設定することで有効にできます: 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 と設定すると有効になります。

Kvantum

Kvantum kvantum-qt5 は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。

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

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

ノート: バージョン 3.16 から、GTK+ 3 は CSS を使用しないテーマを サポートしなくなりました 。そのため Oxygen-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 を使います。

ヒントとテクニック

GTK+ アプリケーションで KDE ファイルダイアログ

KGtk は LD_PRELOAD を使って GTK+ 2.x のアプリで KDE のファイルダイアログ (開く、保存など) を強制するラッパースクリプトです。KDE を使用していてそのファイルダイアログが GTK+ よりも好ましいときは AUR から kgtkAUR をインストールできます。インストールした後、2つの方法で kgtk-wrapper を使って GTK+ 2.x アプリケーションを実行することが可能です (例として GIMP を使います):

  • kgtk-wrapper を直接呼び出し、引数として GTK+ 2.x バイナリを指定する:
$ /usr/bin/kgtk-wrapper gimp
  • /usr/share/applications/ にある KDE の .desktop ショートカットを修正して Exec に kgtk-wrapper を前に付ける。
例えば GIMP なら、/usr/share/applications/gimp.desktop ショートカットファイルを編集して Exec=gimp-2.8 %UExec=kgtk-wrapper gimp-2.8 %U に置き換えて下さい。
ノート: GTK+ アプリケーションには KGtk ラッパーと互換性がないものがあります (例: Chromium)。場合によってはラッパーによってアプリケーションがクラッシュします (例: Firefox)。さらに KDM など他のアプリケーションに影響を与えることもあります (Thunderbird などと一緒に使っている場合)。

指定のテーマでアプリケーションを起動する

カスタムスタイルを特定の GTK+ 2.x アプリケーションで使用することができます。アプリケーションを指定したテーマで起動するには:

GTK2_RC_FILES=/usr/share/themes/QtCurve/gtk-2.0/gtkrc firefox

このコマンドでは QtCurve テーマで Firefox が起動します。

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

KDE を使っている場合、kde-gtk-config をインストールして System Settings > Application Style > GTK からアイコンテーマを選択してください。

GNOME を使っていない場合は、gconf-editor を実行して desktop > gnome > interface から icon_theme キーを設定にあわせて変更してください。GNOME を使っていないなら ~/.xinitrcexport DESKTOP_SESSION=gnome を設定する必要があることもあります。LightDM を使っている場合は /etc/environment に設定してください。

KDE における GTK アプリのサブピクセルレンダリングの改善

GTK アプリのサブピクセルレンダリングがネイティブの KDE Qt アプリケーションよりもはっきりとしない場合、以下の行を $XDG_CONFIG_HOME/fontconfig/fonts.conf に追加してみて下さい (<fontconfig> タグの間):

<match target="font">
    <edit mode="assign" name="lcdfilter">
        <const>lcddefault</const>
    </edit>
</match>

詳しくはフォント設定#LCD フィルターを参照。

トラブルシューティング

Qt アプリケーションが QGtkStyle を使わない

GTK+ が GTK+-Qt エンジンを使っている場合、Qt は QGtkStyle を正しく適用しません。環境変数 GTK2_RC_FILES に記載された GTK+ 設定ファイルを読み込むことで Qt は GTK+-Qt エンジンが使われるかどうか判定します。環境変数が正しく設定されていないときは、Qt はエンジンを使っているとして仮定し、GTK+ スタイルの Clearlooks を使うように QGtkStyle を設定し、エラーメッセージを出力します:

QGtkStyle cannot be used together with the GTK_Qt engine.

他にも、シェルから qtconfig-qt4 を起動して GTK+ スタイルを選択するとエラーが表示されることがあります:

QGtkStyle was unable to detect the current GTK+ theme.

このスレッドによれば、この問題を解決するには libgnomeuiAUR をインストールする必要があります。xfce と同じように、これにはグラフィカルツールでテーマを変更する度にファイルを編集する必要がないという利点もあります。

Openbox や GNOME 以外の環境を使っているユーザーもこの問題に出くわす可能性があります。問題を解決するには、まず .xinitrc ファイルに以下を追加してください:

.xinitrc
...
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
...
ノート:
  • この行を追加するのはウィンドウマネージャを起動する行の前にしてください。
  • コロンで分割して複数のパスを追加することも可能です。
  • ~ ではなく $HOME を使うようにしてください。前者では正しくユーザーのホームディレクトリにならないためです。

それから特定のアプリケーションを使うか手動で ~/.gtkrc-2.0 を編集して使いたいテーマを指定してください、以下を追加します:

.gtkrc-2.0
...
gtk-theme-name="[name of theme]"
...

ツールによっては ~/.gtkrc-2.0 に以下のような include ディレクティブしか挿入しないことがあります:

.gtkrc-2.0
...
include "/usr/share/themes/SomeTheme/gtk-2.0/gtkrc"
...

これでは QGtkStyle の全てのバージョンで認識されません。この問題は ~/.gtkrc-2.0 ファイルに上の例のように gtk-theme-name を手動で挿入することで解決できます。

ノート: スタイルを変更するアプリケーションは、テーマを変更したときに ~/.gtkrc-2.0 ファイルを書き換えます。

以上の手順が上手く行かないときは、gconf をインストールして次のコマンドを実行してください:

gconftool-2 --set --type string /desktop/gnome/interface/gtk_theme [name of theme]

さらに、同じアイコンやカーソルを設定したい場合、それらも指定してください。

gconftool-2 --set --type string /desktop/gnome/interface/icon_theme Faenza-Dark

上のコマンドはアイコンテーマを /usr/share/icons/Faenza-Dark にある Faenza-Dark に設定します。カーソルテーマを設定するには最初に gconf の値を設定してください。

gconftool-2 --set --type string /desktop/gnome/peripherals/mouse/cursor_theme Adwaita

それから以下の内容で /usr/share/icons/default/index.theme ファイルを作成してください:

[Icon Theme]
Inherits=Adwaita

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