From d84daa45dc0e097c9eff011c995f44b7269e8630 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Mon, 28 Sep 2026 13:41:38 +0200 Subject: [PATCH] docs: TODO: netinstall is the target module (real checkboxes); packagechooser works but looks wrong; keyboard-layout and Calamares-in-separate-tab gotchas --- TODO.md | 107 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 46 deletions(-) diff --git a/TODO.md b/TODO.md index d06b264..7c51f3b 100644 --- a/TODO.md +++ b/TODO.md @@ -2,55 +2,70 @@ ## Open -1. **Steamify installer page** (2026-09-28, in progress; working path found). - Tested live in the ISO VM (vmisoboot.sh, QMP clicks/screenshots + the - Calamares debug log, `pkexec-wrapper calamares -D6` foregrounded): +1. **Steamify installer page** (2026-09-28, in progress). + Tested live in the ISO VM (vmisoboot.sh, QMP clicks/screenshots + + `pkexec-wrapper calamares -D6` foregrounded, its own debug log): - **`packagechooserq` (custom QML) does not exist on this Calamares - build.** `cachyos-calamares-next` ships `packagechooserq.conf` as a - vestigial config file, but no `.so`: `/usr/lib/calamares/modules/` - only has `packagechooser` (no q). Calamares refuses to start ("Module - ... not found in module search paths"). So `SteamifyPage.qml` - (app-styled switches) is dead: no module can load it here. Before - trying custom QML again, confirm the module is installed - (`ls /usr/lib/calamares/modules`, `pacman -Ql cachyos-calamares-next - | grep viewmodule`) in a live session first. - - **`packagechooser`, `mode: optionalmultiple`, DOES support real - multi-select**, confirmed from the Calamares debug log's actual - global-storage write (not from its static label text, which - misleadingly reads "Choose a product... the selected product will be - installed" in both single- and multi-select modes): + build**: only `packagechooser` is installed + (`ls /usr/lib/calamares/modules`). `SteamifyPage.qml` can't be loaded + by any real module here; confirm a module is actually installed + before writing QML/config for it again. + - **`packagechooser`, `mode: optionalmultiple`, genuinely multi-selects** + (confirmed from its actual global-storage write, not its static label + text which misleadingly says "Choose a product..." either way): `"packagechooser@steamifypage" selected "single,gaming,theme"` — a - genuine comma-separated list, matching exactly the CSV format - `steamify-install` already expects for `--options`. This is the - `Config::updateGlobalStorage(const QStringList&)` overload (plural), - distinct from the single-choice `m_packageChoice` path. So the - **native, installed `packagechooser` module is the working page**; - no netinstall detour needed. - - Global storage key: `packagechooser_steamifypage` (module instance - id), value the comma-separated selected item ids. - - **Next:** generate `packagechooser_steamifypage.conf`'s `items:` list - from `steamify.sh --defaults --list` (in `calamares-online.sh`, same - spot as the abandoned Items.qml generation) instead of the QML - approach; check whether per-item `selected: true` (or similar) exists - for defaulting everything on, or whether "everything on by default" - needs a different mechanism (e.g. Steamify's own `--options` default - when the page reports nothing chosen). Boot into (gaming/desktop) - still needs its own answer: a separate small `packagechooser` - `mode: required` page (two items), since optionalmultiple's list - doesn't suit an exclusive either/or choice. - - Dead code from this session, left in the tree for now: - `SteamifyPage.qml`, `Items.qml`'s QML-singleton shape (its JSON - *content*, generated by `--defaults --list`, is still exactly what's - needed for the new plain-YAML `items:` list, just not as a QML file). - - **Lesson for next time:** verify a Calamares module is actually - installed before writing QML/config for it, and read a module's - *actual* logged global-storage writes (not just its UI label text) - before concluding whether a mode does what its name suggests. Both - are testable live in the booted ISO VM without any rebuild - (edit `/etc/calamares/modules/*.conf` + `settings.conf`, relaunch - `pkexec-wrapper calamares -D6`, watch its foregrounded debug output). + real comma-separated list, matching `steamify-install`'s expected + `--options` format. Global storage key: `packagechooser_steamifypage`. + - **But its UI doesn't look like a multi-select** (a plain list with a + big blank preview pane, no checkboxes shown) — confirmed by the user + watching the VM live. Not good enough visually, even though it's + functionally correct. + - **Decision (the user, 2026-09-28): use `netinstall` instead**, the + module that actually renders a checkbox tree (confirmed live on the + Packages step: CachyOS Packages/shell config/base-devel/KDE-Desktop + all ticked together, real checkboxes). Not yet re-confirmed live this + session (the live session's keyboard layout flipped to Dutch after + the Welcome page's live keyboard preview, breaking `/`/`(`/`)` in + `qmptype.py`'s US-layout key map — `setxkbmap us` has no effect on + Wayland; fix the layout in the live session's own settings before + typing shell commands with those characters again). + - **Next**, from already-known Calamares internals (its `Config.cpp` + logged `"packagechooser@desktop" groups to select in netinstall + QList("KDE-Desktop")` — i.e. netinstall groups CAN be driven by + another module's choice, and/or defined directly): write a + `netinstall_steamify.conf`/groups YAML for Steamify's items (id, + name, description per group; check whether a non-package/virtual + group is possible, or whether `packages: []` with `critical: false` + is enough to make a group purely informational/no-op for pacman) from + `steamify.sh --defaults --list`, generated in `calamares-online.sh` + (same spot the abandoned Items.qml/packagechooser YAML generation + was). Read the selection back from whichever global-storage key + netinstall actually writes (`netinstallSelect`, seen in Config.cpp; + confirm the exact key/shape live) in + `shellprocess_steamify.conf`/`steamify-install`. Boot into + (gaming/desktop) still needs its own small `packagechooser`, + `mode: required` page (an either/or choice doesn't fit a checkbox + tree). + - Dead code from this session, left in the tree for now: `SteamifyPage.qml`. + - **Lessons for next time:** + - Verify a Calamares module is actually installed + (`ls /usr/lib/calamares/modules`) before writing QML/config for it. + - Read a module's *actual* logged global-storage writes, not its UI + label text, to know what a `mode`/`method` really does. + - Both testable live in the booted ISO VM with no rebuild: edit + `/etc/calamares/modules/*.conf` + `settings.conf`, relaunch + `pkexec-wrapper calamares -D6` in a **separate Konsole tab** (it + blocks the tab it runs in — typing into that same tab just echoes + inertly into its blocked stdin, doesn't run commands). + - Watch for the live session's keyboard layout changing away from US + (e.g. via Calamares' Welcome page keyboard preview) mid-session: + `qmptype.py` assumes US and silently sends wrong characters + (`/` → `-`, parens garbled) once it does, with no error for the + common ones. Check with a no-symbols probe (`echo test123`) after + any language/keyboard step, and fix via the live session's own + keyboard settings if needed, not `setxkbmap` (no effect on Wayland). -2. **Check the live name**2. **Check the live name**2. **Check the live name** (the build tree has it right: +2. **Check the live name**2. **Check the live name**2. **Check the live name**2. **Check the live name** (the build tree has it right: `build/x86_64/airootfs/etc/os-release`) after the next build: Hello's subtitle should say "Steamify CachyOS, based on CachyOS rolling" (`steamify-customize.sh`, run by mkarchiso after the packages; the airootfs copy of os-release is