systemd/user
2026-10-27 13:13:43 +00:00
..
graphical-session.target.wants update 2026-10-24 14:00:17 +01:00
kokoro.service.d update 2026-10-24 14:00:17 +01:00
mango-session.target.wants update 2026-10-27 12:49:13 +00:00
pipewire-pulse.service.wants update 2026-10-24 14:00:17 +01:00
pipewire.service.wants update 2026-10-24 14:00:17 +01:00
wireplumber.service.wants update 2026-10-24 14:00:17 +01:00
.gitignore update .gitignore 2020-09-01 17:30:25 +01:00
audio-resume-monitor.service update 2026-10-24 14:00:17 +01:00
audio-resume-monitor.sh update 2026-10-24 14:00:17 +01:00
audio-resume-recover.sh update 2026-10-24 14:00:17 +01:00
backup-pass.service update 2026-10-27 12:49:13 +00:00
backup-pass.sh update 2026-10-27 12:49:13 +00:00
backup-pass.timer update 2026-10-27 12:49:13 +00:00
blueman-applet.service create mango-session.target 2026-03-04 19:58:39 +00:00
gcr-prompter.service create mango-session.target 2026-03-04 19:58:39 +00:00
gnome-keyring-session.service create mango-session.target 2026-03-04 19:58:39 +00:00
kokoro.service update 2026-10-24 14:00:17 +01:00
mango-session.target create mango-session.target 2026-03-04 19:58:39 +00:00
mango-tag-osd.service update 2026-10-27 12:49:13 +00:00
package-status-refresh.service update 2026-10-27 12:49:13 +00:00
package-status-refresh.sh update 2026-10-27 12:49:13 +00:00
package-status-refresh.timer update 2026-10-27 12:49:13 +00:00
polkit-gnome-agent.service create mango-session.target 2026-03-04 19:58:39 +00:00
proxy@.service update 2026-02-13 01:59:15 +00:00
README.md update 2026-10-27 13:13:43 +00:00
socks-red.service update 2026-03-30 19:36:03 +01:00
swayidle.service update 2026-10-27 12:49:13 +00:00
swww.service update 2026-03-30 15:52:27 +01:00
ultracc-mount.service update 2026-10-27 12:49:13 +00:00
wait-for-mount.sh update 2026-10-27 12:49:13 +00:00
wasabi-data-crypt.service update 2026-10-27 12:49:13 +00:00
wasabi-data-crypt.target update 2026-10-27 12:49:13 +00:00
wasabi-data-mount.service update 2026-10-27 12:49:13 +00:00
wasabi-media-mount.service update 2026-10-27 12:49:13 +00:00
wasabi-peertube-mount.service update 2026-10-27 12:49:13 +00:00
waybar.service create mango-session.target 2026-03-04 19:58:39 +00:00

User units

This directory contains the user services, timers and targets supervised by systemd --user. Unit files are the source of truth for exact commands and dependencies; this README records their purpose and operational interfaces.

Package status

package-status-refresh.timer becomes due two minutes after boot and then every 30 minutes. It runs the static oneshot service package-status-refresh.service, which calls package-status-refresh.sh.

The refresher:

  • uses checkupdates with a dedicated temporary package database;
  • counts repository updates and local orphan packages;
  • avoids reading while Pacman holds its database lock;
  • discards results if a package transaction overlaps the check;
  • preserves the previous valid cache after network or mirror failures; and
  • atomically replaces ~/.cache/package-status/status on success.

~/.cache/package-status/last-attempt supports the shell's five-minute retry backoff. Exit status 75 means Pacman was active or local package state changed during the refresh; the service treats that as an expected outcome.

The Bash repository reads the cache without blocking terminal startup. Its status module may request a non-blocking refresh when the cache is stale. The profile repository's Arch update function does the same after a successful upgrade.

Enable and inspect the timer with:

systemctl --user enable --now package-status-refresh.timer
systemctl --user list-timers package-status-refresh.timer
systemctl --user status package-status-refresh.service
journalctl --user -u package-status-refresh.service

The refresher requires Pacman, Fakeroot and checkupdates from pacman-contrib.

Mango session

mango-session.target groups graphical services that require an initialized Wayland session. Mango starts the target after importing its display and D-Bus environment into the user manager.

Target members are:

  • waybar.service
  • swww.service
  • blueman-applet.service
  • polkit-gnome-agent.service
  • gcr-prompter.service
  • gnome-keyring-session.service
  • swayidle.service
  • mango-tag-osd.service

Stopping the target stops its PartOf= services with the compositor session.

Audio and speech

  • audio-resume-monitor.service watches logind for resume events and runs audio-resume-recover.sh to rebuild PipeWire/Bluetooth audio state.
  • kokoro.service supervises the persistent local Kokoro text-to-speech server and follows the PipeWire lifecycle.

Mounts and backups

Remote storage units include the Wasabi S3 mounts, encrypted Wasabi data mount and Ultra.cc rclone mount. wasabi-data-crypt.target keeps the encrypted mount available for interactive use. See ../MOUNTS.md for mount architecture and operating details.

backup-pass.timer runs at 10:00 and 22:00. Its service requires the encrypted Wasabi data mount and copies timestamped KeePass database backups using backup-pass.sh.

SSH proxies

proxy@.service starts mutually exclusive SOCKS proxy profiles defined in ~/.ssh/config:

systemctl --user start proxy@alice
systemctl --user start proxy@red
systemctl --user stop proxy@red

Add new mutually exclusive instances to the template unit's Conflicts= list.

socks-red.service is a separate persistent SOCKS proxy on 127.0.0.1:1188 using ray@red.isnet.uk:

systemctl --user enable --now socks-red.service