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
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