Команда, которую я хочу, чтобы система запускала, когда пользователь меняет текущую тему, -
wallch --changetheme
Как я могу это сделать?
Используйте dconf watch
для отслеживания изменений в пути настройки, которые вас интересуют.
#!/bin/bash
while read -r line; do
[[ -n $line ]] || echo "Change in theme setting detected"
done < <(dconf watch /org/gnome/desktop/interface/gtk-theme)
[[ -n $line ]]
используется в качестве обходного пути, потому что dconf watch
запускает 3 строки в своем выходе каждый раз, когда изменение обнаружено
Классный вопрос!
Нет простого способа, о котором я знаю. Однако вы можете настроить скрипт, выполняющий эту команду:
gsettings get org.gnome.desktop.interface gtk-theme
вернет текущую тему:
'Adwaita'
(я нахожусь в GNOME).
Так что это сценарий:
#! /bin/bash
pretheme="$(gsettings get org.gnome.desktop.interface gtk-theme)"
while :
do
ctheme="$(gsettings get org.gnome.desktop.interface gtk-theme)"
if [ "$ctheme" = "$pretheme" ]
then
echo "nochange"
else
wallch --changetheme
fi
pretheme="$(gsettings get org.gnome.desktop.interface gtk-theme)"
sleep 10
done