evidence · 3.3 KiB

launcher-receiver.md

Committed at docs/evidence/omarchy-themes/launcher-receiver.md. This is what grounds the requirements that cite it.

Open raw source

Launcher appearance receiver source checkpoint

Observed 2026-09-23. With k230.shell.themeReceiverTrial = true, the launcher has a same-UID, mode-0600 Unix receiver under its existing private /run/shell runtime directory and the command enters the image. The normal configuration keeps this option off. The receiver accepts a bounded versioned prepare/commit/rollback request, parses only generated palette fields from a bounded report.json, and changes its current background, text, tile, selected and accent colors. The authored muted swatches in the pinned dark/light sources measure only about 1.9–2.5:1 against their backgrounds, so small launcher hint text temporarily uses the foreground color; its source value remains in the report. Error text selects a contrasting light or dark color. Commit returns an acknowledgement after the launcher submits and flushes a themed Wayland buffer; a pending page transition is settled first. Invalid generation IDs, missing palette data, foreign peers and absent configuration do not produce successful commit acknowledgements. A restarted receiver loads the previous generation supplied by the coordinator before switching. The installed default palette remains when the trial option is off.

python3 tests/test_omarchy_theme_activation.py
  PASS: 7 host tests, including a public-name command which fails closed
  without a receiver and leaves the active pointer absent.
python3 tests/test_omarchy_theme_transaction.py
  PASS: 10 host transport tests.
python3 tests/test_shell_appearance_receiver.py
  PASS: 4 native host receiver socket tests: prepare/commit/rollback,
  pre-prepare rejection, restart restoration, socket mode 0600, and synthetic
  light/dark plus pinned dark/light/community foreground/hint-to-background,
  tile, selected and error contrast >= 4.5.
python3 tests/test_launcher_navigation.py
  PASS: 3 existing launcher navigation tests with appearance.c linked.
nix build .#touch-launcher --max-jobs 1 --cores 4 --no-link --print-out-paths
  PASS: /nix/store/1abjx9k2xm3k7w14bmv9ypxwmswi383w-k230-touch-launcher
nix build .#handheld-theme-command --max-jobs 1 --cores 4 --no-link --print-out-paths
  PASS: /nix/store/8hg86rs0yfxsc0a7lcbnbyh3d18i6wcx-handheld-theme-command-0.1
  Closure: 338,250,352 bytes, dominated by target Python; package is opt-in.
nix eval --json .#nixosConfigurations.k230.config.k230.shell.themeReceiverTrial
  PASS: false in normal configuration.
nix eval --impure --json --expr 'let f = builtins.getFlake (toString ./.); c = f.nixosConfigurations.k230.extendModules { modules = [ { k230.shell.themeReceiverTrial = true; } ]; }; in { enabled = c.config.k230.shell.themeReceiverTrial; installed = builtins.any (p: (p.pname or "") == "handheld-theme-command") c.config.environment.systemPackages; }'
  PASS: {"enabled":true,"installed":true} in an opt-in evaluation; no image built.

This receiver currently styles the installed launcher only, using a subset of the generated palette. It does not consume full shell.toml fields or bind cards, Settings, notifications, keyboard, wallpaper or applications. The host fixture has no Wayland compositor or panel, so it proves protocol behavior but not frame presentation, touch readability or physical rollback. OpenSpec tasks 2.1/2.2 and the surface tasks remain open pending package/default source integration, richer token consumption and device evidence.