「Qt と GTK アプリケーションの外観の統合」の版間の差分
(冒頭を同期) |
|||
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 のアプリケーションの外観を似たようにする方法を説明しています。 |
== 概要 == |
== 概要 == |
2023年5月16日 (火) 23:42時点における版
Qt と GTK ベースのプログラムは異なるウィジェットツールキットを使ってグラフィカルユーザーインターフェースを表示しています。それぞれにデフォルトで異なるテーマ・スタイル・アイコンセットが存在するため、"ルックアンドフィール"は著しく乖離してしまいます。この記事ではデスクトップエクスペリエンスを統合するために Qt と GTK のアプリケーションの外観を似たようにする方法を説明しています。
目次
- 1 概要
- 2 Qt と GTK+ 両方のためのスタイル
- 3 テーマエンジン
- 4 ヒントとテクニック
- 5 トラブルシューティング
- 5.1 GTK+ アプリでテーマが使えない
- 5.2 システムをアップグレードすると SVG (Breeze) アイコンが GTK+ アプリで使用されない
- 5.3 FlatpakQt アプリに GnomeAdwaita ダークテーマが適用されない
- 5.4 GNOME Wayland で実行される Qt アプリケーションが、Qt テーマを設定した後でも、ウィンドウ装飾の外観が一致しない
- 5.5 GTK アプリが KDE システム設定を完全には使用しない
- 5.6 kde-gtk-config "システム設定>アプリケーションスタイル>GTK" メニューがありません
- 5.7 Dolphin のテーマが Nautilus に適用されない
概要
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
を使います。
Kvantum
Kvantum kvantum-qt5 は SVG ベースの Qt5 テーマです。Adapta, Arc, Ambiance, Materia GTK テーマと同様の Qt テーマが含まれています。
テーマエンジン
テーマエンジンは複数のツールキット間でテーマ (アイコンは除く) を翻訳する薄いレイヤー 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
と設定すると有効になります。
ヒントとテクニック
Qt アプリで GTK+ のアイコンテーマを使う
Plasma を使っている場合は、kde-gtk-config を実行して、System Settings > Application Style > GTK でアイコンテーマを選択してください。
GNOME を使っている場合は、dconf-editor を実行して、org > gnome > desktop > interface にある icon-theme
キーをあなたの好みのアイコンテーマに変更してください。
デスクトップ環境 を使っていない場合、例えば i3-wm で最小限のシステムを動かしているのなら、dconf-editor を インストール して、上記の説明に従ってアイコンテーマを設定してください。
また、プロファイルの DESKTOP_SESSION
の値も設定する必要があるかもしれません。望ましい結果を得るために可能な方法については 環境変数#変数の定義 を参照してください。
KDE Plasma の下の GTK3 アプリケーションにタイトルバーとフレームを追加する
Gnome/GTK アプリケーションを KDE/Plasma のタイトルバーとフレームで表示するには、 gtk3-nocsd-gitAUR をインストールしてからウィンドウマネージャを再起動し、更新したライブラリパスをロードしてください。
また、GTK アプリケーションをラッパーで実行することもできます。
$ gtk3-nocsd gedit
KDE Plasma での GTK アプリのサブピクセルレンダリングを改善
こちらを参照 フォント設定# LCD フィルター
一貫性のあるファイルダイアログ
同じファイル ダイアログを表示するには、XDG Portals を使用します。
xdg-desktop-portal と xdg-desktop-portal-kde を {[インストール]] して GTK_USE_PORTAL=1
を設定します。etc/environment で 環境変数 を設定してください。
現在、全ての gtk アプリケーションが kde ファイルダイアログを正しくサポートしているわけではないことに注意してください。例えば、Thunderbird は正常にサポートしています。
electron を使用するアプリケーションは少なくとも electron 14 (https://github.com/electron/electron/pull/19159 参照) を使用し、この関数を適切に実装する必要があります。 vscode には問題を修正するためのプルリクエストがあります。#126113 を参照してください。
公式リポジトリのバージョン 3.20.3-1 の Meld アプリケーションはまだ gtk ファイルピッカーを開いています。meld-gitAUR のバージョン 3.21.1 では kde ファイルピッカーは開きますが、ディレクトリを開くのに失敗します。詳しくは bug report を参照して下さい。
GIMP はまだポータルの使用を実装していません。バグレポート を参照してください。
トラブルシューティング
GTK+ アプリでテーマが使えない
設定したスタイルやテーマエンジンが GTK アプリケーションで表示されない場合は、おそらく GTK+ の設定ファイルが何らかの理由でロードされていません。次を実行することでシステムが設定ファイルをどこにあると期待しているか確認できます:
$ export | grep gtk
通常は期待されるファイルは GTK1 は ~/.gtkrc
、GTK+ 2.x は ~/.gtkrc2.0
または ~/.gtkrc2.0-kde
です。
システムをアップグレードすると SVG (Breeze) アイコンが GTK+ アプリで使用されない
次のコマンドを実行して、gdk-pixbuf のキャッシュ情報を更新してみてください [3]:
# gdk-pixbuf-query-loaders --update-cache
FlatpakQt アプリに GnomeAdwaita ダークテーマが適用されない
テーマを Adwaita に切り替えた場合 -dark および FlatpakQt アプリケーションは引き続き light バージョンを使用する場合は、必要な KStyle をインストールします。
# flatpak install flathub org.kde.KStyle.Adwaita
GNOME Wayland で実行される Qt アプリケーションが、Qt テーマを設定した後でも、ウィンドウ装飾の外観が一致しない
ウィンドウ装飾の一致した外観を得るには、qgnomeplatformAUR をインストールし、次の 環境変数 を設定する必要があります:QT_QPA_PLATFORMTHEME='gnome'
この修正は、Adwaita または Adwaita-dark で動作することが保証されています。
GTK アプリが KDE システム設定を完全には使用しない
GTK アプリで Plasma 設定をさらに統合するには、 インストール gnome-settings-daemon、gsettings-desktop-schemas、および gsettings-qt が必要になる場合があります。これにより、GTK に適切な Qt バインディングが提供されます。
kde-gtk-config "システム設定>アプリケーションスタイル>GTK" メニューがありません
kde-gtk-config が壊れてシステム設定から "Application Style > GTK" メニューが無くなった場合、 lxappearance のような 設定ツール を選ぶと GTK 2 と GTK 3 スタイルを構成できるようになります。 LXDE プロジェクトに由来するものであっても、デスクトップには依存しません (LXDE デスクトップの他の部分を必要としません。)
Dolphin のテーマが Nautilus に適用されない
フォルダビューの背景色がシステムのテーマと合わない のセクションで、変な色使いの対処法を確認してください。