feat(theme): themes as files (theme crate: toml subset + ints, contrast check, wire); whimsy dark + light; display reads themes/, serves THEME/THEME_NAME, init SET_THEME -> THEME_CHANGED to all windows, bar themed; k-ui follows; settings appearance; init keeps choice in sealed users/<id>/settings/, reapplies at sign-in + display restart

This commit is contained in:
2026-10-28 13:36:57 +01:00
parent 29becf297c
commit 6827e1455d
43 changed files with 1140 additions and 179 deletions

View File

@@ -39,7 +39,7 @@ staged() {
# Each user's folder in users/ is encrypted, so not filled here: init seeds
# a new user's areas from factory/ (plaintext) once they are signed in.
mkdir -p "${ROOT}/bin" "${ROOT}/apps" "${ROOT}/users" "${ROOT}/factory/home" "${ROOT}/factory/permissions" "${ROOT}/factory/data" "${ROOT}/factory/apps"
mkdir -p "${ROOT}/bin" "${ROOT}/apps" "${ROOT}/users" "${ROOT}/factory/home" "${ROOT}/factory/permissions" "${ROOT}/factory/data" "${ROOT}/factory/apps" "${ROOT}/factory/settings"
# System servers and the shell: init starts these.
copy display-qemu display
copy input-qemu input
@@ -59,6 +59,7 @@ app settings
staged counter inbox/counter
# A user's first files.
cp -r disk/home/. "${ROOT}/factory/home/"
mkdir -p "${ROOT}/themes" && cp disk/themes/*.toml "${ROOT}/themes/"
# Only the test image: its presence makes init run the self-test.
if [ -n "${SMPTEST:-}" ]; then
copy smptest smptest