# Alloy console palette — point the Linux console's sixteen ANSI slots at Akari. # # The greeter (tuigreet, on VT1) runs on a raw Linux virtual console, before # any Wayland session or terminal emulator exists. tuigreet can only name ANSI # colors (container=white, text=black, prompt=yellow, ...), so the first # surface a user sees on boot is themed entirely by what those sixteen console # slots hold. Left alone they are the kernel's stock palette, and login renders # in generic console colors that then jump into Akari at session start. # # setvtrgb rewrites the console color map, which is a single global map the VT # subsystem shares across every console including ones allocated later, so one # invocation before the first text surface is enough. The map file is generated # at image-build time from the default light theme (skelgen, from the same ANSI # table the kernel cmdline's vt.default_* arrays and the terminal emulator both # render from); this unit only applies it. # # systemd-vconsole-setup owns the console font and keymap and does not touch # the color map, so ordering after it is for cleanliness, not conflict. The # Before= list covers every text surface that can paint on a console: greetd on # VT1, and any getty (other VTs, and the alloy-debug-shell, which also orders # before getty.target). # # Not yet verified on hardware: that setvtrgb, run from a unit with no # controlling terminal, reaches the console it opens on this image, and that # the greeter comes up on the Akari tones. Both are the live-boot checks the # GoingsOn greeter task carries. [Unit] Description=Alloy console palette (Akari) Documentation=man:setvtrgb(8) After=systemd-vconsole-setup.service Before=greetd.service getty.target # The map is a pure build artifact and setvtrgb ships in kbd; if either is # absent the palette silently stays stock, which the build-time asserts in the # Containerfile exist to prevent. The conditions here keep the unit from # failing loudly on a hand-modified image where they were removed. ConditionPathExists=/usr/bin/setvtrgb ConditionPathExists=/usr/share/alloy/vtrgb [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/setvtrgb /usr/share/alloy/vtrgb [Install] WantedBy=multi-user.target