概要
自分は主にXubuntu (Xfce)環境で生活してますが、Gtkやxfwm(ウィンドウマネージャ)のテーマ設定で、どうしても譲れない設定というのがあります。
- (Gtk) ウィンドウを最大化した時に、カーソルを画面右端にピッタリつけた状態で、スクロールバーをドラッグできる。
- (xfwm) ウィンドウを最大化した時に、カーソルを画面右上端にピッタリつけた状態で、クローズボタンをクリックできる。
自分はほとんどのウィンドウを最大化して使うので、このへんの挙動がユーザビリティに大きく影響するのです。
Windowsではこんなこと当然のようにできるんですが、Xfceでは不思議とこんなこともできてないテーマをちょいちょい見かけます。 あえてそうしてるのか、見落としているのかは分かりませんが。
ということで、ここでは既存のテーマをいじって上記の挙動を実現するための方法を書きます。
なお、「こうやったらうまくいった」というだけで、自分はテーマエンジンについてそこまで深く理解できてないのでそのへんはご注意下さい。
テーマファイルの場所
Ubuntu系ディストロの場合、システムワイドのテーマファイルは/usr/share/themes
ディレクトリ以下にあります。 また、ユーザ個別のテーマファイルは~/.themes
に格納します。
まず、いじりたいテーマファイルディレクトリを~/.themes
以下にコピーしておきましょう。
$ mkdir ~/.themes
$ cp -r /usr/share/themes/Adwaita ~/.themes/Adwaita-Modified
以降はこのコピーを編集すればOKです。
Gtk2
Gtk2のテーマ設定はテーマファイルディレクトリ下のgtk-2.0/gtkrc
ファイルで行います。
Gtk2のスクロールバーを右端で掴めるようにするには、GtkRange::trough-border
を0に設定すればいいみたいです。
GtkRange::trough-border = 0
テーマによってはGtkRange
クラスとは別のクラスに設定しているかもしれないですが、とにかく"trough"(容れ物、溝)がキーワードになってるようです。
Gtk3
Gtk3のテーマ設定はテーマファイルディレクトリ下のgtk-3.0/gtk.css
ファイルで行います。 多くの場合、gtk.cssが他のCSSファイルをインポートしています。
Gtk3の場合、上記のtrough-border
に加えて-GtkScrolledWindow-scrollbars-within-bevel
の設定が必要になります。
-GtkRange-trough-border: 0;
-GtkScrolledWindow-scrollbars-within-bevel: 0;
これを両方とも0にしておかないと、うまくスクロールバーを掴めないようです。
xfwm4
xfwm4 (Xfceのウィンドウマネージャ)のテーマ設定はテーマファイルディレクトリ下のxfwm4/themerc
ファイル及び各種画像ファイルです。
ウィンドウを最大化した時のクローズボタンと画面右端とのスキマはthemerc中のmaximized_offset
項目です。
maximized_offset=0
一方、画面上端とのスキマはタイトルバー画像とボタン画像の縦幅で決まってるようです。
よって、画像ファイル群title-*.{png,xpm}
とclose-*.{png,xpm}
の縦幅が等しくなるように加工すれば、縦方向のスキマが0になります。
参考
- http://askubuntu.com/questions/334283/gtk-scrollbar-with-transparent-or-no-trough
- https://bugs.launchpad.net/ubuntu/+source/human-theme/+bug/422511
- https://bugs.launchpad.net/egtk/+bug/606388
- https://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html#GtkScrolledWindow--s-scrollbars-within-bevel
- http://wiki.xfce.org/howto/xfwm4_theme
- https://wiki.ubuntu.com/Artwork/Documentation/Murrine
- https://developer.gnome.org/gtk3/stable/GtkCssProvider.html