LINUX.ORG.RU

GTK3: переопределение цвета и фона выделяемого текста

 


0

2

Пытаясь немного переделать тему GTK3, столкнулся тем, что не могу корректно переопределить цвет и фон выделяемого текста (например, на странице или в поисковой строке браузера).
Делаю так:

selection
{
    color: white;
    background-color: grey;
}
При этом в части приложений переопределение отрабатывает, а в части - нет.
Прошу специалистов подсказать, в чём может быть дело.

Дело может быть в версии gtk( если она достаточно старая ). gtk.css дефолтной темы отсмотрен?

Deleted ()
Ответ на: комментарий от Deleted

Дело может быть в версии gtk( если она достаточно старая ).

Версия GTK3: 3.24.1

gtk.css дефолтной темы отсмотрен?

Дефолтная тема - это Adwaita, а там в gtk.css баранка.
Тут дело в том, что мой кастомный gtk.css формирует оформление вполне корректно за исключением этого несчастного selection, причём и selection тоже во многих случая отрабатывает: например, в Geany и в Audacity он работает, а в Firefox и Remmina - нет.

Galapago ()

Делаю так:

Как именно? Это форк Adwaita? Пересобираешь тему или напрямую gtk.css редактируешь?

nvl ★★ ()

Он задается в разных местах для разных элементов. В исходниках Adwaita за это отвечает placeholder, называется, емнип, %selected_items - его наследуют разные элементы. Искать/менять все элементы, вероятно, займет много времени.

Здесь хорошо написано, как определить, откуда берутся свойства того или иного элемента.
Настройка тем GNOME (комментарий)

monday ()
Ответ на: комментарий от nvl

Как именно? Это форк Adwaita? Пересобираешь тему или напрямую gtk.css редактируешь?

Есть тема GTKStepMinimal для GTK2, поддержки GTK3 нет. Я создал заглушку в /usr/share/themes/GTKStepMinimal/gtk-3.0/, а в ~/.config/gtk-3.0/ - settings.ini и gtk.css, над которым, собственно, сейчас и колдую.

Galapago ()
Ответ на: комментарий от Galapago

Так используй Adwaita как основу, там все просто. В _common.scss есть «%selected_items {}», которое берет информацию из _colors.scss. Соотвественно, либо изменить базовые цвета $selected_bg_color и selected_fg_color, либо менять непосредственно в «%selected_items {}». Вручную сильно затратно.

nvl ★★ ()
Ответ на: комментарий от nvl

Меня сильно смущает другой момент: почему selection не работает только для некоторых приложений, а для других всё-таки работает?

Galapago ()

Это зависит от темы, коих немало, сейчас модно все цвета в один файл помещать и генерить потом cssки с помощью sass. Весьма удобно, кстати, я так и делаю последнее время.

не работает только для некоторых приложений, а для других всё-таки работает?

Может потому что некоторые приложения на gtk2?

enso ★★★★★ ()
Последнее исправление: enso (всего исправлений: 1)
Ответ на: комментарий от Galapago

Вот дифф сгенерированных gtk.css, для которых в исходных _common.scss были изменены цвета в «%selected_items {}».

--- gtk.css	2018-10-01 19:30:29.586826000 +0300
+++ gtk_.css	2018-10-01 19:25:20.865998000 +0300
@@ -4891,7 +4891,7 @@
 textview text selection, flowbox flowboxchild:selected, spinbutton:not(.vertical) selection,
 entry selection, modelbutton.flat:selected,
 .menuitem.button.flat:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar:selected {
-  background-color: grey; }
+  background-color: #417ce2; }
   row:selected label, label:selected, .selection-mode button.titlebutton, .view:selected:focus, .view:selected, iconview:selected, .view text:selected, iconview text:selected,
   textview text:selected, .view text selection:focus, iconview text selection:focus, .view text selection, iconview text selection,
   textview text selection:focus,
@@ -4905,20 +4905,20 @@
     textview text selection:disabled, flowbox flowboxchild:disabled:selected, label:disabled selection, spinbutton:not(.vertical) selection:disabled,
     entry selection:disabled, modelbutton.flat:disabled:selected,
     .menuitem.button.flat:disabled:selected, row:disabled:selected, calendar:disabled:selected {
-      color: silver; }
+      color: #a0bdf0; }
     row:selected label:backdrop, label:backdrop:selected, .selection-mode button.titlebutton:backdrop, iconview:backdrop:selected:focus, .view:backdrop:selected, iconview:backdrop:selected, iconview text:backdrop:selected:focus,
     textview text:backdrop:selected:focus, .view text:backdrop:selected, iconview text:backdrop:selected,
     textview text:backdrop:selected, iconview text selection:backdrop:focus, .view text selection:backdrop, iconview text selection:backdrop,
     textview text selection:backdrop, flowbox flowboxchild:backdrop:selected, label:backdrop selection, spinbutton:not(.vertical) selection:backdrop,
     entry selection:backdrop, modelbutton.flat:backdrop:selected,
     .menuitem.button.flat:backdrop:selected, row:backdrop:selected, calendar:backdrop:selected {
-      color: white; }
+      color: #faf7ec; }
       row:selected label:backdrop:disabled, label:backdrop:disabled:selected, .selection-mode button.titlebutton:backdrop:disabled, .view:backdrop:disabled:selected, iconview:backdrop:disabled:selected, .view text:backdrop:disabled:selected, iconview text:backdrop:disabled:selected,
       textview text:backdrop:disabled:selected, .view text selection:backdrop:disabled, iconview text selection:backdrop:disabled,
       textview text selection:backdrop:disabled, flowbox flowboxchild:backdrop:disabled:selected, label:disabled selection:backdrop, label:backdrop selection:disabled, spinbutton:not(.vertical) selection:backdrop:disabled,
       entry selection:backdrop:disabled, modelbutton.flat:backdrop:disabled:selected,
       .menuitem.button.flat:backdrop:disabled:selected, row:backdrop:disabled:selected, calendar:backdrop:disabled:selected {
-        color: #a6a6a6; }
+        color: #79a1e5; }
 
 .monospace {
   font-family: monospace; }

В firefox цвета тоже изменились.

nvl ★★ ()
Ответ на: комментарий от enso

Может потому что некоторые приложения на gtk2?

Нет, я говорю только о GTK3-приложениях.

Galapago ()
Ответ на: комментарий от Galapago

Приложение-где-работает ищет selection, находит его в твоем gtk.css, использует его. Приложение-где-не-работает ищет не selection, а text:selected, или text selection, или что-то еще, не находит его в твоем gtk.css, использует дефолт.

monday ()
Ответ на: комментарий от monday

ищет не selection, а text:selected, или text selection, или что-то еще

Да, ты абсолютно прав: те, приложения, в которых не отрабатывал selection действительно искали text:selected. Теперь цвет и фон выделяемого текста везде переопределяются корректно.

Большое всем спасибо за помощь!

Galapago ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.