Skip to main content

max / alloy

greeter: put the Akari palette on the console, not in --theme etc/greetd/config.toml passes tuigreet a --theme, and STACK.md claimed an Akari greeter on the strength of it. tuigreet 0.9.1 parses only the sixteen ANSI color names. A hex value is ignored rather than rejected and the element falls back to a default, so `prompt=#8a4530` renders red. Verified by booting it both ways. So the names stay in the greetd config and the palette behind them moves to the kernel command line. vt.default_red/grn/blu set the Linux console's 16-color table, which makes tuigreet's `white` be surface.page and its `yellow` be status.warning without tuigreet knowing anything about it. The same substitution themes every VT, including the debug shell and any getty. The mapping matches the [colors] block in the rio config, so a bare console and a terminal agree on what "red" means. Nothing derives these from TOKENS.md; changing the palette means changing them by hand.
Co-Authored-By
Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-22 21:13 UTC
Signed with PGP, not checked
Commit: 24511f5c10b5a27a7f3d62a567842a6d3fe21f74
Parent: 491fa8f
1 file changed, +42 insertions, -1 deletion
@@ -4,5 +4,46 @@
4 4 # greetd/tuigreet UI isn't overwritten by systemd-hostnamed and
5 5 # user-runtime-dir audit messages. Anyone debugging boot problems can
6 6 # still get the full log via `journalctl -k` or `dmesg`.
7 + #
8 + # ---------------------------------------------------------------------
9 + # The console palette is Akari Dawn, and this is the only place it can be
10 + # set for the greeter.
11 + #
12 + # tuigreet takes a --theme, and etc/greetd/config.toml passes it one, but
13 + # its parser accepts only the sixteen ANSI color names. Hex is not
14 + # rejected, it is ignored: a value it cannot read falls back to a default,
15 + # which is how `prompt=#8a4530` renders red. Verified against tuigreet
16 + # 0.9.1 by booting it both ways.
17 + #
18 + # So the names stay in the greetd config and the *palette behind them*
19 + # moves here. These three arrays are the Linux console's 16-color table,
20 + # and setting them makes tuigreet's `white` be surface.page and its
21 + # `yellow` be status.warning, without tuigreet knowing anything about it.
22 + # The same substitution themes every VT: the debug shell, a getty, and
23 + # anything that writes to the console before a compositor exists.
24 + #
25 + # Order is the ANSI one: black, red, green, yellow, blue, magenta, cyan,
26 + # white, then the eight bright variants. The mapping matches
27 + # etc/skel/.config/rio/config.toml's [colors] block, so a terminal and a
28 + # bare VT agree on what "red" means.
29 + #
30 + # 0 #1a1816 content.primary 8 #514b45 content.muted
31 + # 1 #6a2828 status.danger 9 #8a4530 action.primary
32 + # 2 #3a5830 status.success 10 #3a5830
33 + # 3 #b07840 status.warning 11 #b07840
34 + # 4 #304050 status.info 12 #304050
35 + # 5 #806080 category.five 13 #806080
36 + # 6 #305858 category.six 14 #305858
37 + # 7 #e4ded6 surface.page 15 #ede7de surface.raised
38 + #
39 + # Changing docs/TOKENS.md means changing these by hand; there is no build
40 + # step that derives them, and nothing will report the drift.
41 + # ---------------------------------------------------------------------
7 42
8 - kargs = ["quiet", "loglevel=3"]
43 + kargs = [
44 + "quiet",
45 + "loglevel=3",
46 + "vt.default_red=0x1a,0x6a,0x3a,0xb0,0x30,0x80,0x30,0xe4,0x51,0x8a,0x3a,0xb0,0x30,0x80,0x30,0xed",
47 + "vt.default_grn=0x18,0x28,0x58,0x78,0x40,0x60,0x58,0xde,0x4b,0x45,0x58,0x78,0x40,0x60,0x58,0xe7",
48 + "vt.default_blu=0x16,0x28,0x30,0x40,0x50,0x80,0x58,0xd6,0x45,0x30,0x30,0x40,0x50,0x80,0x58,0xde",
49 + ]