Files
Panama/config/local/share/systemd/user/panama-crash-watch.service
Gabriel Brown e723fabed3 Stop the session you started, so the next one can begin
Logging out of plain Hyprland left the desktop running. autostart.lua starts
about ten user units, none of them children of the compositor, and the shutdown
handler that was meant to stop them stopped hyprland-session.target -- a unit
Fedora does not ship. systemctl says 'Unit not found', the handler reports
nothing, and hyprpaper, hypridle, vicinae and the polkit agent keep running
after logout. Each of them Requires=graphical-session.target, so that target
stayed active with no session behind it.

The symptom was not a broken Hyprland. Both uwsm and gnome-session refuse to
start into a session that is already running, so 'Hyprland (uwsm-managed)' and
GNOME both bounced back to the login screen, and plain Hyprland -- which makes
no such check -- was the only one that worked. The session that looked healthy
was the one leaving the mess, and it was the one Panama tells people not to use.

Now stops graphical-session.target, which every one of those units is PartOf,
so a unit added to the start handler later cannot be forgotten here.

panama-crash-watch had the same leak and no PartOf at all: a journal follower
per login, and a 'once per program per session' dedup that had quietly become
once per boot.
2026-08-23 13:55:47 -04:00

24 lines
1.0 KiB
Desktop File

[Unit]
Description=Notice when a program crashes
Documentation=https://github.com/gibbyb/Panama
# Started per-session by hypr/autostart.lua rather than enabled globally, for
# the same reason as every other Panama unit: graphical-session.target is
# active under GNOME too, and this reports through the Hyprland shell's
# notification server.
#
# PartOf, so it stops with the session that started it. Without it this
# outlived logout -- a journal follower per login, accumulating -- and its
# "once per program per session" dedup silently became once per boot, which is
# the opposite of what it promises: the second crash of the day went unreported
# because the first session had already spoken.
PartOf=graphical-session.target
After=graphical-session.target
[Service]
Type=simple
# Resolved at runtime so a clone at another location still works; bin/ has no
# symlink into ~/.config the way the shell scripts do.
ExecStart=/usr/bin/env sh -c 'exec "${PANAMA_PATH:-$HOME/.local/share/Panama}/bin/panama-crash-watch"'
Restart=on-failure
RestartSec=30