GTK3アプリでのスクロールバー問題

 私の環境はWindowMaker+GNUstepである。要はNeXTライク。

 となるとその他のアプリケーションでも似た外観にしたいというのが人情である。

 まずはGTKということでテーマを探してみると、OneStepBackとGTK-GNUstepというテーマが見つけることができた。

www.gnome-look.org

www.gnome-look.org

 しかし、GTK-GNUstepはGTK2用なので、まずはOneStepBackをつかってみることにした。

 テーマの追加方法? Debianの場合はこいつらを解凍して/usr/share/themesに、FreeBSDなら/usr/local/share/themesに置けば良い。

 テーマの切り替えは設定ファイルを書き換える方法だと、

  • GTK2は~/.gtkrc-2.0
  • GTK3は~/.config/gtk-3.0/settings.ini

gtk-theme-nameの行を編集すれば良い。GUIでやりたいのならlxappearanceを遣うと楽である。最終的にはGTK2はGTK-GNUstep、GTK3はOneStepBack、そしてアイコンテーマをGNUstep Iconにした。

www.gnome-look.org

 ……スクロールバーに反映されない。と思ったら、テーマのディレクトリーのアクセス権(OneStepBack/gtk-3.0)だった。しっかし動きが変なのも確かなので、いろいろいじってみる。

スクロールバーの移動を画面単位にする

 NeXTだとスクロールバーの場所をクリックするとその場所に移動するので、私には違和感がないものの、Windowsとかに慣れている人は一画面単位のスクロールの方が使い勝手が良いらしい。この場合は~/.config/gtk-3.0/settings.iniの[Settings]の中に以下を追加する。

[Settings]
gtk-primary-button-warps-slider = false

GTK3のスクロールバーのオーバーレイ表示を止める

 ~/.profileに環境変数を設定する。

export GTK_OVERLAY_SCROLLING=0

 ~/.config/gtk-3.0/gtk.cssに次を追加する。

.undershoot.top, .undershoot.right, .undershoot.bottom, .undershoot.left { background-image: none; }

スクロールバーの矢印を表示する

 矢印のあるテーマを使用していれば問題ない。標準で矢印がないテーマについては~/.config/gtk-3.0/gtk.cssに次を追加する。

.scrollbar {
    -GtkScrollbar-has-backward-stepper: 1;
    -GtkScrollbar-has-forward-stepper: 1;
}

 GTK2だと~/.gtkrc-2.0に次のような感じになる。

GtkScrollbar ::has-backward-stepper=1
GtkScrollbar ::has-forward-stepper=1