summarylogtreecommitdiffstats
path: root/door.install
blob: e52151033e57ace31dc66dc072e58c5cad20293b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
post_install() {
    # Create the greeter system user and register the units. Nothing is enabled.
    systemd-sysusers door.conf >/dev/null 2>&1 || true
    systemctl daemon-reload >/dev/null 2>&1 || true

    cat <<'EOF'

:: door is installed but DISABLED. Your current login manager is untouched.

   Make door the active login manager (reversible) — as root:
     systemctl status display-manager.service | head -1   # note your current DM
     systemctl disable <current-dm>.service                # keep it installed = fallback
     systemctl enable  --now doord.service                 # doord owns the greeter

   doord conflicts with display-manager.service, so enabling it stops your
   current DM automatically; keep the DM *installed* as the fallback.

   REVERT — from a text VT (Ctrl+Alt+F2) or over SSH:
     systemctl disable --now doord.service
     systemctl enable  --now <current-dm>.service   # --now is REQUIRED: without
                                                    # it the DM is armed for next
                                                    # boot but not started now.

   FAIL-SAFE: if the greeter cannot start (bad perms, missing compositor, crash),
   doord stops itself after a few quick failures, restores a text console, and
   exits instead of locking the machine — so the revert above stays reachable.
   Check 'journalctl -u doord' for the reason.

   STATUS: the greeter<->session VT handoff is validated live (2026-06-26):
   boot -> greeter -> auth -> Plasma, with SSH as a safety net.
   KNOWN ISSUE: stopping doord on a VT left in graphics mode can leave that VT
   frozen on the last frame until the fallback DM starts — another VT
   (Ctrl+Alt+F2 = getty) and SSH stay live, so it is recoverable, not a lockout.
EOF
}

post_upgrade() {
    systemctl daemon-reload >/dev/null 2>&1 || true
}

post_remove() {
    systemctl daemon-reload >/dev/null 2>&1 || true
}