試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

KDE4上のGTK+ 2の設定について

(2010/1/10)システム設定のGTK+スタイル設定用モジュール(Mandrivaでは「systemsettings-qt-gtk」、Debian*1では「system-config-gtk-kde」)パッケージがあればシステム設定の「一般」タブ「外観」の「GTK Styles and Fonts」でGTK+ 2のテーマはGUIから設定することができる。
以下、以前の内容となる。

GTK+ 2の視覚テーマ・配色・アイコンテーマなどの設定は、GNOMEとXfce4では「設定マネージャ」が設定してくれるので自分で設定ファイルを記述する必要はないのだが、それ以外の環境では「gtkrc-2.0」と呼ばれるファイルに記述することになる。
これは通常、ホームディレクトリ直下に配置され、${HOME}/.gtkrc-2.0という場所のファイルが使用されるのだが、KDE4では少し事情が異なる。

環境変数GTK2_RC_FILESを独自な値に指定している

gtkrc-2.0の場所は、環境変数GTK2_RC_FILESで変更(上書き)できる。KDEでは、この環境変数が「${HOME}/.kde[バージョン]/share/config/gtkrc-2.0」という値に指定されている。バージョン番号部分は、KDE 4.0.1の時点では「4.0」になっている。Gentoo Linuxではこのようになっていたが、ディストリによって異なる可能性もある。
KDE上でCLIのシェルから確認すると

$ echo ${GTK2_RC_FILES}
:/home/[ユーザ名]/.kde[バージョン]/share/config/gtkrc-2.0

となっている。なお、GTK+ 1のgtkrcは同様にGTK_RC_FILESに指定されている(${HOME}/[ユーザ名]/.kde[バージョン]/share/config/gtkrc)。
(2008/3/1)${HOME}/.kdeシンボリックリンクで、${HOME}/.kde4.0/を指している形。これ以下の「${HOME}/.kde[バージョン]」は「${HOME}/.kde」と表記を変更した。

gtkrc-2.0の設定

テーマを切り替えながら選択を行うには、gtk-chtheme(http://plasmasturm.org/code/gtk-chtheme/)が便利。Debianではlennyから、UbuntuではGutsy(7.10)からパッケージになっていて、Gentooでも同名のパッケージが利用できる。
gtk-chthemeという実行ファイルを起動して設定をすると、下のような内容の設定ファイルを出力する。
ファイル名: ~/.gtkrc-2.0

# -- THEME AUTO-WRITTEN DO NOT EDIT
include "/usr/share/themes/[テーマ名]/gtk-2.0/gtkrc"

style "user-font" {
	font_name = "[フォント名] [サイズ]"
}

widget_class "*" style "user-font"

gtk-font-name="[フォント名] [サイズ]"

include "/home/[ユーザ名]/.gtkrc.mine"

# -- THEME AUTO-WRITTEN DO NOT EDIT

アイコンテーマなど、追加の設定は${HOME}/.gtkrc.mineに記述することができるようになっている。下は設定例。
ファイル名: ~/.gtkrc.mine

gtk-icon-theme-name = "Tango"
gtk-key-theme-name = "Emacs"

gtk-icon-theme-name」は、/usr/share/icons/以下のディレクトリ名(アイコンテーマ名)を指定する。
gtk-key-theme-name」に「Emacs」を指定すると、カーソル移動にEmacs風のキー割り当てが使えるが、Ctrl+Fで検索をするテキストエディタ(例:medit)でショートカットキーが利かなくなるなどの問題もあるため、注意が必要。

ログイン後にgtkrc-2.0の設定が上書きされる件について

[引用]ファイル名: ~/.kde/share/config/gtkrc-2.0 などより

# If you do not want KDE to override your GTK settings, select
# Appearance & Themes -> Colors in the Control Center and disable the checkbox
# "Apply colors to non-KDE applications"

KDE システム設定(systemsettings)の「外観-外観-色」にある「KDE4 以外のアプリケーションにも色設定を適用する」(Apply colors to non-KDE4 applications)に

チェックが入っていないことを確認してはいるものの、ファイル${HOME}/.kde/share/config/gtkrc-2.0を編集して設定を変更しても、ログインの度にKDEが作成したものに戻ってしまった。
そこで、ログイン後の自動起動の仕組みを利用して、毎回カスタム設定ファイルで上書きコピーするようにしてみる。
ファイル中の~/bin/startup.shは「Xfce 4.4における環境変数の設定と自動実行コマンド」で書いているカスタム自動起動スクリプト
ファイル名: ~/bin/kde4-startup.sh

#! /bin/sh
cp ~/.gtkrc-2.0 ~/.kde/share/config/gtkrc-2.0 -f
. ~/bin/startup.sh

このファイルを~/.kde/Autostart/以下にリンクするかコピーするかのどちらかを行うか、${HOME}/.kde/share/autostart/以下に.desktopファイルを作成し、このファイルを「Exec」の値に指定する(スクリプトの場所は絶対パスで記述)ことで、ログイン後に自動実行させるようにする。
すると、設定が保持される(ようにふるまう)ようになった。
(2008/3/1)上のようにすると、自動起動したGTK+ 2アプリケーションもしくは子プロセスがGTK+ 2アプリケーションとなる場合において、設定が適用されなかった。この件についてと自動実行、SCIMなどに関してを別記事にまとめた。
(2008/3/3)自動起動の.desktopファイルについて追加したが、KDE用の自動起動スクリプトは設けないようにしたため、上のコードは参考として残すことにする。

関連記事:

関連:${HOME}/.gtkrc-2.0を配置したままGNOMEやXfce4を使用すると...

GNOMEかXfce4を使用しているときに${HOME}/.gtkrc-2.0を配置すると、その設定が優先されてしまう。具体的には、テーマ変更が反映されなくなるなどの不具合が出る。これを回避するには環境変数GTK2_RC_FILESを(未定義にはせず)空の文字列にしておく。
具体的には、${HOME}/.xprofileの最後に

export GTK2_RC_FILES=

を記述する。

使用したバージョン:

*1:パッケージ検索したところ、Ubuntuにはない?