Remove the pacman hook

Status bars already drop installed entries, and the path unit covers repo
builds, so the hook only ran checkupdates on every transaction.
This commit is contained in:
Daniele Fucini
2026-10-18 15:47:33 +02:00
parent 69450e4a3c
commit 60e12c2aa8
5 changed files with 4 additions and 29 deletions
-2
View File
@@ -28,8 +28,6 @@ package()
install -Dm644 "$pkgname"-quiet.service "$pkgdir"/usr/lib/systemd/user/"$pkgname"-quiet.service install -Dm644 "$pkgname"-quiet.service "$pkgdir"/usr/lib/systemd/user/"$pkgname"-quiet.service
install -Dm644 "$pkgname".timer "$pkgdir"/usr/lib/systemd/user/"$pkgname".timer install -Dm644 "$pkgname".timer "$pkgdir"/usr/lib/systemd/user/"$pkgname".timer
install -Dm644 "$pkgname".path "$pkgdir"/usr/lib/systemd/user/"$pkgname".path install -Dm644 "$pkgname".path "$pkgdir"/usr/lib/systemd/user/"$pkgname".path
install -Dm755 "$pkgname"-refresh "$pkgdir"/usr/lib/"$pkgname"/refresh
install -Dm644 "$pkgname".hook "$pkgdir"/usr/share/libalpm/hooks/"$pkgname".hook
install -Dm644 README.md "$pkgdir"/usr/share/doc/"$pkgname"/README.md install -Dm644 README.md "$pkgdir"/usr/share/doc/"$pkgname"/README.md
install -Dm644 config.example "$pkgdir"/usr/share/doc/"$pkgname"/config.example install -Dm644 config.example "$pkgdir"/usr/share/doc/"$pkgname"/config.example
} }
+3 -5
View File
@@ -43,11 +43,9 @@ systemctl --user enable --now update-notify.timer
The timer runs 5 minutes after boot, then every 6 hours. The timer runs 5 minutes after boot, then every 6 hours.
A pacman hook also runs `update-notify --quiet` after every pacman transaction, for each logged-in user whose timer is active, so the status bar file is current right after an upgrade.
### Refresh after building packages ### Refresh after building packages
Building into a local repository (`aur build`, `aur sync`) doesn't run pacman, so the hook can't catch it. To run `update-notify --quiet` whenever a repository changes, add the repository files to watch to `update-notify.path`: To run `update-notify --quiet` whenever a repository changes, add the repository files to watch to `update-notify.path`:
``` ```
systemctl --user edit update-notify.path systemctl --user edit update-notify.path
@@ -73,7 +71,7 @@ update-notify [-q|--quiet] [threshold]
`threshold` is the minimum number of updates (repo + AUR) before update counts are shown. It overrides the `THRESHOLD` setting below for that run's notification only; the pending file keeps the configured value. `threshold` is the minimum number of updates (repo + AUR) before update counts are shown. It overrides the `THRESHOLD` setting below for that run's notification only; the pending file keeps the configured value.
`--quiet` updates the pending file without notifying. Changes to a notification already shown are recorded, so the next timer run doesn't repeat them; a new notification is left for the timer. The pacman hook and `update-notify.path` use it (through `update-notify-quiet.service`), so building or upgrading many packages doesn't notify after each one. `--quiet` updates the pending file without notifying. Changes to a notification already shown are recorded, so the next timer run doesn't repeat them; a new notification is left for the timer. `update-notify.path` uses it (through `update-notify-quiet.service`), so building many packages doesn't notify after each one.
## Configuration ## Configuration
@@ -105,7 +103,7 @@ aur <pkg> <newver>
kernel <custom-pkg> <stock-ver> kernel <custom-pkg> <stock-ver>
``` ```
The file reflects the last run, which the pacman hook and `update-notify.path` keep close to current. To keep a bar current in between, drop entries whose installed version (`pacman -Q`) is no longer older than `newver`, or, for `kernel` lines, whose custom build has caught up with `stock-ver` (ignoring `pkgrel`). This only reads local data, so it's cheap to run often. The file reflects the last timer or `update-notify.path` run. To keep a bar current in between, e.g. right after an upgrade, drop entries whose installed version (`pacman -Q`) is no longer older than `newver`, or, for `kernel` lines, whose custom build has caught up with `stock-ver` (ignoring `pkgrel`). This only reads local data, so it's cheap to run often.
## License ## License
+1 -1
View File
@@ -19,7 +19,7 @@ if [[ -r $config_file ]]; then
# shellcheck source=/dev/null # shellcheck source=/dev/null
source "$config_file" source "$config_file"
fi fi
quiet=0 # refresh the pending file without notifying (path unit and pacman hook) quiet=0 # refresh the pending file without notifying (path unit)
if [[ ${1:-} == -q || ${1:-} == --quiet ]]; then if [[ ${1:-} == -q || ${1:-} == --quiet ]]; then
quiet=1 quiet=1
shift shift
-10
View File
@@ -1,10 +0,0 @@
#!/bin/bash
# Run update-notify for every logged-in user whose timer is active (called by the pacman hook as root)
systemctl list-units --plain --no-legend --state=running 'user@*.service' |
while read -r unit _; do
uid=${unit#user@}
uid=${uid%.service}
user=$(id -nu "$uid") || continue
systemctl --user -M "$user@" is-active --quiet update-notify.timer || continue
systemctl --user -M "$user@" start --no-block update-notify-quiet.service
done
-11
View File
@@ -1,11 +0,0 @@
[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *
[Action]
Description = Refreshing update-notify...
When = PostTransaction
Exec = /usr/lib/update-notify/refresh