Как мне получить yad для gtk3 для настройки шрифта кнопки, фона и цвета переднего плана?

#gtk3 #yad

#gtk3 #yad

Вопрос:

Я использую yad для GTK3 (не GTK2) на Raspberry Pi 3 для отображения набора кнопок. Экран находится далеко от того места, где я сижу, поэтому мне нужен способ выделить текст кнопки и выделенную кнопку. Я совершенно не знаком с внутренней работой GTK3, и мне просто нужно пошаговое описание того, что делать. Я не хочу менять темы или другие более глобальные настройки, я просто хочу, чтобы это работало для этого выполнения YAD. Возможно ли это?

Я видел блог, в котором описывалось, как изменить стиль кнопок с помощью RC-файла, но это было для версии yad, использующей библиотеки GTK2. Вскоре я узнал, что это не сработает у меня на Pi 3. Я должен упомянуть, что я использую оконный менеджер LXDE по умолчанию.

Я надеюсь, что кто-нибудь сможет пошагово рассказать новичку о содержимом файла, о том, куда поместить файл и как его использовать. Я знаю, что решение связано с css, но я не знаком с тем, как сделать что-то подобное и как сделать CSS активным только для yad, и я не знаю, какие вещи поместить в указанный файл css.

Комментарии:

1. Не по теме: рассматривали ли вы возможность использования другого языка и использования Gtk3 напрямую? Скажем, Python Glade Gtk3? С помощью этой комбинации легко изменять размеры кнопок.

2. У меня нет. Честно говоря, я надеялся не идти по куче альтернативных кроличьих нор. У меня есть yad, работающий для того, что мне нужно, мне просто нужно, чтобы кнопки были более заметными.

3. С момента публикации моего первоначального вопроса я добился некоторого прогресса. Я продвинулся дальше, чем оригинал. Что помогло, так это немного узнать об интерактивном отладчике GTK. После кучи попыток я смог улучшить шрифт и цвет кнопки. Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу понять, как создать CSS-файл для конкретного приложения для yad. Я включил отладчик, используя ‘GTK_DEBUG = интерактивный яд бла-бла-бла’

4. Похоже, что в yad нет реализации для загрузки CSS-файлов. Yad нужно будет добавить функциональность CSS для вас. Вот почему я предложил создать ваше собственное «приложение».

5. Я нашел решение, которое сработало для меня. Смотрите мой ответ ниже.

Ответ №1:

В основном я решил свою собственную ситуацию. Надеюсь, это поможет другим. Это не идеально, но оно удовлетворяет мои потребности.

Первое, что я сделал, это запустил yad с помощью отладчика GTK.

 export GTK_DEBUG=interactive
yad --title "my title" --button "button1:1" --button "button2:2" --button "button3:3" --text "some text"
  

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

Тогда еще одной вещью, которая помогла, была возможность изменять темы GTK3 «на лету». Я сделал это с помощью:

 export GTK_THEME="Adwaita-dark"
  

Затем я снова запускаю строку yad. В нем временно использовалась новая тема.

Я обнаружил, что тема сделала в основном то, что я хотел, и, похоже, она учитывает мой пользовательский css. По какой-то причине, в которую я не вникал, использование темы по умолчанию «Adwaita» не соответствовало моему пользовательскому css. Очевидно, что если я выберу другую тему, вам придется поместить пользовательский css в каталог этой темы вместо ‘Adwaita-dark’

Чтобы сохранить свои настройки, я создал $HOME /.themes и создал в нем следующие каталоги:

  • $HOME/.themes/Adwaita-темный
  • $HOME/.themes/Adwaita-dark / gtk-3.0

Затем я поместил свой пользовательский css в $ HOME /.themes/Adwaita-dark / gtk-3.0 / gtk.css

Это мой пользовательский css, который переопределяет значения по умолчанию в yad:

 /* The background of the entire window
box {
    background-image: image(rgb(224, 224, 209));
} */

/* The progress slider */
progress {
   /* background-image: image(rgb(102, 102, 255)); */
   background-image: image(rgb(102, 0, 255));
}

/* this gets us the highlighting behavior */
button:focus {
   color: black;
   border-top-color: yellow;
   border-left-color: yellow;
   border-right-color: yellow;
   border-bottom-color: yellow;
   border-bottom-width: 10px;
   border-top-width: 10px;
   border-bottom-width: 10px;
   background-image: image(rgb(255,102,255));
}


button {
   color: yellow;
   font: 24px "comic sans";
   border-top-color: black;
   border-left-color: black;
   border-right-color: black;
   border-bottom-color: black;
   border-bottom-width: 10px;
   background-image: image(rgb(100,100,100));
}  

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

 GTK_THEME="Adwaita-dark" yad --title "my title" --button "button1:1" --button "button2:2" --button "button3:3" --text "some text"
  

Комментарии:

1. спасибо виртуальной машине!! этот онлайнер также работает для каждого вызываемого yad, и он (конечно) сохраняет цвета: mkdir -vp ~/.themes/temp/gtk-3.0;echo "box {background-image: image(rgb(255, 0,0));}" >~/.themes/temp/gtk-3.0/gtk.css;GTK_THEME="temp" yad --title "my title" --text hi