Как указать путь до темы Gtk?
Чтобы изменить тему gtk приложения, при запуске достаточно указать ее название
GTK_THEME=название_темы ./исполняемыйфайл
GTK_THEME=Adwaita ./test
При это путь до темы такой:
/usr/share/themes/Adwaita
Однако данная команда не работает:
GTK_THEME=/usr/share/themes/Adwaita ./test
Допустим я хочу установить тему по другому пути, как мне тогда запускать gtk приложение с этой темой?
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
Вы можете пойти по одному из путей:
Поместить тему по адресу
~/.theme/Theme-Name
тогда команда будет
GTK_THEME=Theme-Name ./test
Поместить тему по адресу
$GTK_DATA_PREFIX/share/themes/Theme-Name
тогда команда будет
GTK_DATA_PREFIX=/path/to/prefix GTK_THEME=Theme-Name ./test
либо загрузить CSS напрямую, вставив в один из файлов
~/.config/gtk-3.0/gtk.css
$XDG_CONFIG_HOME/gtk-3.0/gtk.css
строку, напоминающую что-то вроде
@import url("resource:///org/gnome/adwaita/gtk-main.css");
Или загрузить CSS вызывая функции напрямую
gtk_css_provider_load_from_file()
gtk_style_context_add_provider()
Также можно скомпилировать свой файл ресурсов используя, например вот такой скриптец:
#!/bin/bash
NAME=$1
SOURCE=$2
DEST=./build/$NAME
echo "Building theme $NAME"
rm -rf "$DEST"
cp -r "$SOURCE" "$DEST"
FILES=$(find "$DEST" -type f -printf "%P\n" | xargs -i echo " <file>{}</file>")
cat <<EOF >"$DEST/gnome-shell-theme.gresource.xml"
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">
$FILES
</gresource>
</gresources>
EOF
(
cd "$DEST"
glib-compile-resources gnome-shell-theme.gresource.xml
)
echo "-> $DEST/gnome-shell-theme.gresource"
Тогда можно использовать функцию
gtk_css_provider_load_from_resource()