GTK

提供: ArchWiki
2016年2月18日 (木) 19:30時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

関連記事

GTK+ ウェブサイト より:

GTK+ もしくは GIMP ツールキットはグラフィカルユーザーインターフェースを作成するためのマルチプラットフォームのツールキットです。ウィジェットの完全なセットを提供することで、GTK+ はちょっとしたツールから完全なアプリケーションスイートまで幅広いプロジェクトに適しています。

当初 GTK+ (GIMP Toolkit) は GNU プロジェクトによって GIMP のために作成されました、しかしながら現在ではさまざまな言語のバインディングの存在する人気のあるツールキットになっています。この記事では GTK+ テーマ・スタイル・アイコン・フォント・フォントサイズを設定するのに使うツールと手動設定の方法を詳しく伝えます。

インストール

GTK+ は公式リポジトリから2つのバージョンがインストールできます。以下のパッケージでインストールできます:

  • GTK+ 3.xgtk3 パッケージでインストールできます。
  • GTK+ 2.xgtk2 パッケージでインストールできます。
  • GTK+ 1.xgtkAUR パッケージでインストールできます。

テーマ

GTK+ 2 のデフォルトテーマは Raleigh ですが、Arch Linux では /usr/share/gtk-2.0/gtkrc にカスタム設定ファイルを作成しており、デフォルトテーマは Adwaita に設定されています。GTK+ 3 のデフォルトテーマは Adwaita です。ただし HighContrastRaleigh テーマも含まれています。

特定のテーマを使うには、環境変数を設定します。

  • GTK+ 2 の場合、GTK2_RC_FILES 環境変数を使います、例:
$ GTK2_RC_FILES=/usr/share/themes/Industrial/gtk-2.0/gtkrc gimp
上記のコマンドを実行すると Industrial テーマで GIMP が起動します。
  • GTK+ 3 の場合、GTK_THEME 環境変数を使います、例:
$ GTK_THEME=Adwaita:dark gnome-calculator
上記のコマンドを実行すると Adwaita のダークテーマで GNOME Calculator が起動します。

公式リポジトリや AUR から多数のテーマをインストールすることができます。

GTK+ 2 と GTK+ 3 の両方をサポートしているテーマ:

  • Breeze — KDE のデフォルトウィジェットテーマの GTK+ バージョン。
https://quickgit.kde.org/?p=breeze-gtk.git || breeze-gtk
  • Deepin — Deepin デスクトップのデフォルトテーマ。
https://gitcafe.com/Deepin/deepin-gtk-theme || deepin-gtk-theme
  • GNOME Standard Themes — GNOME デスクトップのデフォルトテーマ。次のテーマが含まれています: Adwaita, HighContrast
https://github.com/GNOME/gnome-themes-standard || gnome-themes-standard
  • MATE Themes — MATE デスクトップのデフォルトテーマ。次のテーマが含まれています: BlackMATE, BlueMenta, Blue-Submarine, ContrastHigh, ContrastHighInverse, GreenLaguna, Green-Submarine, Menta, TraditionalGreen, TraditionalOk, TraditionalOkTest
https://github.com/mate-desktop/mate-themes || mate-themes
  • Numix — 近代的な外観をしているフラットで明るいテーマ (GNOME, Openbox, Unity, Xfce)。
https://numixproject.org/ || numix-themes
  • Arc — モダンで透過するエレメントを備えたフラットテーマ。
https://github.com/horst3180/Arc-theme || gtk-theme-arc-gitAUR
  • Ceti-2 — GTK 3, GTK 2, Gnome-Shell のためのテーマ。
http://horst3180.deviantart.com/art/Ceti-2-Theme-489193140 || ceti-2-themesAUR
  • Clearlooks-Phénix — Clearlooks に見た目が似ている GTK3 テーマ。
https://github.com/jpfleury/clearlooks-phenix || clearlooks-phenix-gtk-themeAUR
  • Gnome-breeze — 新しい Plasma 5 Breeze にマッチする GTK テーマ。
https://github.com/dirruk1/gnome-breeze || gnome-breeze-gitAUR
  • Greybird — グレーとブルーの Xfce テーマ。Xubuntu 12.04 のデフォルト。
http://shimmerproject.org/our-projects/greybird/ || xfce-theme-greybirdAUR
  • Orion — 近代的で明るい GTK テーマ。
http://deviantart.com/view/281431756 || gtk-theme-orionAUR
  • Vertex — GTK 3, GTK 2, Gnome-Shell, Cinnamon のためのテーマ。
http://horst3180.deviantart.com/art/Vertex-Theme-470663601 || vertex-themesAUR
  • Zukitwo — GTK, gnome-shell などのためのテーマ。
http://gnome-look.org/content/show.php/Zukitwo?content=140562 || zukitwo-themesAUR

GTK+ 2 だけをサポートしているテーマ:

  • GTK+ Engines — GTK+ 2 のテーマエンジン。次のテーマが含まれています: Clearlooks, Crux, Industrial, Mist, Redmond, ThinIce
https://github.com/GNOME/gtk-engines || gtk-engines
  • Xfce Gtk+ Engine — Xfce の Gtk+-2.0 エンジンとテーマ
http://git.xfce.org/xfce/gtk-xfce-engine/ || gtk-xfce-engine
  • Oxygen-Gtk — KDE のデフォルトウィジェットテーマ (Oxygen) の GTK2 ポート
https://projects.kde.org/projects/playground/artwork/oxygen-gtk/ || oxygen-gtk2
  • Aurora Gtk Engine — 最新の Clearlooks ファミリー。
http://gnome-look.org/content/show.php/Aurora+Gtk+Engine?content=56438 || gtk-engine-aurora
  • Openbox Themes — Openbox ウィンドウマネージャ用の様々なテーマ。
https://www.debian.org/ || openbox-themes
  • QtCurve — KDE と Gtk のウィジェットスタイルの設定セット
https://projects.kde.org/projects/playground/base/qtcurve || qtcurve-gtk2

AUR には他にも多くの GTK+ テーマが存在します: search for gtk-theme, search for gtk2-theme

ノート:
  • GTK+ 3 は頻繁に変更されるため、GTK+ 3 のリリースがあった後は GTK+ 3 のテーマを修正する必要があることがしばしばあります。このため、全ての GTK+ 3 テーマが (最新バージョンの GTK+ 3 で) 期待通りの外観を表示するとは限りません。
  • テーマによっては正しく表示するために librsvg が必要になりますが、依存パッケージとして指定されていないことがあります。選んだテーマが壊れて見えるようでしたらインストールしてみて下さい。
  • テーマによってはパネルを正しく表示することができないため (明るい背景に明るいテキストが表示される)、この パネルの背景 を使う必要があります。

GTK+ と Qt

デスクトップで GTK+ と Qt (KDE) アプリケーションを使っているならば、それらの見た目が上手く調和しないことに気づくでしょう。GTK+ スタイルと Qt スタイルを調和させたい場合は Qt と GTK アプリケーションの外観の統合を読んで下さい。

設定ツール

主流のデスクトップ環境の多くは GTK+ テーマやアイコン、フォントやフォントサイズを設定するためのツールを提供しており、XSettings で設定を管理しています:

  • Cinnamon を使っている場合、Themes ツールを使って下さい (cinnamon-settings themes): System Settings > Themes を開いて下さい。
  • Enlightenment を使っている場合: Settings > All > Look > Application Theme を開いて下さい。
  • GNOME を使っている場合、GNOME Tweak Tool (gnome-tweak-tool): gnome-tweak-tool をインストール。
  • MATE を使っている場合、Appearance Preferences ツールを使って下さい (mate-appearance-properties): System > Settings > Appearance を開いて下さい。
  • Xfce を使っている場合、Appearance ツールを使って下さい: Settings > Appearance を開いて下さい。

他の GUI ツールは設定ファイルを上書きします。

GTK+ 2 と GTK+ 3 の両方をサポートしているツール:

  • KDE GTK Configurator — GTK+2 と GTK+3 アプリケーションのスタイルやフォントを変更することができるアプリケーション。
https://projects.kde.org/kde-gtk-config || kde-gtk-config
インストール後、kde-gtk-configSystem Settings > Application Appearance > GTK からも設定できます。
  • LXAppearance — LXDE プロジェクトによる、デスクトップに依存しない GTK+2 と GTK+3 のスタイル設定ツール (LXDE デスクトップの他のソフトウェアを必要としません)。
http://wiki.lxde.org/en/LXAppearance || lxappearance

GTK+ 2 だけをサポートしているツール:

  • GTK-KDE4 — KDE4 で GTK+2 アプリケーションのスタイルとフォントを変更できるアプリケーション。
http://kde-look.org/content/show.php?content=74689 || gtk-kde4AUR
インストール後、gtk-kde4System Settings > Lost and Found > GTK style からも設定できます。
  • GTK+ Change Theme — GTK+ 2.0 のテーマを変更するためのプログラム (switch2 の代替プログラム)。
http://plasmasturm.org/code/gtk-chtheme/ || gtk-chtheme
  • GTK+ Preference Tool — GTK+ テーマの選択とフォントの切り替えプログラム。
http://gtk-win.sourceforge.net/home/index.php/Main/GTKPreferenceTool || gtk2_prefs
  • GTK+ Theme Switch — シンプルな GTK+ テーマスイッチャ。
http://muhri.net/nav.php3?node=gts || gtk-theme-switch2

設定

設定ファイルで GTK+ の設定を手動で指定することもできます。ただしデスクトップ環境やアプリケーションは手動設定を上書きしてしまうことがあります。GTK+ のバージョンによって、設定ファイルの場所は異なっています:

  • GTK+ 2 ユーザー個別: ~/.gtkrc-2.0 または ~/.config/gtkrc-2.0
  • GTK+ 2 システム全体: /etc/gtk-2.0/gtkrc
  • GTK+ 3 ユーザー個別: $XDG_CONFIG_HOME/gtk-3.0/settings.ini ($XDG_CONFIG_HOME が設定されていない場合は $HOME/.config/gtk-3.0/settings.ini)
  • GTK+ 3 システム全体: /etc/gtk-3.0/settings.ini
ノート:
  • GTK の設定オプションの完全なリストは GTK+ プログラミングリファレンスマニュアルの GTK+ 3 GtkSettings properties (と GTK+ 2 properties) を見て下さい。
  • 以下の設定の中には非推奨となっているものもあり (gtk-icon-sizes など)、GTK+ 3.10 では無視されることがあります。
  • GTK+ の設定ファイルを編集した場合、変更が適用されるのは新しく起動したアプリケーションからです。

テーマの基本設定

GTK+ テーマやアイコン、フォントやフォントサイズを手動で変更するには、以下のように設定ファイルに追加します:

GTK+ 2:

~/.gtkrc-2.0
gtk-icon-theme-name = "Adwaita"
gtk-theme-name = "Adwaita"
gtk-font-name = "DejaVu Sans 11"

GTK+ 3:

$XDG_CONFIG_HOME/gtk-3.0/settings.ini
[Settings]
gtk-icon-theme-name = Adwaita
gtk-theme-name = Adwaita
gtk-font-name = DejaVu Sans 11
ノート: アイコンテーマの名前はテーマのインデックスファイルに定義されています。ディレクトリの名前を指定しても適用されません。

ダークテーマ

GTK+ 3 テーマの中には派生のダークテーマが存在することがありますが、アプリケーションによって明示的に使うように設定されない限り、デフォルトで使われることはありません。全ての GTK+ 3 アプリケーションでダークテーマを使うには、以下を設定:

gtk-application-prefer-dark-theme = true

キーボードショートカットのカスタマイズを有効にする

マウスをメニューアイテムの上に乗せて設定したいキーボードのコンビネーションを押すことで GTK+ アプリケーションのキーボードショートカットをカスタマイズすることができます ただし、この機能はデフォルトでは無効になっています。この機能を有効にするには、次を設定してください:

gtk-can-change-accels = 1

GNOME メニューの高速化

この設定は GNOME でマウスをメニューに置いた時にメニューが開くまでの待ち時間を決めます。あなたの好きなように設定を変更してください。数字はミリ秒です、例えば 250 は1/4秒になります。

gtk-menu-popup-delay = 0

ウィジェットのサイズを小さくする

小さな画面を使っていて大きなアイコンやウィジェットを表示したくない場合、簡単にサイズを変えることができます。 ツールバーのアイコンに文章を表示しないようにするには、次を使って下さい:

gtk-toolbar-style = GTK_TOOLBAR_ICONS

小さいアイコンを使うには、次のような行を使って下さい:

gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-menu=16,16:gtk-large-toolbar=16,16\
:gtk-small-toolbar=16,16:gtk-button=16,16"

ボタンからアイコンを完全に削除するには:

gtk-button-images = 0

メニューからアイコンを削除することもできます:

gtk-menu-images = 0

ここ で説明されているようにテーマの gtkrc で設定をすることもでき、小さくする設定が全て行う テーマ もあります。

ファイル選択ダイアログのデフォルトフォルダ

最近使われたフォルダではなく current-working-directory でファイル選択ダイアログを開くようにします。通常、current-working-directoryホームディレクトリです。

GTK+ 3

gsettings で DConf を変更してください、設定ファイルは存在しません:

$ gsettings set org.gtk.Settings.FileChooser startup-mode cwd

GTK+ 2

~/.config/gtk-2.0/gtkfilechooser.ini 設定ファイルを編集してください:

~/.config/gtk-2.0/gtkfilechooser.ini
StartupMode=cwd

スクロールの旧式の挙動

ノート: この設定が適用されない GTK+ アプリケーションもあります。
ヒント: 左クリックではなく右クリックを使うことでも昔のようなスクロールの挙動をさせることができます。

GTK+ 3.6 以前では、スクロールバーのスライダーの両側をクリックすると、クリックした方向にスクロールバーが丁度一ページ分だけ移動するようになっていました。GTK+ 3.6 から、スライダーはクリックした位置に直接移動するようになっています。以下の内容のファイルを作成することで、アプリケーションによっては前の挙動に戻すことが可能です:

~/.config/gtk-3.0/settings.ini
[Settings]
gtk-primary-button-warps-slider = false

オーバーレイスクロールバーを無効化

GTK+ 3.15 から、オーバーレイスクロールバーがデフォルトで有効になっており、GTK+ 3 アプリケーションではマウスを乗せたときだけしかスクロールバーが表示されないようになっています。次の環境変数を設定することで元のスクロールバーに戻せます: GTK_OVERLAY_SCROLLING=0

環境変数#グラフィカルアプリケーションを参照。

オーバーレイスクロールのインジケータを削除

オーバーレイスクロールバーの位置はアプリケーションウィンドウの破線で示されます。たとえ上述の環境変数を使ってオーバーレイスクールを無効化しても破線は消えません。インジケータの線を消すには、以下のファイルを作成してください:

~/.config/gtk-3.0/gtk.css
/* Remove dotted lines from GTK+ 3 applications */
.undershoot.top, .undershoot.right, .undershoot.bottom, .undershoot.left { background-image: none; }

Broadway による GTK+ と HTML

GDK Broadway バックエンドは HTML5 とウェブソケットを使って、ウェブブラウザに GTK+ アプリケーションを表示することをサポートしています [1]

broadwayd を使うときには、X と同じようにコロンを前に付けて、使用するディスプレイ番号を指定してください。デフォルトのディスプレイ番号は 1 です。

$ display_number=:5

次のコマンドで起動します。

$ broadwayd $display_number 

デフォルトで使われるポートは:

port = 8080 + ($display_number - 1)

ブラウザで http://localhost:port を開いて下さい。

アプリを起動するには:

$ GDK_BACKEND=broadway BROADWAY_DISPLAY=$display_number <<app>>

また、アドレスやポートを設定することも可能です:

$ broadwayd --port $port_number --address $address $display_number

トラブルシューティング

GTK+ 2 と GTK+ 3 アプリケーションでテーマが異なる

通常、選択したテーマが GTK+ 2.x と GTK+ 3.x の両方をサポートしている場合、GTK+ 2 と GTK+ 3 アプリケーションの両方にテーマが適用されます。選択したテーマが GTK+ 2.x しかサポートしてない場合、GTK+ 2.x アプリケーションにはそのテーマが使われ、GTK+ 3.x アプリケーションにはデフォルトの GTK+ テーマが使われます。選択したテーマが GTK+ 3.x しかサポートしていない場合、GTK+ 3.x アプリケーションにはそのテーマが使われ、GTK+ 2.x アプリケーションにはデフォルトの GTK+ テーマが使われます。UI の外観を統一するために GTK+ 2.x と GTK+ 3.x 両方をサポートしているテーマを使うと一番良い結果が得られます。

インストールしたテーマでどれが GTK+ 2.x と GTK+ 3.x 両方のバージョンを持っているか調べるには次のコマンドを使って下さい (空白が含まれている名前はひっかかりません):

find $(find ~/.themes /usr/share/themes/ -wholename "*/gtk-3.0" | sed -e "s/^\(.*\)\/gtk-3.0$/\1/") -wholename "*/gtk-2.0" | sed -e "s/.*\/\(.*\)\/gtk-2.0/\1"/

root アプリケーションにテーマが適用されない

ユーザーテーマファイル ($XDG_CONFIG_HOME/gtk-3.0/settings.ini, ~/.gtkrc-2.0) は他のアカウントからは読み込まれないため、選択したテーマは root で動かしている X アプリケーションには適用されません。以下のような解決方法があります:

  • システム全体にテーマファイルを設定: /etc/gtk-3.0/settings.ini (GTK+ 3) または /etc/gtk-2.0/gtkrc (GTK+ 2)
  • シンボリックリンクを作成、例:
# ln -s /home/[username]/.gtkrc-2.0 /root/.gtkrc-2.0
  • テーマを root で設定:
# gksu lxappearance
  • 設定デーモンを使用 (ほとんどのデスクトップ環境では設定デーモンが使われています)。デスクトップに依存しない XSettings を使うデーモンは AURxsettingsd-gitAUR でインストールできます。

クライアントサイドデコレーション

GTK 3.12 から クライアントサイドデコレーション が導入されており、タイトルバーはウィンドウマネージャから取り去られています。これによって タイトルバーが二重になる、タイトルバーが全く表示されない、コンポジットを有効にした場合に 影が二重に表示される などの問題が発生することがあります。

(タイル型ウィンドウマネージャを使っている場合などに発生する) ウィンドウの周りの影と枠を消すには、以下のファイルを作成してください:

~/.config/gtk-3.0/gtk.css
.window-frame, .window-frame:backdrop {
 box-shadow: 0 0 0 black;
 border-style: none;
 margin: 0;
 border-radius: 0;
}

.titlebar {
 border-radius: 0;
}

.window-frame.csd.popup {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13);
}

.header-bar {
  background-image: none;
  background-color: #ededed;
  box-shadow: none;
}
/* You may want to use this if you don't like the double title.
GtkLabel.title {
    opacity: 0;
}*/

ヘッダーバーのボタンを調整するには、gtk-decoration-layout の設定を使います [2]。以下の例では全てのボタンを削除します:

~/.config/gtk-3.0/settings.ini
gtk-decoration-layout=menu:

セディーユ ć/Ć ではなく ç/Ç が使われる

Xcompose を使用した解決方法が [3][4] に載っています (US 国際レイアウト)。

accessibility bus に関する警告を表示させない

GTK+ 3 プログラムの実行時に、ターミナルに以下のような警告が表示される場合:

WARNING **: Couldn't connect to accessibility bus:

以下のように環境変数を付けて実行することで警告を消すことができます:

$ NO_AT_BRIDGE=1 theprogram

もしくは ~/.bashrc/etc/environmentNO_AT_BRIDGE=1 を追加してください。

タイトルバーの背景色がおかしい

GTK+ テーマの背景色に擬態するウィンドウデコレーションテーマを使用するウィンドウマネージャを使っている場合、GTK+ 3 アプリケーションでタイトルバーの色がアプリケーションの色と完全に食い違って表示されることがあります。対応策としては、以下のファイルを作成してください:

~/.config/gtk-3.0/gtk.css
/* Always use background color */
GtkWindow {
    background-color: @theme_bg_color;
}

/* Fix tooltip background override */
.tooltip {
    background-color: rgba(0, 0, 0, 0.8);
}

.tooltip * {
    background-color: transparent;
}

/* Fix Nautilus desktop window background override */
NautilusWindow {
     background-color: transparent; 
}

タイル型ウィンドウマネージャでフォーカスイベントがおかしい

ノート: 以下の設定は GTK3 アプリケーションのタッチスクリーンのサポートを無効化します [5]

GDK_CORE_DEVICE_EVENTS=1定義して xinput2 の代わりに GTK2 のスタイル入力を使うようにしてください [6]

GTK+ 2 のファイルダイアログのサムネイル

gtk2-patched-filechooser-icon-viewAUR をインストールすることで GTK+ のファイル選択ダイアログで、リストの代わりにサムネイルでファイルを閲覧するオプションが作られます。

設定例

GTK+ 2 設定例:

~/.gtkrc-2.0
# GTK theme
include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"

# Font
style "myfont" {
    font_name = "DejaVu Sans 8"
}
widget_class "*" style "myfont"
gtk-font-name = "DejaVu Sans 8"

# Icon theme
gtk-icon-theme-name = "Tango"

# Toolbar style
gtk-toolbar-style = GTK_TOOLBAR_ICONS

lxappearance で GTK+ 2.x から GTK+ 3.x に変換した GTK+ 3 の設定例:

$XDG_CONFIG_HOME/gtk-3.0/settings.ini
[Settings] 
gtk-theme-name=TraditionalOk
gtk-icon-theme-name=Fog
gtk-font-name=Luxi Sans 12
gtk-cursor-theme-name=mate
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb

参照