Як отримати більшу статичну смугу прокрутки (також звичайну смугу прокрутки)?


40

Я радий, що зовнішні полоси прокрутки нарешті пішли.

Але смуга прокрутки все ще є тонкою лінією бритви, яка стає менш тонкою смугою прокрутки, але все ще тонка смуга прокрутки, коли миша наводить курсор.

Як я можу отримати звичайну смугу прокрутки? Тобто, як і в інших ОС, як у Firefox, смуга прокрутки, яка не змінюється залежно від того, на що вказує миша, і з хорошою шириною.

Я вже пробував

gsettings set com.canonical.desktop.interface scrollbar-mode normal

але не везіння


2
як це все ще залишається проблемою, а не виправленням / частиною стандартних системних налаштувань? lordy чотири роки тому я люблю досить ubuntu за подібні речі та поїхав на міні-пасовища ... lol
neuronet

@neuronet Amen, брат
Стів Коен

Відповіді:


22

Редагуйте цей файл /usr/share/themes/Ambiance/gtk-3.0/gtk-widgets.css

Шукайте цю лінію (близько рядка 1200): -GtkRange-slider-width: 10;

І змініть 10 на більшу кількість, як 20 або 30, і готово :)

Я також думаю, що вони занадто малі ...

Дивіться це зображення:

введіть тут опис зображення

Якщо ви зміните розмір смуги прокрутки на 16, і хочете, щоб вони залишалися таким чином, а не скорочувалися, коли у вас немає миші, тоді внесіть зміни на малюнку вище.

Якщо ви використовуєте розмір, відмінний від 16, просто експериментуйте з розмірами поля, щоб правильно це зробити.


1
Я встановив це на 16, і прокоментував усі елементи наведення / перетягування, і тепер прокрутки - це добрі старі статичні ... Вони все ще зникають через кілька секунд. Чи є якась функція анімації, яку я не бачив?
Саймон

Ок, так прямо внизу, де ви зробили першу зміну, ви побачите такі: margin-left: 2px;як і margin-rightі margin-top. Змініть усі три з 2px на 7px, і ваші смуги прокрутки залишаться широкими.
Доріан

Я додав фотографію до своєї відповіді, щоб спробувати зрозуміти, що потрібно змінити, щоб смуги прокрутки залишалися великими.
Доріан

6
Дуже дякую! Мій дід справді боровся з дуже маленькими смугами прокрутки, але я змінив його на 25 пікселів і тепер він прокручується як професіонал!
Erty Seidohl

1
Примітка. Я змінив міну на 24, і 7 пікселів все ще був правильний розмір, який потрібно використовувати для поля, щоб переконатися, що вона залишається правильною при наведенні. Зауважте, також переконайтесь, що перезапустіть програму (наприклад, Firefox), щоб переконатися, що ваші зміни набули чинності. Чудова річ.
нейронет

26

Я думаю, вам слід бути обережними там. Багато хто з нас НЕ рекомендує вам редагувати налаштування за замовчуванням для всієї системи для теми, якщо ви дійсно не маєте наміру втручатися у діяльність усіх облікових записів користувачів у системі. Якщо ви трапили помилку під час цього, це вплине на всі облікові записи користувачів. Ще одна обережність - коли оновлення пакунків ваші зміни будуть стерті.

Ще одним недоліком цієї стратегії є те, що вона змінює лише поведінку однієї теми GTK, але ви можете змінити розмір смуги прокрутки на ВСІ теми GTK-3.0.

Натомість редагуйте конфігураційні файли всередині облікового запису користувача. Хитрість полягає в тому, щоб визначити, яка з них - найкоротша відстань до потрібної кінцевої точки. Файл GTK, який ви редагуєте, є частиною налаштування CSS (каскадні таблиці стилів), тому налаштування, внесене до вашого облікового запису, змінить налаштування.

У вашому обліковому записі користувача у папці ~ / .config / gtk-3.0 / gtk.css у мене зараз це є у файлі під назвою "gtk.css"

.scrollbar {
  -GtkScrollbar-has-backward-stepper: true;
  -GtkScrollbar-has-forward-stepper: true;
  -GtkRange-slider-width: 20;
  -GtkRange-stepper-size: 20;
}

Якщо трохи пограти з цим, ви побачите, що можливо інтегрувати багато конкретних змін із файлу теми, який ви редагували вище. Свого часу я дуже важко намагався виправити багато налаштувань, але зараз я перебуваю в режимі "тримай просто".

Якщо ви дійсно хочете відредагувати багато налаштувань, найкраще зробити це КОПУВАТИ весь файл gtk-widgets.css і помістити його у папку ~ / .config / gtk-3.0. Потім перейдіть до міста, налаштовуючи налаштування.

У цій же папці я маю файл під назвою "settings.ini"

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

Це запобігає переміщенню клацання на панелі прокрутки до певної точки файлу, замість цього вона просуває лише один екран. Я вважаю за краще це!

Інша річ, яку варто знати, - це те, що зміна цього файлу теми (як раніше рекомендував @Dorian, або зміна облікового запису користувача для всіх тем на основі GTK-3.0, як я пропоную) змінює лише програми, що базуються на інструментарії GTK-3.0. Він не змінює смугу прокрутки для всіх програм. Лише для тих, хто читає конфігураційний файл gtk-3.0. Оскільки ви редагуєте тему gtk-3.0, програми, написані на QT або gtk-2.0, не змінюватимуться. Отже, змінити розмір прокрутки для всіх програм є досить складним / стомлюючим, ніж ви могли очікувати.

Я також змінив ширину смуги прокрутки в gtk-2.0. Це робиться в окремій папці ~ / .config / gtk-2.0. Файл, який потрібно створити, називається gtkrc

style "scroll"
{
 GtkScrollbar::slider-width = 20
}

Зауважте, що gtk-2.0 є іншим способом, тому синтаксис відрізняється, ви не можете просто скопіювати gtk-3.0 css у папку gtk-2.0.

Я помітив, що деякі програми поводяться погано, коли ви робите смугу прокрутки різною, тому що розмір "грайфера" всередині повзунка не змінюється правильно. Я підозрюю, що зміни файлу @ Dorian перетягування смуги прокрутки допоможуть у цьому допомогти. Я можу повернутися і спробувати це. Я дам вам знати.

Короткий зміст: Ключова "стара порада системного адміністратора Linux" - "НЕ редагуйте конфігураційні файли на загальносистемній основі". Ви ставите під загрозу вашу систему, зміни не триватимуть через зміни, і для цього потрібен кореневий доступ, що ніколи не корисно для таких косметичних речей. Знайдіть спосіб внесення змін у свій обліковий запис користувача.

PS. Якщо ви дійсно хочете поспілкуватися із системними файлами (іноді я це роблю, якщо я дійсно хочу наполягати, щоб усі користувачі мали свої улюблені кольори футбольної команди як їх шпалери та колірну гаму :)), перше, що вам слід зробити, це зробити копію оригінальний файл і назвіть оригінал "gtk-widgets.css.orig". Потім, коли ви редагуєте свій файл, збережіть його копію як "gtk-widgets.css.20160919", де у мене в кінці є дата YYYYMMDD. Таким чином, коли пакет оновлення буде оновлено, ви отримаєте копію відредагованого файлу. Той, який ви відредагували на ім'я gtk-widgets.css, буде видалений при встановленні пакета.


На що посилається "файл теми, який ви редагували вище"? "вище" тут нічого не означає.
ендоліт

9

Ось етапи відновлення смуг прокрутки, які не зникають і мають постійну ширину, тобто "класичні". Тестовано на GNOME Flashback сесії в Ubuntu 16.04 (працює і в Unity).

Крок 1. Зробіть резервну копію /etc/environment. Запустіть sudo nano /etc/environmentі додайте туди наступний рядок:

GTK_OVERLAY_SCROLLING=0

Це запобіжить автоматичну поведінку панелі прокрутки.

Крок 2. Щоб уникнути підробки основного файлу теми, /usr/share/themes/Ambiance/gtk-3.0/gtk-widgets.cssми запозичимо звідти якийсь код, змінимо його та помістимо в папку профілю користувача. Створіть ~/.config/gtk-3.0/gtk.cssі вставте в нього наступні рядки:

/* Adding the buttons on the edges (if you don't need them, skip the next 4 lines)
 */

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

/* Scrollbar trough squeezes when cursor hovers over it. Disabling that
 */

.scrollbar.vertical:hover:dir(ltr),
.scrollbar.vertical.dragging:dir(ltr) {
    margin-left: 0px;
}

.scrollbar.vertical:hover:dir(rtl),
.scrollbar.vertical.dragging:dir(rtl) {
    margin-right: 0px;
}

.scrollbar.horizontal:hover,
.scrollbar.horizontal.dragging,
.scrollbar.horizontal.slider:hover,
.scrollbar.horizontal.slider.dragging {
    margin-top: 0px;
}

/* Slider widens to fill the scrollbar when cursor hovers over it. Making it permanent
 */

.scrollbar.slider.vertical:dir(ltr):not(:hover):not(.dragging) {
    margin-left: 0px;
}

.scrollbar.slider.vertical:dir(rtl):not(:hover):not(.dragging) {
    margin-right: 0px;
}

.scrollbar.slider.horizontal:not(:hover):not(.dragging) {
    margin-top: 0px;
}

Крок 3. Створіть ~/.config/gtk-3.0/settings.iniі додайте до нього наступні рядки:

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

Це відновить поведінку прокрутки сторінок за сторінкою, коли ви натискаєте на панель прокрутки з обох сторін повзунка. Якщо цей файл вже існує, просто додайте останній рядок у його [Settings]розділ.

Крок 4. Видаліть overlay-scrollbarі overlay-scrollbar-gtk2пакети - вони вам більше не знадобляться.

PS Якщо ви використовуєте які - то додатки , які необхідні права суперкористувача (тобто синаптичної, Gedit і т.д.) , то ви також повинні помістити ці gtk.cssта settings.iniфайли в папці профілю користувача root:

sudo cp ~/.config/gtk-3.0/gtk.css /root/.config/gtk-3.0/
sudo cp ~/.config/gtk-3.0/settings.ini /root/.config/gtk-3.0/

PPS Якщо ви виявите, що ці смуги прокрутки занадто вузькі, зробіть їх ширшими. Просто додайте наступний рядок до свого ~/.config/gtk-3.0/gtk.css:

.scrollbar {
  -GtkRange-slider-width: 15;
}

Збільште ширину, як вважаєте за потрібне (за замовчуванням - 10). Оновіть /root/.config/gtk-3.0/gtk.cssтакож, якщо потрібно.


Я зміг збільшити ширину за допомогою єдиного елемента: .scrollbar {-GtkRange-slider-width: 15; …без усіх інших згаданих вами варіантів. Але це було лише на віртуальній машині. Коли я намагався зробити те ж саме на робочому столі, нічого не вийшло, хоча я спробував усі кроки. У Firefox 52 є, напевно, помилка, оскільки на віртуальній машині, де допомогла відповідь, смуга прокрутки правильно відреагувала на подію наведення і автоматично розширилася. На робочому столі він не обробляє наведення (що насправді є причиною, чому мені потрібно розширити панель прокрутки), і gtk.css теж ігнорується
user907860

1
@ user907860 Навпаки, всі кроки, згадані вище, призначені для повного ігнорування події наведення курсора. Вони потрібні для створення статичних, постійних смуг прокрутки, які ніколи не змінюють свою ширину, як це було в епоху перед Єдністю.
whtyger

так, ви праві. Я мав на увазі просто збільшення ширини, не торкаючись функцій наведення курсора
user907860

до речі, ви не маєте уявлення, чому це не працює у Firefox 52 на робочому столі, тоді як це відбувається на віртуальній машині? askubuntu.com/questions/892097/…
користувач907860

1
Це має бути прийнятою відповіддю. Метерення з dconf та темами дало дуже дивні результати - не накладання, але й нормальне. Ця відповідь дає нормальні смуги прокрутки. Це потрібно зробити на рівні GTK. Примітка: Ubunutu незабаром рухається до Qt.
Домінік Серісано

8

Зміна -GtkRange-slider-widthне впливає на тему GTK + 3 за замовчуванням. Натомість ви можете зробити це:

scrollbar slider {
    /* Size of the slider */
    min-width: 20px;
    min-height: 20px;
    border-radius: 22px;

    /* Padding around the slider */
    border: 5px solid transparent;
}

(Помістіть вище ~/.config/gtk-3.0/gtk.css.)


1
куди мені його додати?
kenn

@kenn~/.config/gtk-3.0/gtk.css
Володимир Пантелеев

1
Працює як шарм на Ubuntu 18.04. Дякую!
Стів Коен

9 місяців пізніше: Це працює як принадність у Ubuntu 18.04 - ОКРЕМИ, що це плутає хек з програми GNUCash. Див. Списки.gnucash.org/pipermail/gnucash-user/2019-February/ … Внесення цих змін знищує функціональність смуги прокрутки в GNUCash, але не в інших додатках. Зітхнути.
Стів Коен

1
@SteveCohen, я переглянув посилання gnucash. Ви написали "~ / .config / gtk-3.0.gtk.css", але це має бути ~/.config/gtk-3.0/gtk.css. Також gnucash представляється додатком gtk2 , а не програмою gtk 3 .
Справедливість для Моніки

4

Я використовую Ubuntu 18.04, і це було єдине рішення, яке змінило панель прокрутки на ВСЕ, від Firefox до LibreOffice до gnome-terminal. Вищезазначені рішення спрацювали чудово для однієї чи двох програм, але не для всього.

Примітка. Це дає вам РОЗПОЛУЧНІ великі смуги прокрутки, які добре підходять для великих моніторів, оскільки ви можете бачити їх поза кутом ока, не переглядаючи вбік екрана щоразу, коли захочете його взяти. Якщо ви хочете менших розмірів, змініть всі 70px на меншу кількість, наприклад 20px або 30px, і налаштуйте відповідно.

Вставте наступний текст у ~/.config/gtk-3.0/gtk.css:


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

scrollbar slider {
background-color: @scrollbar_track_color;
}

.scrollbar.vertical slider,
scrollbar.vertical slider {
    min-height: 150px;
    min-width: 70px;
}

.scrollbar.horizontal.slider,
scrollbar.horizontal slider {
min-width: 40px;
min-height: 10px;
}

.scrollbar.vertical.slider:hover,
scrollbar.vertical:hover slider {
min-width: 70px;
}

.scrollbar.horizontal.slider:hover,
scrollbar.horizontal:hover slider {
    min-height: 10px;
}

.scrollbar.contents,
scrollbar contents {
    background-color: transparent;
    background-image: none;
    background-size: 0;
    border: none;
    border-radius: 0;
}

.scrollbar.trough,
scrollbar trough {
    background-image: none;
    border: none;
}

.scrollbar:hover:backdrop,
.scrollbar.dragging:backdrop,
scrollbar:hover:backdrop,
scrollbar.dragging:backdrop {
    background-color: alpha(@backdrop_selected_bg_color, 0.5);
}


.scrollbar.vertical:hover:dir(ltr),
.scrollbar.vertical:active:dir(ltr),
scrollbar.vertical:hover:dir(ltr),
scrollbar.vertical:active:dir(ltr) {
    margin-left: 0px;
}

.scrollbar.vertical:hover:dir(rtl),
.scrollbar.vertical:active:dir(rtl),
scrollbar.vertical:hover:dir(rtl),
scrollbar.vertical:active:dir(rtl) {
    margin-right: 0px;
}

.scrollbar.horizontal:hover,
.scrollbar.horizontal:active,
scrollbar.horizontal:hover,
scrollbar.horizontal:active {
    margin-top: 0px;
}

.scrollbar.slider,
scrollbar slider {
    background-color: alpha(@backdrop_filling_bg, 0.75);
    border-radius: 10px;
}

.scrollbar.slider:hover,
.scrollbar.slider:active,
scrollbar slider:hover,
scrollbar slider:active {
    border-radius: 20px;
    margin: 0;
}


.scrollbar.vertical:dir(ltr):not(:hover):not(.dragging),
scrollbar.vertical:dir(ltr):not(:hover):not(.dragging) {
    margin-left: 0px;
}

.scrollbar.vertical:dir(rtl):not(:hover):not(.dragging),
scrollbar.vertical:dir(rtl):not(:hover):not(.dragging) {
    margin-right: 0px;
}

.scrollbar.horizontal:not(:hover):not(.dragging),
scrollbar.horizontal:not(:hover):not(.dragging) {
    margin-top: 0px;
}


.scrollbar.slider:hover,
scrollbar slider:hover {
    background-color: alpha(@backdrop_filling_bg, 0.6);
}

.scrollbar.slider:active,
scrollbar slider:active {
    background-color: @backdrop_filling_bg;
}

.scrollbar.slider:backdrop,
scrollbar slider:backdrop {
    background-color: alpha(@backdrop_filling_bg, 0.75);
}

.scrollbar.slider:hover:backdrop,
scrollbar slider:hover:backdrop {
    background-color: alpha(@backdrop_filling_bg, 0.6;
}

.scrollbar.slider:active:backdrop,
scrollbar slider:active:backdrop {
    background-color: @backdrop_filling_bg;
}

scrollbar {
    min-width: 70px;
    min-height: 70px;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.