Debian 10의 GTK 2 및 3 애플리케이션에서 레거시 스크롤바를 얻는 방법은 무엇입니까?

Debian 10의 GTK 2 및 3 애플리케이션에서 레거시 스크롤바를 얻는 방법은 무엇입니까?

저는 Debian 10에서 XFce4를 사용하고 있습니다.

GTK 2 애플리케이션을 열면 스크롤바가 정상적으로 나타나고 상단과 하단에 큰 스크롤바와 화살표가 표시됩니다.

GTK 3 애플리케이션을 열 때 스크롤바가 얇아 클릭해서 보기 어렵고 어디에도 화살표가 없으며 때로는 완전히 사라지는 경우도 있습니다.

Adwaita 또는 Breeze와 같은 테마를 선택하면 GTK 2 애플리케이션이 GTK 3 애플리케이션과 일치하지만 사용 및 보기가 어려운 스크롤바가 있습니다.

GTK 2 및 GTK 3 애플리케이션에 보다 전통적인 스크롤바와 더 큰 버튼을 제공할 수 있는 방법이 있습니까?

답변1

GTK+2

GTK+2의 스크롤바에는 아무런 문제가 없습니다. 어쩌면 당신은 그들을 "타협"하는 방식으로 진행되는 테마를 사용하고 있을 수도 있습니다. 예를 들어 내가 사용하는 다른 테마로 전환해 보세요 GreenMotif.

더 어리석은 일을 피하려면 xcursor-themesDebian 패키지를 설치하고 다음을 실행하십시오.sudo update-alternatives --set x-cursor-theme /etc/X11/cursors/core.theme

Qt5

이것도 쉬운 것 같습니다. GTK 엔진이나 테마를 사용하지 않는지 확인하세요. 저는 개인적으로 qt5-style-plugin-motif데비안 패키지를 설치해서 사용하고 있습니다.

kcminputrc_mouse_cursortheme=core다른 곳에서 이를 설정 해야 할 수도 있습니다 ~/.config/startupconfig. GUI 설정 대화 상자는 core"테마"를 옵션으로 표시하지 않는 경향이 있습니다. 다른 커서 테마를 선택한 다음 포인트 파일에서 발생 항목을 검색하고 모두 변경할 수 있습니다(제가 했던 작업입니다).

GTK+3

이것을 디자인하는 것은 끝없는 PITA입니다. 나는 가지고있다GTK+3을 덜 견딜 수 없게 만드는 방법을 문서화했습니다.스크롤을 수정하여 Debian Stretch에서 기본적으로 사용되는 Xfce4 "기본" 테마와 매우 유사한 테마를 사용하여 아래 답변의 대부분을 인라인하겠습니다. 유사한 Windows® 95 대안, 추가 배경 정보 등이 포함되어 있으며 무엇보다도 스크린샷이 가장 좋은 코드 조각을 방문하는 것이 좋습니다! ☺

~/.config/gtk-3.0/gtk2xfce4basic.css

다음 콘텐츠로 이 파일을 생성하세요(또는 위 링크에서 원본 파일을 다운로드하세요).

/*
 * to install, copy to ~/.config/gtk-3.0/gtk2xfce4basic.css
 * and append the line…
 *
 *  @import 'gtk2xfce4basic.css';
 *
 * to ~/.config/gtk-3.0/gtk.css
 */

/* somewhat unfuck GTK+3, by mirabilos, Ⓕ CC0 — theme Xfce basic */

/*-
 * append to ~/.xsessionrc or so, ~/.pam_environment or ~/.profile maybe
 *
 * GTK_OVERLAY_SCROLLING=0; export GTK_OVERLAY_SCROLLING
 *
 * merge into ~/.config/gtk-3.0/settings.ini
 *
 * [Settings]
 * gtk-xft-rgba=none
 * gtk-cursor-theme-name=core
 * gtk-enable-animations=0
 * gtk-primary-button-warps-slider=false
 *
 * Firefox about:config set: pref("widget.non-native-theme.enabled", false);
 * and consider a userContent.css to disable website-styled scroll“bar”s (see
 * https://edugit.org/-/snippets/31 for how).
 *
 * Try: GTK_DEBUG=interactive gtk3-demo
 */

/* remove dotted lines from GTK+3 applications */
.undershoot.top, .undershoot.right, .undershoot.bottom, .undershoot.left {
    background-image:none;
}
undershoot.top, undershoot.right, undershoot.bottom, undershoot.left {
    background-image:none;
}

/* force scrollbar arrows */
.scrollbar, scrollbar {
    -GtkScrollbar-has-backward-stepper:true !important;
    -GtkScrollbar-has-forward-stepper:true !important;
}

/* GTK+2-style scrollbar with Xfce basic theme colours {{{ */

scrollbar.horizontal, scrollbar.horizontal content,
scrollbar.horizontal button.up, scrollbar.horizontal button.up:disabled,
scrollbar.horizontal trough, scrollbar.horizontal slider,
scrollbar.horizontal button.down, scrollbar.horizontal button.down:disabled,
scrollbar.vertical, scrollbar.vertical content,
scrollbar.vertical button.up, scrollbar.vertical button.up:disabled,
scrollbar.vertical trough, scrollbar.vertical slider,
scrollbar.vertical button.down, scrollbar.vertical button.down:disabled {
    margin:0px;
    outline:0px;
    -gtk-outline-radius:0;
    border-radius:0px;
    border:0px;
    box-shadow:none;
    padding:0px;
    background-color:inherit;
}

scrollbar.horizontal button.up, scrollbar.horizontal button.up:disabled,
scrollbar.horizontal button.down, scrollbar.horizontal button.down:disabled,
scrollbar.vertical button.up, scrollbar.vertical button.up:disabled,
scrollbar.vertical button.down, scrollbar.vertical button.down:disabled {
    -gtk-icon-source:none;
}

scrollbar.horizontal {
    min-height:14px;
    box-shadow:
        inset 1px 1px 0 0 #8C8982,
        inset -1px -1px 0 0 #FBFBFA;
    padding:1px;
    background-color:#C4C2BD;
}

scrollbar.horizontal contents {
    min-height:14px;
}

scrollbar.horizontal button.up {
    min-width:11px;
    background:
        linear-gradient(to top right,    transparent 49.5%, #000000 50%) 5px 6px / 3px 3px,
        linear-gradient(to bottom right, transparent 49.5%, #000000 50%) 5px 4px / 3px 3px,
        linear-gradient(to top right,    transparent 49.5%, #434341 50%) 4px 6px / 4px 4px,
        linear-gradient(to bottom right, transparent 49.5%, #434341 50%) 4px 3px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.horizontal button.up:disabled {
    min-width:11px;
    background:
        linear-gradient(to top right,    transparent 49.5%, #757575 50%) 5px 6px / 3px 3px,
        linear-gradient(to bottom right, transparent 49.5%, #757575 50%) 5px 4px / 3px 3px,
        linear-gradient(to top right,    transparent 49.5%, #9D9D9D 50%) 4px 6px / 4px 4px,
        linear-gradient(to bottom right, transparent 49.5%, #959493 50%) 4px 3px / 4px 4px,
        linear-gradient(to top right,    transparent 49.5%, #FFFFFF 50%) 6px 7px / 3px 3px,
        linear-gradient(to bottom right, transparent 49.5%, #FFFFFF 50%) 6px 5px / 3px 3px,
        linear-gradient(to top right,    transparent 49.5%, #F0EFED 50%) 5px 7px / 4px 4px,
        linear-gradient(to bottom right, transparent 49.5%, #F0EFED 50%) 5px 4px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.horizontal trough {
    min-height:14px;
}

scrollbar.horizontal slider {
    min-width:18px;
}

scrollbar.horizontal button.down {
    min-width:11px;
    background:
        linear-gradient(to bottom left, transparent 49.5%, #000000 50%) 5px 4px / 3px 3px,
        linear-gradient(to top left,    transparent 49.5%, #000000 50%) 5px 6px / 3px 3px,
        linear-gradient(to bottom left, transparent 49.5%, #434341 50%) 5px 3px / 4px 4px,
        linear-gradient(to top left,    transparent 49.5%, #434341 50%) 5px 6px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.horizontal button.down:disabled {
    min-width:11px;
    background:
        linear-gradient(to bottom left, transparent 49.5%, #757575 50%) 5px 4px / 3px 3px,
        linear-gradient(to top left,    transparent 49.5%, #757575 50%) 5px 6px / 3px 3px,
        linear-gradient(to bottom left, transparent 49.5%, #959493 50%) 5px 3px / 4px 4px,
        linear-gradient(to top left,    transparent 49.5%, #9D9D9D 50%) 5px 6px / 4px 4px,
        linear-gradient(to bottom left, transparent 49.5%, #FFFFFF 50%) 6px 5px / 3px 3px,
        linear-gradient(to top left,    transparent 49.5%, #FFFFFF 50%) 6px 7px / 3px 3px,
        linear-gradient(to bottom left, transparent 49.5%, #F0EFED 50%) 6px 4px / 4px 4px,
        linear-gradient(to top left,    transparent 49.5%, #F0EFED 50%) 6px 7px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.horizontal button.up, scrollbar.horizontal button.up:disabled,
scrollbar.horizontal slider,
scrollbar.horizontal button.down, scrollbar.horizontal button.down:disabled {
    min-height:11px;
    box-shadow:
        inset -2px -2px 0 0 #9E9A91,
        inset 1px 1px 0 0 #FFFFFF,
        inset -1px -1px 0 0 #000000;
    /*      ↑   →   ↓   ←   */
    padding:1px 2px 2px 1px;
    background-color:#DCDAD5;
}

scrollbar.vertical {
    min-width:14px;
    box-shadow:
        inset 1px 1px 0 0 #8C8982,
        inset -1px -1px 0 0 #FBFBFA;
    padding:1px;
    background-color:#C4C2BD;
}

scrollbar.vertical contents {
    min-width:14px;
}

scrollbar.vertical button.up {
    min-height:11px;
    background:
        linear-gradient(to bottom right, transparent 49.5%, #000000 50%) 4px 5px / 3px 3px,
        linear-gradient(to bottom left,  transparent 49.5%, #000000 50%) 6px 5px / 3px 3px,
        linear-gradient(to bottom right, transparent 49.5%, #434341 50%) 3px 4px / 4px 4px,
        linear-gradient(to bottom left,  transparent 49.5%, #434341 50%) 6px 4px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.vertical button.up:disabled {
    min-height:11px;
    background:
        linear-gradient(to bottom right, transparent 49.5%, #757575 50%) 4px 5px / 3px 3px,
        linear-gradient(to bottom left,  transparent 49.5%, #757575 50%) 6px 5px / 3px 3px,
        linear-gradient(to bottom right, transparent 49.5%, #959493 50%) 3px 4px / 4px 4px,
        linear-gradient(to bottom left,  transparent 49.5%, #9D9D9D 50%) 6px 4px / 4px 4px,
        linear-gradient(to bottom right, transparent 49.5%, #FFFFFF 50%) 5px 6px / 3px 3px,
        linear-gradient(to bottom left,  transparent 49.5%, #FFFFFF 50%) 7px 6px / 3px 3px,
        linear-gradient(to bottom right, transparent 49.5%, #F0EFED 50%) 4px 5px / 4px 4px,
        linear-gradient(to bottom left,  transparent 49.5%, #F0EFED 50%) 7px 5px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.vertical trough {
    min-width:14px;
}

scrollbar.vertical slider {
    min-height:18px;
}

scrollbar.vertical button.down {
    min-height:11px;
    background:
        linear-gradient(to top left,  transparent 49.5%, #000000 50%) 6px 5px / 3px 3px,
        linear-gradient(to top right, transparent 49.5%, #000000 50%) 4px 5px / 3px 3px,
        linear-gradient(to top left,  transparent 49.5%, #434341 50%) 6px 5px / 4px 4px,
        linear-gradient(to top right, transparent 49.5%, #434341 50%) 3px 5px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.vertical button.down:disabled {
    min-height:11px;
    background:
        linear-gradient(to top left,  transparent 49.5%, #757575 50%) 6px 5px / 3px 3px,
        linear-gradient(to top right, transparent 49.5%, #757575 50%) 4px 5px / 3px 3px,
        linear-gradient(to top left,  transparent 49.5%, #9D9D9D 50%) 6px 5px / 4px 4px,
        linear-gradient(to top right, transparent 49.5%, #959493 50%) 3px 5px / 4px 4px,
        linear-gradient(to top left,  transparent 49.5%, #FFFFFF 50%) 7px 6px / 3px 3px,
        linear-gradient(to top right, transparent 49.5%, #FFFFFF 50%) 5px 6px / 3px 3px,
        linear-gradient(to top left,  transparent 49.5%, #F0EFED 50%) 7px 6px / 4px 4px,
        linear-gradient(to top right, transparent 49.5%, #F0EFED 50%) 4px 6px / 4px 4px;
    background-repeat:no-repeat;
}

scrollbar.vertical button.up, scrollbar.vertical button.up:disabled,
scrollbar.vertical slider,
scrollbar.vertical button.down, scrollbar.vertical button.down:disabled {
    min-width:11px;
    box-shadow:
        inset -2px -2px 0 0 #9E9A91,
        inset 1px 1px 0 0 #FFFFFF,
        inset -1px -1px 0 0 #000000;
    /*      ↑   →   ↓   ←   */
    padding:1px 2px 2px 1px;
    background-color:#DCDAD5;
}

/* }}} end of GTK+2-style scrollbar */

~/.config/gtk-3.0/gtk.css

다음 줄을 추가합니다.

@import 'gtk2xfce4basic.css';

~/.config/gtk-3.0/settings.ini

[Settings]이 섹션 에 다음(또는 기타 적절한) 설정을 추가합니다 .

gtk-xft-rgba=none     
gtk-cursor-theme-name=core   
gtk-enable-animations=0   
gtk-primary-button-warps-slider=false     

환경

GTK_OVERLAY_SCROLLING=0X11 세션에 대해 이것을 설정했는지 확인하십시오 . (이것은 일반적 ~/.pam_environment으로 운영 체제, 시스템 초기화 방법 및 X11 부팅 방법에 따라 다음을 입력하여 수행할 수 있습니다 . 예~/.profile~/.xinitrc~/.xsessionrc~/.xsessionrc대개데비안과 그 파생물에서 가장 간단한 것입니다. )

GTK_OVERLAY_SCROLLING=0
export GTK_OVERLAY_SCROLLING

파이어폭스 브라우저

최신 버전은 GTK+3을 사용하고 자신만의 스크롤바를 그려야 한다고 주장합니다. 따라서 위의 수정만으로는 충분하지 않습니다. Firefox에 추가 구성을 추가해야 합니다.폐쇄하지만 작은 것 하나하나가 도움이 됩니다…

about:config

pref("widget.non-native-theme.enabled", false);

userContent.css

파일 에 다음 줄을 입력하세요 userContent.css.

* {
    scrollbar-color:unset !important;
    scrollbar-width:unset !important;
}

이거 없으면문서(완전히 또는 작동 중) 그러나 다음이 필요합니다.활성화첫 번째. 이렇게 하면 Twitter, StackExchange 등에서 사용할 수 있는 스크롤바가 제공됩니다. ☻

관련 정보