Alan Gaudet
RST-04 · Rev 0.13.0

Sasquatch

A task manager for Linux where Ctrl+Alt+Del still answers when the desktop is frozen.

Pre-alpha, in development

Sasquatch
Sasquatch after a Ctrl+Alt+Del summon: the Processes tab with apps grouped, CPU and memory columns, and the daemon connected.
Summoned by the chord, daemon connected.
Sasquatch
Sasquatch Details tab: per-process PID, status, user, CPU and working set, with Signal, Nice and Affinity actions.
Details tab.

Description

On Windows, Ctrl+Alt+Del always answers: the chord is caught below the shell, and the task manager it summons runs where an ordinary program cannot cover it. Linux has no equivalent. KDE's System Monitor is a normal window on a normal compositor shortcut, so it dies with the session it is supposed to police. Sasquatch rebuilds that contract on Linux plumbing, for the moment everything else is misbehaving.

Block diagram

  1. Keyboard evdev
  2. sasquatchd
  3. D-Bus summon
  4. Slint GUI

Decisions

Two tiers behind one chord

Ctrl+Alt+Del is read from the keyboard by the root daemon, so the chord arrives even when the compositor's input handling is gone. If the GUI acknowledges, a KWin rule holds it above whatever is fullscreen. If no acknowledgement comes back, or the chord is pressed again, the daemon switches to a text-mode process killer on a spare VT. Installing the daemon masks ctrl-alt-del.target so the chord cannot reboot the machine, and uninstalling reverts it.

One root binary, and no exec API

Only the daemon runs as root. It exposes a fixed set of process operations and nothing that accepts a command or a path to execute, and a test rejects any exec-shaped D-Bus surface. polkit gates each action class separately, and process mutations bind the pid to its start time and signal through a pidfd. Service and session actions go straight to systemd and logind, which enforce their own polkit.

A sampling engine with no GUI in it

sasquatch-core parses /proc and /sys into the per-process and per-core figures the tabs draw, including the cgroup classifier that separates apps from background work. It depends on no GUI toolkit, no D-Bus and no async runtime, so the delta maths is tested against recorded procfs fixtures. The rescue console has no D-Bus dependency for a related reason: it has to work when the session stack is what broke.

Errata

  • There is no packaged release yet. The PKGBUILD, hardened unit and full install flow are planned for 1.0.0.
  • The rescue console needs a framebuffer console on its VT. Where one is missing, such as with nvidia-drm fbdev off, only the GUI tier answers.

Revision history

Version Changes
0.13.0 Startup apps tab: toggles write or remove only files Sasquatch generated, after rechecking the scanned bytes.
0.12.0 Services tab: start, stop, restart, enable and disable through systemd with interactive polkit.
0.11.0 Polkit executor: other-user End task and Details actions route through the daemon.
0.10.0 VT rescue tier: hard chord, missing acknowledgement and repeat presses all reach the text-mode killer.