Как получить большую статическую полосу прокрутки (она же обычная полоса прокрутки)?


41

Я рад, что внешние полосы прокрутки наложения наконец исчезли.

Но полоса прокрутки - все еще тонкая линия бритвы, которая становится менее тонкой полосой прокрутки, но все же тонкой полосой прокрутки, когда мышь наводится.

Как я могу получить нормальную полосу прокрутки? То есть, как и в других ОС, как в Firefox, полоса прокрутки не меняется в зависимости от того, на что указывает мышь, и с хорошей шириной.

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

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

но не повезло.


2
как это все еще острая проблема, а не исправить / часть стандартных системных настроек? Lordy четыре года назад я бушевать довольно убунт над вещами , как это и пошел mintier пастбищ ... лолы
нейросеть

@neuronet Аминь, брат
Стив Коэн

Ответы:


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
Спасибо большое! Мой дедушка действительно боролся с очень маленькими полосами прокрутки, но я изменил его на 25px, и теперь он прокручивает как профессионал!
Эрти Сейдохл

1
Обратите внимание, что я изменил мой на 24, и 7px по-прежнему был правильным размером для полей, чтобы убедиться, что он оставался правильным при наведении. Обратите внимание, также обязательно перезапустите вашу программу (например, Firefox), чтобы изменения вступили в силу. Великая вещь.
нейросеть

27

Я думаю, что вы должны быть осторожны там. Многие из нас НЕ рекомендуют вам редактировать общесистемные значения по умолчанию для темы, если вы действительно не собираетесь вмешиваться в работу всех учетных записей пользователей в системе. Если вы допустили ошибку при этом, то это влияет на все учетные записи пользователей. Еще один момент предостережения: при обновлении пакетов ваши изменения будут стерты.

Другим недостатком этой стратегии является то, что она меняет только поведение одной темы 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 - это программа, разработанная по-другому, поэтому синтаксис другой, вы не можете просто скопировать css gtk-3.0 в папку gtk-2.0.

Я заметил, что некоторые приложения ведут себя плохо, когда вы отличаете полосу прокрутки, потому что размер «захвата» внутри ползунка ползунка не изменяется должным образом. Я подозреваю, что изменения перетаскивания полосы прокрутки в файле @ Dorian помогут в этом. Я могу вернуться и попробовать это. Я дам Вам знать.

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

PS. Если вы действительно хотите возиться с системными файлами (иногда мне хочется, чтобы я действительно настаивал на том, чтобы у всех пользователей были цвета моей любимой футбольной команды в качестве обоев и цветовой схемы :)), первое, что вы должны сделать, это сделать копию оригинальный файл и назовите оригинал "gtk-widgets.css.orig". Затем, когда вы редактируете свой файл, сохраните копию вашего редактирования как "gtk-widgets.css.20160919", где у меня есть дата ГГГГММДД в ​​конце. Таким образом, при обновлении пакета deb у вас будет копия отредактированного файла. Тот, который вы редактируете с именем gtk-widgets.css, будет удален при установке пакета.


Что означает «файл темы, который вы редактировали выше»? «выше» ничего не значит здесь.
эндолит

10

Вот шаги, чтобы восстановить полосы прокрутки, которые не исчезают и имеют постоянную ширину, то есть «классические». Протестировано в сеансе 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 Если вы используете некоторые приложения, которым требуются права суперпользователя (например, Synaptic, Gedit и т. Д.), Вы также должны поместить их gtk.cssи settings.iniфайлы в корневую папку профиля:

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 есть ошибка, потому что на виртуальной машине, где помог ответ, полоса прокрутки правильно реагировала на событие hover и автоматически расширялась. На рабочем столе он не обрабатывает зависания (что на самом деле является причиной, по которой мне нужно расширить полосу прокрутки), и gtk.css тоже игнорируется
user907860

1
@ user907860 Напротив, все упомянутые выше шаги предназначены для полного игнорирования события наведения мыши. Они необходимы для создания статических, постоянных полос прокрутки, которые никогда не меняют свою ширину, как это было в эпоху до Unity.
whtyger

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

Кстати, вы не представляете, почему это не работает в Firefox 52 на настольном компьютере, а на виртуальной машине? askubuntu.com/questions/892097/...
user907860

1
Это должен быть принятый ответ. Использование dconf и тем дало очень странные результаты - не наложение, но и не нормальное. Этот ответ дает нормальные полосы прокрутки. Это должно быть сделано на уровне GTK. Примечание: Убунуту скоро переедет в 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. Смотрите lists.gnucash.org/pipermail/gnucash-user/2019- Февраль/ … Внесение этих изменений разрушает функциональность полосы прокрутки в 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-терминал. Вышеприведенные решения отлично работали для одного или двух приложений, но не для всех.

Примечание: это дает ДЕЙСТВИТЕЛЬНО большие полосы прокрутки, которые хороши для больших мониторов, потому что вы можете видеть их невооруженным глазом, не заглядывая полностью в сторону экрана каждый раз, когда вы хотите получить одну из них. Если вы хотите меньшие, измените все 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.