docs: TODO: netinstall is the target module (real checkboxes); packagechooser works but looks wrong; keyboard-layout and Calamares-in-separate-tab gotchas

This commit is contained in:
theupriser committed 2026-09-28 13:41:38 +02:00
1 parent 6b69c1f619
commit d84daa45dc
1 file changed
+61 -46
+61 -46
View File
@@ -2,55 +2,70 @@
## Open ## Open
1. **Steamify installer page** (2026-09-28, in progress; working path found). 1. **Steamify installer page** (2026-09-28, in progress).
Tested live in the ISO VM (vmisoboot.sh, QMP clicks/screenshots + the Tested live in the ISO VM (vmisoboot.sh, QMP clicks/screenshots +
Calamares debug log, `pkexec-wrapper calamares -D6` foregrounded): `pkexec-wrapper calamares -D6` foregrounded, its own debug log):
- **`packagechooserq` (custom QML) does not exist on this Calamares - **`packagechooserq` (custom QML) does not exist on this Calamares
build.** `cachyos-calamares-next` ships `packagechooserq.conf` as a build**: only `packagechooser` is installed
vestigial config file, but no `.so`: `/usr/lib/calamares/modules/` (`ls /usr/lib/calamares/modules`). `SteamifyPage.qml` can't be loaded
only has `packagechooser` (no q). Calamares refuses to start ("Module by any real module here; confirm a module is actually installed
... not found in module search paths"). So `SteamifyPage.qml` before writing QML/config for it again.
(app-styled switches) is dead: no module can load it here. Before - **`packagechooser`, `mode: optionalmultiple`, genuinely multi-selects**
trying custom QML again, confirm the module is installed (confirmed from its actual global-storage write, not its static label
(`ls /usr/lib/calamares/modules`, `pacman -Ql cachyos-calamares-next text which misleadingly says "Choose a product..." either way):
| 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):
`"packagechooser@steamifypage" selected "single,gaming,theme"` — a `"packagechooser@steamifypage" selected "single,gaming,theme"` — a
genuine comma-separated list, matching exactly the CSV format real comma-separated list, matching `steamify-install`'s expected
`steamify-install` already expects for `--options`. This is the `--options` format. Global storage key: `packagechooser_steamifypage`.
`Config::updateGlobalStorage(const QStringList&)` overload (plural), - **But its UI doesn't look like a multi-select** (a plain list with a
distinct from the single-choice `m_packageChoice` path. So the big blank preview pane, no checkboxes shown) — confirmed by the user
**native, installed `packagechooser` module is the working page**; watching the VM live. Not good enough visually, even though it's
no netinstall detour needed. functionally correct.
- Global storage key: `packagechooser_steamifypage` (module instance - **Decision (the user, 2026-09-28): use `netinstall` instead**, the
id), value the comma-separated selected item ids. module that actually renders a checkbox tree (confirmed live on the
- **Next:** generate `packagechooser_steamifypage.conf`'s `items:` list Packages step: CachyOS Packages/shell config/base-devel/KDE-Desktop
from `steamify.sh --defaults --list` (in `calamares-online.sh`, same all ticked together, real checkboxes). Not yet re-confirmed live this
spot as the abandoned Items.qml generation) instead of the QML session (the live session's keyboard layout flipped to Dutch after
approach; check whether per-item `selected: true` (or similar) exists the Welcome page's live keyboard preview, breaking `/`/`(`/`)` in
for defaulting everything on, or whether "everything on by default" `qmptype.py`'s US-layout key map — `setxkbmap us` has no effect on
needs a different mechanism (e.g. Steamify's own `--options` default Wayland; fix the layout in the live session's own settings before
when the page reports nothing chosen). Boot into (gaming/desktop) typing shell commands with those characters again).
still needs its own answer: a separate small `packagechooser` - **Next**, from already-known Calamares internals (its `Config.cpp`
`mode: required` page (two items), since optionalmultiple's list logged `"packagechooser@desktop" groups to select in netinstall
doesn't suit an exclusive either/or choice. QList("KDE-Desktop")` — i.e. netinstall groups CAN be driven by
- Dead code from this session, left in the tree for now: another module's choice, and/or defined directly): write a
`SteamifyPage.qml`, `Items.qml`'s QML-singleton shape (its JSON `netinstall_steamify.conf`/groups YAML for Steamify's items (id,
*content*, generated by `--defaults --list`, is still exactly what's name, description per group; check whether a non-package/virtual
needed for the new plain-YAML `items:` list, just not as a QML file). group is possible, or whether `packages: []` with `critical: false`
- **Lesson for next time:** verify a Calamares module is actually is enough to make a group purely informational/no-op for pacman) from
installed before writing QML/config for it, and read a module's `steamify.sh --defaults --list`, generated in `calamares-online.sh`
*actual* logged global-storage writes (not just its UI label text) (same spot the abandoned Items.qml/packagechooser YAML generation
before concluding whether a mode does what its name suggests. Both was). Read the selection back from whichever global-storage key
are testable live in the booted ISO VM without any rebuild netinstall actually writes (`netinstallSelect`, seen in Config.cpp;
(edit `/etc/calamares/modules/*.conf` + `settings.conf`, relaunch confirm the exact key/shape live) in
`pkexec-wrapper calamares -D6`, watch its foregrounded debug output). `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 `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`, "Steamify CachyOS, based on CachyOS rolling" (`steamify-customize.sh`,
run by mkarchiso after the packages; the airootfs copy of os-release is run by mkarchiso after the packages; the airootfs copy of os-release is