From 9a62cf6bf1a07e09b23f7b33f6e3b43491f76d76 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 | 8 +++- bin/periodic/fix-flatpaks-theming | 9 ++--- bin/periodic/fix-theming | 37 ++++++++---------- bin/periodic/fix-tweaked-desktop-files | 39 +++++++++---------- fixes-package.install | 3 ++ systemd/services/fix-flatpaks-theming.service | 13 +++++++ systemd/services/fix-theming.service | 13 +++++++ .../fix-tweaked-desktop-files.service | 13 +++++++ systemd/timers/fix-flatpaks-theming.timer | 14 +++++++ systemd/timers/fix-theming.timer | 14 +++++++ .../timers/fix-tweaked-desktop-files.timer | 14 +++++++ 11 files changed, 128 insertions(+), 49 deletions(-) create mode 100644 fixes-package.install create mode 100644 systemd/services/fix-flatpaks-theming.service create mode 100644 systemd/services/fix-theming.service create mode 100644 systemd/services/fix-tweaked-desktop-files.service 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 08e9001..7cf0b29 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -12,9 +12,10 @@ depends=('xfce4-appfinder' provides=('tromjaro-fixes') backup=() options=(!strip) +install='fixes-package.install' prepare() { - cp -R ../bin ../flatpak-overrides ../alpm-hooks . + cp -R ../bin ../flatpak-overrides ../alpm-hooks ../systemd . } package() { @@ -23,6 +24,11 @@ package() { install -Dm755 ${srcdir}/bin/standalone/* ${pkgdir}/usr/bin install -Dm755 ${srcdir}/bin/periodic/* ${pkgdir}/usr/bin + # copy systemd units + install -d ${pkgdir}/usr/lib/systemd/system + install -Dm644 ${srcdir}/systemd/services/* ${pkgdir}/usr/lib/systemd/system + install -Dm644 ${srcdir}/systemd/timers/* ${pkgdir}/usr/lib/systemd/system + # copy alpm hooks install -d ${pkgdir}/usr/share/libalpm/hooks install -Dm644 ${srcdir}/alpm-hooks/* ${pkgdir}/usr/share/libalpm/hooks 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 new file mode 100644 index 0000000..5febd7f --- /dev/null +++ b/fixes-package.install @@ -0,0 +1,3 @@ +post_install() { + systemctl enable fix-*.timer +} diff --git a/systemd/services/fix-flatpaks-theming.service b/systemd/services/fix-flatpaks-theming.service new file mode 100644 index 0000000..e144dc8 --- /dev/null +++ b/systemd/services/fix-flatpaks-theming.service @@ -0,0 +1,13 @@ +# This service unit is for fix-flatpaks-theming script +# + +[Unit] +Description=Fix flatpak theming script +Wants=fix-flatpaks-theming.timer + +[Service] +Type=oneshot +ExecStart=/usr/bin/fix-flatpaks-theming + +[Install] +WantedBy=multi-user.target diff --git a/systemd/services/fix-theming.service b/systemd/services/fix-theming.service new file mode 100644 index 0000000..c82d37a --- /dev/null +++ b/systemd/services/fix-theming.service @@ -0,0 +1,13 @@ +# This service unit is for fix-theming script +# + +[Unit] +Description=Fix theming script +Wants=fix-theming.timer + +[Service] +Type=oneshot +ExecStart=/usr/bin/fix-theming + +[Install] +WantedBy=multi-user.target diff --git a/systemd/services/fix-tweaked-desktop-files.service b/systemd/services/fix-tweaked-desktop-files.service new file mode 100644 index 0000000..5fc7195 --- /dev/null +++ b/systemd/services/fix-tweaked-desktop-files.service @@ -0,0 +1,13 @@ +# This service unit is for fix-tweaked-desktop-files script +# + +[Unit] +Description=Fix tweaked desktop files script +Wants=fix-tweaked-desktop-files.timer + +[Service] +Type=oneshot +ExecStart=/usr/bin/fix-tweaked-desktop-files + +[Install] +WantedBy=multi-user.target 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..675a196 --- /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=ffix-tweaked-desktop-files.service +OnBootSec=1 +OnUnitActiveSec=5 + +[Install] +WantedBy=timers.target \ No newline at end of file