GTK3アプリでのスクロールバー問題
私の環境はWindowMaker+GNUstepである。要はNeXTライク。
となるとその他のアプリケーションでも似た外観にしたいというのが人情である。
まずはGTKということでテーマを探してみると、OneStepBackとGTK-GNUstepというテーマが見つけることができた。
しかし、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にした。
……スクロールバーに反映されない。と思ったら、テーマのディレクトリーのアクセス権(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