From 23e1fa7a0c2601f744cc4b981a1da393322fa1c0 Mon Sep 17 00:00:00 2001 From: rope Date: Tue, 15 Sep 2026 09:53:08 +0100 Subject: [PATCH] Send greeter and desktop startup output to the journal --- docs/failure-path-fixes.md | 2 ++ settings/auth.nix | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/failure-path-fixes.md b/docs/failure-path-fixes.md index 4f41db7..34fde89 100644 --- a/docs/failure-path-fixes.md +++ b/docs/failure-path-fixes.md @@ -63,6 +63,8 @@ The new greeter takes effect on the next login or boot. It supports the configur The boot greeter explicitly disables window decorations and rejects window-close requests. On Gaming, its Cage client applies the first desktop monitor rule's output, mode and scale before launching Quickshell (currently DP-3, 3440x1440 at 180 Hz, scale 1). This avoids maintaining separate greeter and desktop mode settings. The mode command is bounded to five seconds plus a one-second kill grace; an unavailable connector or mode is logged and login continues using Cage's current mode. MacBook retains its preferred-mode behavior. Switching compositors can still cause a brief display transition. +Greeter compositor/Quickshell output and desktop launcher output are routed to the journal instead of the login VT. Inspect them with `journalctl -b -t fred-greeter` and `journalctl -b -t fred-desktop`. This prevents those messages from appearing when Cage releases the display; it does not promise a zero-frame compositor handover. + The greeter test verifies close rejection, frameless flags, password failure/retry and authenticated exit. The generated Gaming client was also checked with successful and failed mode-command fixtures to verify ordering and fallback. Both desktop configurations evaluate and both auth bundles build; the physical 180 Hz handover still needs checking on Gaming after deployment. If media storage is unavailable, restore and verify the missing disks first, then start the affected media services. Their dependencies retry mounts and directory preparation. Services deliberately stay stopped after losing storage; they do not automatically resume merely because a disk returns. Inspect `journalctl -u media-storage-ready` and `systemctl status mnt-storage.mount` when diagnosing this. diff --git a/settings/auth.nix b/settings/auth.nix index c1f1282..3d02d9a 100644 --- a/settings/auth.nix +++ b/settings/auth.nix @@ -29,7 +29,7 @@ let ''; locker = bundle "fred-lock" ./quickshell/SessionLock.qml; session = pkgs.writeShellScript "hyprland-session" '' - exec ${config.programs.hyprland.package}/bin/start-hyprland >/dev/null 2>&1 + exec ${pkgs.systemd}/bin/systemd-cat --identifier=fred-desktop -- ${config.programs.hyprland.package}/bin/start-hyprland ''; lockCommand = pkgs.writeShellApplication { name = "fred-lock"; @@ -55,7 +55,9 @@ in { export QML2_IMPORT_PATH=${pkgs.qt6.qt5compat}/lib/qt-6/qml export XKB_DEFAULT_LAYOUT=gb,no export XKB_DEFAULT_OPTIONS=${lib.escapeShellArg ("grp:win_space_toggle" + lib.optionalString (config.networking.hostName == "FredOS-Gaming") ",altwin:swap_lalt_lwin")} - exec ${pkgs.dbus}/bin/dbus-run-session -- ${pkgs.cage}/bin/cage -s -- ${greeterClient} + # greetd attaches child output to the VT. Keep compositor and Qt + # startup/shutdown messages off the console exposed during handover. + exec ${pkgs.systemd}/bin/systemd-cat --identifier=fred-greeter -- ${pkgs.dbus}/bin/dbus-run-session -- ${pkgs.cage}/bin/cage -s -- ${greeterClient} ''); }; };