omarchy-migrate-notify.service is a Type=oneshot wanted by graphical-session.target, and systemd complements a target's Wants= with an implicit After=, so the target waited for the notifier to exit. The notifier does not exit quickly: it sends the notification through systemd-run --scope, which is synchronous, and omarchy-notification-send -a blocks until the user clicks. The target stayed in activating for as long as the toast was up. wayland-wm-app-daemon.service is After=graphical-session.target and nothing wants it, so uwsm-app starts it on demand. Clicking the notification runs omarchy-launch-floating-terminal-with-presentation, which execs uwsm-app, which blocks on a systemctl --user restart of that daemon -- a job queued behind the very target the clicked notifier was holding open. The terminal never opened; uwsm-app gave up on its own pipe timeout instead. Declaring After= on the wanted unit suppresses the implicit dependency rather than forming a cycle, so the target is reached without waiting and the notifier runs behind it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
21 lines
936 B
Desktop File
21 lines
936 B
Desktop File
[Unit]
|
|
Description=Notify about pending Omarchy migrations
|
|
# Login-only. There used to be an omarchy-update-user-notify.path watching
|
|
# /usr/share/omarchy/migrations, but pacman writes that directory during every
|
|
# update -- including the blessed `omarchy update`, which runs omarchy-migrate
|
|
# itself a step later -- so the watcher notified about migrations that were
|
|
# already being applied in the visible update terminal. Checking once per login
|
|
# is the only trigger that cannot collide with a running update.
|
|
ConditionPathIsDirectory=/usr/share/omarchy/migrations
|
|
# The actionable notification launches its terminal through uwsm-app, whose
|
|
# daemon starts after graphical-session.target. Run after the target too so this
|
|
# oneshot cannot hold the target open while waiting for that daemon.
|
|
After=graphical-session.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/usr/bin/omarchy-migrate-notify
|
|
|
|
[Install]
|
|
WantedBy=graphical-session.target
|