~/.config/gtk-3.0/gtk.css
GTK3 애플리케이션에서 스크롤 버튼이 있는 기존 스크롤바를 활성화하기 위해 콘텐츠가 포함된 파일을 추가했습니다.
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의 결과를 보여줍니다. 아래 두 번째 스크린샷의 PCManFM과 같은 GTK2 애플리케이션에서 동일한 유형의 스크롤바를 얻으려면 어떻게 해야 합니까?
2020-08-13 수정: 나는 이 제안을 시도해 보았습니다더 큰 정적 스크롤바를 얻는 방법...그러나 이는 아래 두 번째 스크린샷에 표시된 것처럼 여전히 좁은 스크롤 막대가 있는 파일 브라우저 PCManFM에는 아무런 차이가 없습니다.
2020-08-18 수정: 아래 Miloš Pavlović가 제안한 대로 GTK2 애플리케이션의 스크롤 막대를 변경했지만 스크롤 막대에 스테퍼가 없고 슬라이더가 매우 이상해 보입니다. 아래 세 번째 스크린샷을 참조하세요.
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
숨겨진 파일이 있습니다.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"
결과는 다음과 같습니다.