From 00dcf0b9e988037381c13a65329795afc56431a6 Mon Sep 17 00:00:00 2001 From: eSh Date: Fri, 16 Sep 2022 01:14:20 +0200 Subject: [PATCH] add systemd timers for periodic fixes --- PKGBUILD | 1 + bin/periodic/fix-flatpaks-theming | 9 ++--- bin/periodic/fix-theming | 37 ++++++++---------- bin/periodic/fix-tweaked-desktop-files | 39 +++++++++---------- fixes-package.install | 6 +-- systemd/services/fix-flatpaks-theming.service | 6 +-- systemd/services/fix-theming.service | 6 +-- .../fix-tweaked-desktop-files.service | 6 +-- systemd/timers/fix-flatpaks-theming.timer | 14 +++++++ systemd/timers/fix-theming.timer | 14 +++++++ .../timers/fix-tweaked-desktop-files.timer | 14 +++++++ 11 files changed, 89 insertions(+), 63 deletions(-) create mode 100644 systemd/timers/fix-flatpaks-theming.timer create mode 100644 systemd/timers/fix-theming.timer create mode 100644 systemd/timers/fix-tweaked-desktop-files.timer diff --git a/PKGBUILD b/PKGBUILD index cd9cde6..ec42f38 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -35,4 +35,5 @@ package() { # copy systemd units install -d ${pkgdir}/usr/lib/systemd/user install -Dm644 ${srcdir}/systemd/services/* ${pkgdir}/usr/lib/systemd/user + install -Dm644 ${srcdir}/systemd/timers/* ${pkgdir}/usr/lib/systemd/user } diff --git a/bin/periodic/fix-flatpaks-theming b/bin/periodic/fix-flatpaks-theming index c4ab141..d0e973c 100755 --- a/bin/periodic/fix-flatpaks-theming +++ b/bin/periodic/fix-flatpaks-theming @@ -1,7 +1,4 @@ #!/bin/sh -while :; do - rm -r ~/.themes/* 2> /dev/null - rsync -av --progress /usr/share/themes/* ~/.themes/ --exclude Windowck - rsync -av --progress ~/.local/share/themes/* ~/.themes/ --exclude Windowck-dark - sleep 600 -done \ No newline at end of file +rm -r ~/.themes/* 2> /dev/null +rsync -av --progress /usr/share/themes/* ~/.themes/ --exclude Windowck +rsync -av --progress ~/.local/share/themes/* ~/.themes/ --exclude Windowck-dark diff --git a/bin/periodic/fix-theming b/bin/periodic/fix-theming index 7ea4d30..1ced0dc 100755 --- a/bin/periodic/fix-theming +++ b/bin/periodic/fix-theming @@ -11,7 +11,6 @@ sync_theme() { # Apply the current theme with gsettings gsettings set org.gnome.desktop.interface gtk-theme "$theme" } - sync_icon_theme() { # Get the current icon theme icon_theme=$(xfconf-query -c xsettings -p /Net/IconThemeName) @@ -20,25 +19,21 @@ sync_icon_theme() { sed -i "s/^icon_theme=.*$/icon_theme=$icon_theme/" "$HOME"/.config/qt6ct/qt6ct.conf } -while :; do - # Get the current system theme - theme_new=$(xfconf-query -c xsettings -p /Net/ThemeName) - # Get the current icon theme - icon_theme_new=$(xfconf-query -c xsettings -p /Net/IconThemeName) - # Get the current font name - font_new=$(xfconf-query -c xsettings -p /Gtk/FontName) +# Get the current system theme +theme_new=$(xfconf-query -c xsettings -p /Net/ThemeName) +# Get the current icon theme +icon_theme_new=$(xfconf-query -c xsettings -p /Net/IconThemeName) +# Get the current font name +font_new=$(xfconf-query -c xsettings -p /Gtk/FontName) - # Run sync_theme if the new system theme doesn't match the previous one - [ "$theme_new" != "$theme_prev" ] && sync_theme - # Run sync_icon_theme if the new icon theme doesn't match the previous one - [ "$icon_theme_new" != "$icon_theme_prev" ] && sync_icon_theme - # If the new font doesn't match the previous one, apply the new font for the title of xfce windows - [ "$font_new" != "$font_prev" ] && xfconf-query -c xfwm4 -p /general/title_font -n -t string -s "$font_new" +# Run sync_theme if the new system theme doesn't match the previous one +[ "$theme_new" != "$theme_prev" ] && sync_theme +# Run sync_icon_theme if the new icon theme doesn't match the previous one +[ "$icon_theme_new" != "$icon_theme_prev" ] && sync_icon_theme +# If the new font doesn't match the previous one, apply the new font for the title of xfce windows +[ "$font_new" != "$font_prev" ] && xfconf-query -c xfwm4 -p /general/title_font -n -t string -s "$font_new" - # The new values become the previous values - theme_prev=$theme_new - icon_theme_prev=$icon_theme_new - font_prev=$font_new - - sleep 3 -done +# The new values become the previous values +theme_prev=$theme_new +icon_theme_prev=$icon_theme_new +font_prev=$font_new diff --git a/bin/periodic/fix-tweaked-desktop-files b/bin/periodic/fix-tweaked-desktop-files index f9bc687..9ebc42f 100755 --- a/bin/periodic/fix-tweaked-desktop-files +++ b/bin/periodic/fix-tweaked-desktop-files @@ -66,24 +66,21 @@ fixfiles() { done } -while :; do - user_new=$(ls -ad "$user"/*.desktop 2>/dev/null) - flatpak_local_new=$(ls -ad "$flatpak_local"/*.desktop 2>/dev/null) - flatpak_global_new=$(ls -ad "$flatpak_global"/*.desktop 2>/dev/null) - pacman_local_new=$(ls -ad "$pacman_local"/*.desktop 2>/dev/null) - pacman_global_new=$(ls -ad "$pacman_global"/*.desktop 2>/dev/null) - snap_new=$(ls -ad "$snap"/*.desktop 2>/dev/null) - [ "$user_new" != "$user_old" ] && detectfiles - [ "$flatpak_local_new" != "$flatpak_local_old" ] || - [ "$flatpak_global_new" != "$flatpak_global_old" ] || - [ "$pacman_local_new" != "$pacman_local_old" ] || - [ "$pacman_global_new" != "$pacman_global_old" ] || - [ "$snap_new" != "$snap_old" ] && fixfiles - user_old=$user_new - flatpak_local_old=$flatpak_local_new - flatpak_global_old=$flatpak_global_new - pacman_local_old=$pacman_local_new - pacman_global_old=$pacman_global_new - snap_old=$snap_new - sleep 5 -done \ No newline at end of file +user_new=$(ls -ad "$user"/*.desktop 2>/dev/null) +flatpak_local_new=$(ls -ad "$flatpak_local"/*.desktop 2>/dev/null) +flatpak_global_new=$(ls -ad "$flatpak_global"/*.desktop 2>/dev/null) +pacman_local_new=$(ls -ad "$pacman_local"/*.desktop 2>/dev/null) +pacman_global_new=$(ls -ad "$pacman_global"/*.desktop 2>/dev/null) +snap_new=$(ls -ad "$snap"/*.desktop 2>/dev/null) +[ "$user_new" != "$user_old" ] && detectfiles +[ "$flatpak_local_new" != "$flatpak_local_old" ] || + [ "$flatpak_global_new" != "$flatpak_global_old" ] || + [ "$pacman_local_new" != "$pacman_local_old" ] || + [ "$pacman_global_new" != "$pacman_global_old" ] || + [ "$snap_new" != "$snap_old" ] && fixfiles +user_old=$user_new +flatpak_local_old=$flatpak_local_new +flatpak_global_old=$flatpak_global_new +pacman_local_old=$pacman_local_new +pacman_global_old=$pacman_global_new +snap_old=$snap_new diff --git a/fixes-package.install b/fixes-package.install index b4200c4..fea489b 100644 --- a/fixes-package.install +++ b/fixes-package.install @@ -1,14 +1,14 @@ post_install() { - find /usr/lib/systemd/user/ -name "fix-*.service" -type f -printf "%f\0" | xargs -0 systemctl --global enable + find /usr/lib/systemd/user/ -name "fix-*.timer" -type f -printf "%f\0" | xargs -0 systemctl --global enable echo "Warning: A restart is required to take effect" } post_upgrade() { - find /usr/lib/systemd/user/ -name "fix-*.service" -type f -printf "%f\0" | xargs -0 systemctl --global enable + find /usr/lib/systemd/user/ -name "fix-*.timer" -type f -printf "%f\0" | xargs -0 systemctl --global enable echo "Warning: A restart is required to take effect" } pre_remove() { - find /usr/lib/systemd/user/ -name "fix-*.service" -type f -printf "%f\0" | xargs -0 systemctl --global disable + find /usr/lib/systemd/user/ -name "fix-*.timer" -type f -printf "%f\0" | xargs -0 systemctl --global disable echo "Warning: A restart is required to take effect" } diff --git a/systemd/services/fix-flatpaks-theming.service b/systemd/services/fix-flatpaks-theming.service index 703891c..212b2f7 100644 --- a/systemd/services/fix-flatpaks-theming.service +++ b/systemd/services/fix-flatpaks-theming.service @@ -3,12 +3,10 @@ [Unit] Description=Fix flatpak theming script -StartLimitIntervalSec=0 +Wants=fix-flatpaks-theming.timer [Service] -Type=simple -Restart=always -RestartSec=1 +Type=oneshot ExecStart=/usr/bin/fix-flatpaks-theming [Install] diff --git a/systemd/services/fix-theming.service b/systemd/services/fix-theming.service index 9560510..df9f631 100644 --- a/systemd/services/fix-theming.service +++ b/systemd/services/fix-theming.service @@ -3,12 +3,10 @@ [Unit] Description=Fix theming script -StartLimitIntervalSec=0 +Wants=fix-theming.timer [Service] -Type=simple -Restart=always -RestartSec=1 +Type=oneshot ExecStart=/usr/bin/fix-theming [Install] diff --git a/systemd/services/fix-tweaked-desktop-files.service b/systemd/services/fix-tweaked-desktop-files.service index 150d057..140e60d 100644 --- a/systemd/services/fix-tweaked-desktop-files.service +++ b/systemd/services/fix-tweaked-desktop-files.service @@ -3,12 +3,10 @@ [Unit] Description=Fix tweaked desktop files script -StartLimitIntervalSec=0 +Wants=fix-tweaked-desktop-files.timer [Service] -Type=simple -Restart=always -RestartSec=1 +Type=oneshot ExecStart=/usr/bin/fix-tweaked-desktop-files [Install] diff --git a/systemd/timers/fix-flatpaks-theming.timer b/systemd/timers/fix-flatpaks-theming.timer new file mode 100644 index 0000000..614059c --- /dev/null +++ b/systemd/timers/fix-flatpaks-theming.timer @@ -0,0 +1,14 @@ +# This timer unit is for fix-flatpaks-theming service unit +# + +[Unit] +Description=Run fix flatpaks theming script every 600 seconds +Requires=fix-flatpaks-theming.service + +[Timer] +Unit=fix-flatpaks-theming.service +OnBootSec=1 +OnUnitActiveSec=600 + +[Install] +WantedBy=timers.target \ No newline at end of file diff --git a/systemd/timers/fix-theming.timer b/systemd/timers/fix-theming.timer new file mode 100644 index 0000000..7dd921f --- /dev/null +++ b/systemd/timers/fix-theming.timer @@ -0,0 +1,14 @@ +# This timer unit is for fix-theming service unit +# + +[Unit] +Description=Run fix theming script every 3 seconds +Requires=fix-theming.service + +[Timer] +Unit=fix-theming.service +OnBootSec=1 +OnUnitActiveSec=3 + +[Install] +WantedBy=timers.target \ No newline at end of file diff --git a/systemd/timers/fix-tweaked-desktop-files.timer b/systemd/timers/fix-tweaked-desktop-files.timer new file mode 100644 index 0000000..5a73180 --- /dev/null +++ b/systemd/timers/fix-tweaked-desktop-files.timer @@ -0,0 +1,14 @@ +# This timer unit is for fix-tweaked-desktop-files service unit +# + +[Unit] +Description=Run fix tweaked desktop files script every 5 seconds +Requires=fix-tweaked-desktop-files.service + +[Timer] +Unit=fix-tweaked-desktop-files.service +OnBootSec=1 +OnUnitActiveSec=5 + +[Install] +WantedBy=timers.target \ No newline at end of file