GTK2アプリケーションの既存のスクロールバー

GTK2アプリケーションの既存のスクロールバー

~/.config/gtk-3.0/gtk.cssGTK3アプリケーションでスクロールボタン付きの既存のスクロールバーを有効にするためにコンテンツを含むファイルを追加しました。

scrollbar {
        -GtkScrollbar-has-backward-stepper: true;
        -GtkScrollbar-has-forward-stepper: true;
}

scrollbar slider {
        border: 0;
        border-radius: 0;
        min-width: 15px;
        min-height: 15px;
}

以下の最初のスクリーンショットは、GTK3アプリケーションPlumaの結果を示しています。次の2番目のスクリーンショットのPCManFMなどのGTK2アプリケーションで同じ種類のスクロールバーを取得するにはどうすればよいですか?

2020-08-13 修正:私はこの提案を試しましたより大きな静的スクロールバーを取得する方法...ただし、以下の2番目のスクリーンショットに示すように、まだ狭いスクロールバーを持つファイルブラウザPCManFMには違いはありません。

2020-08-18 修正:以下のMiloš Pavlovićが提案したように、GTK2アプリケーションのスクロールバーを変更しましたが、スクロールバーにステッパーがなく、スライダーが非常に奇妙に見えます。以下の3番目のスクリーンショットを参照してください。

既存のスクロールバーを含むテキストエディタ

新しい狭いスクロールバーを持つファイルブラウザ

奇妙なスクロールバーを持つファイルブラウザ

2023-07-19 修正:Debian 12をインストールした後、この問題をより深く掘り下げました。次の行をコメントアウトすると、正しいステップ矢印が得られます/usr/share/themes/Adwaita/gtk-2.0/main.rc

image {
  function = ARROW
  detail   = "vscrollbar"
}
image {
  function = ARROW
  detail   = "hscrollbar"
}

以下は、次の設定を使用したスクリーンショットです~/.gtkrc-2.0

gtk-theme-name = "Adwaita"
gtk-icon-theme-name = "Adwaita"

style "TraditionalScrollbar" {
     GtkScrollbar::has-backward-stepper = 1
     GtkScrollbar::has-forward-stepper = 1
     GtkScrollbar::slider-width = 16
     GtkScrollbar::stepper-size = 16
}

class "GtkScrollbar" style "TraditionalScrollbar"

ファイルブラウザに奇妙なスクロールバーがありますが、正しいステップ矢印があります。

残りの質問はどのように

  1. スクロールバーを中空にすることなくしっかりとします。
  2. スクロールバーにスロットを埋めるようにします。
  3. スクロールバーの角を丸くしないでください。

答え1

隠しファイルがあります.gtkrc-2.0現在、テーマを扱うデフォルトフォルダにあります。作成されていない場合。ファイルの末尾の横に貼り付け

style "myscrollbar"
{
     GtkRange::stepper-size = 16
     GtkRange::trough-under-steppers = 1
     GtkScrollbar::has-backward-stepper = 1  
     GtkScrollbar::has-forward-stepper = 1
     GtkScrollbar::slider-width = 16
     GtkScrollbar::trough-border = 2
}
class "GtkScrollbar" style "myscrollbar"

変更を適用するには、保存してログアウト/ログインしてください。

  • GtkRange::stepper-size = 0 --> 16は矢印ボタンの垂直サイズであり、値が0の場合、矢印ボタンは消えます(少なくとも一部のアプリでは?)

  • GtkRange::trough-under-steppers = 0 --> 1 (よりきれいに見えるように左スクロールバーの境界線を矢印の上に展開)

  • GtkScrollbar::has-*-stepper = 0 --> 1 スクロール矢印をオンにします(ステッパーサイズが 0 でない場合)。

  • GtkScrollbar::slider-width = 14 --> 16は明らかにスクロールバーとスライダの幅を変更しますが、右側の境界線がない場合はスライダが中央からずれ、幅が同じ高さではないようです。

  • GtkScrollbar::trough-border = 0 --> 2 は (左) 境界線を取得するための要件の一部です。

答え2

不足している設定はですGtkScrollbar::stepper-size = 16。したがって、単純な~/.gtkrc-2.0ファイルは次のようになります。

style "myscrollbar"
{
  GtkScrollbar::stepper-size = 16
  GtkScrollbar::has-backward-stepper = 1
  GtkScrollbar::has-forward-stepper  = 1
}

class "GtkScrollbar" style "myscrollbar"

動作します。

スクロールバーの両端にステッパー三角形を表示する方法については、以下を参照してください。この回答

答え3

GTK 2アプリケーションの既存のスクロールバー:

Adwaitaテーマからスクロールバーの矢印アイコンをコピーし、角が丸い(丸みを帯びたエッジではない)スクロールバースライダー用のアイコンを作成します。

$ mkdir -p ~/.local/share/themes/Adwaita/gtk-2.0/assets
$ cp /usr/share/themes/Adwaita/gtk-2.0/assets/pan-*.png ~/.local/share/themes/Adwaita/gtk-2.0/assets/
$ convert -size 16x16 "canvas:#787c7d" ~/.local/share/themes/Adwaita/gtk-2.0/assets/scrollbar-slider.png
$ convert -size 16x16 "canvas:#535859" ~/.local/share/themes/Adwaita/gtk-2.0/assets/scrollbar-slider-hover.png
$ convert -size 16x16 "canvas:#2a76c6" ~/.local/share/themes/Adwaita/gtk-2.0/assets/scrollbar-slider-active.png

~/.gtkrc-2.0次の内容でファイルを作成します。

gtk-theme-name = "Adwaita"
gtk-icon-theme-name = "Adwaita"

style "TraditionalScrollbar" {
    GtkScrollbar::has-backward-stepper = 1
    GtkScrollbar::has-forward-stepper = 1
    GtkScrollbar::slider-width = 16
    GtkScrollbar::stepper-size = 16

    engine "pixmap" {
        /*vertical scrollbar steppers*/
        image {
            function = ARROW
            state = NORMAL
            detail = "vscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-up.png"
            overlay_stretch = FALSE
            arrow_direction = UP
        }
        image {
            function = ARROW
            state = INSENSITIVE
            detail = "vscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-up-insensitive.png"
            overlay_stretch = FALSE
            arrow_direction = UP
        }
        image {
            function = ARROW
            state = NORMAL
            detail = "vscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-down.png"
            overlay_stretch = FALSE
            arrow_direction = DOWN
        }
        image {
            function = ARROW
            state = INSENSITIVE
            detail = "vscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-down-insensitive.png"
            overlay_stretch = FALSE
            arrow_direction = DOWN
        }

        /*horizontal scrollbar steppers*/
        image {
            function = ARROW
            state = NORMAL
            detail = "hscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-left.png"
            overlay_stretch = FALSE
            arrow_direction = LEFT
        }
        image {
            function = ARROW
            state = INSENSITIVE
            detail = "hscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-left-insensitive.png"
            overlay_stretch = FALSE
            arrow_direction = LEFT
        }
        image {
            function = ARROW
            state = NORMAL
            detail = "hscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-right.png"
            overlay_stretch = FALSE
            arrow_direction = RIGHT
        }
        image {
            function = ARROW
            state = INSENSITIVE
            detail = "hscrollbar"
            overlay_file = ".local/share/themes/Adwaita/gtk-2.0/assets/pan-right-insensitive.png"
            overlay_stretch = FALSE
            arrow_direction = RIGHT
        }

        /*scrollbar sliders*/
        image {
            function = SLIDER
            state = NORMAL
            detail = "slider"
            file = ".local/share/themes/Adwaita/gtk-2.0/assets/scrollbar-slider.png"
        }
        image {
            function = SLIDER
            state = PRELIGHT
            detail = "slider"
            file = ".local/share/themes/Adwaita/gtk-2.0/assets/scrollbar-slider-hover.png"
        }
        image {
            function = SLIDER
            state = ACTIVE
            detail = "slider"
            file = ".local/share/themes/Adwaita/gtk-2.0/assets/scrollbar-slider-active.png"
        }
    }
}

class "GtkScrollbar" style "TraditionalScrollbar"

結果は次のとおりです。

既存のスクロールバーを使用するファイルブラウザPCManFM

関連情報