Repository navigation
feat: migrate primary UI to QML - #3
Conversation
|
Thanks for the work here — the Rust/QML boundary is generally going in the right direction, especially keeping config mutations routed through the existing Rust writer paths instead of reimplementing config serialization in QML. I do think this needs a few changes before merge though:
So overall: architecture direction looks reasonable, but I would hold merge until the default launch path, dependency contract, parity gaps, realtime behavior, and PR CI coverage are addressed. |
|
Thanks, I fixed all five points. QML is now the default launch path, with Qt/QML build dependencies are now documented. Import/Export is available in QML and still uses the existing Rust bundle logic. The experimental tools remain available through the GTK fallback for now. Realtime was renamed to Live preview so it matches the QML implementation. The workflow now runs on pull requests too. GitHub currently shows the fork run as Current head is verified: |
|
Follow-up after checking the new head: the original five points are materially fixed. I’m not worried about the README cleanup right now since this is still an active design/migration pass, but I do want to block on lost functionality now that QML is the default UI. Two regressions still stand out:
I’m fine with the experimental companion studios staying behind the GTK fallback for now. The main thing I don’t want in this migration is existing primary-UI functionality disappearing just because the presentation layer changed. |
|
The parity issues you pointed out are fixed. If there are UX changes you want, tell me specifically what feels wrong and what behavior you want changed. "It's ass" doesn't give me anything actionable. I'm not doing another broad redesign pass though. |
|
Ok i guess you're not ass anymore 👍 |
Summary
This PR migrates Hyprbind's primary configuration UI to QML while keeping the existing Rust parsing, validation, backup, bundle, and writer paths authoritative.
QML is now the normal launch path. The existing GTK UI remains available through
hyprbinds --gtkas a compatibility path for the developer-only companion studios while those surfaces are still being migrated.What changed
Live preview, matching its QML behavior instead of implying the old global autosave semanticspull_requesttrigger to the QML migration workflowArchitecture
QML owns presentation and interaction. Rust continues to own configuration discovery, parsing, validation, conflict handling, backups, persistence, import/export, and Hyprland-facing operations.
The migration intentionally reuses the existing writer/model paths instead of reimplementing config semantics in the frontend.
Verification
Verified on Arch/CachyOS + Hyprland at exact head
b321bf43c43715efde9d1b44e08f4c62c4f6b6b8:The target-repo PR workflow is now created from the
pull_requesttrigger. GitHub currently reports the fork run asaction_required, so the target maintainer still needs to approve the run before its jobs execute.Review notes
Please review both the QML presentation layer and the Rust bridge boundaries, especially anywhere configuration mutation crosses from QML into existing writer code. The intended invariant is that QML never becomes an independent config authority.