#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