Port to Qt6/PyQt6 #155

Open
opened 2026-08-24 15:43:11 -04:00 by mysticalsoap · 0 comments
Owner

Long-term goal, not scheduled for 0.9.2.

Why

Qt5 is EOL upstream — 5.15 gets no open-source releases anymore, so the whole GUI stack lives on distro patches. PyQt5 itself is still maintained, but the Qt underneath it is frozen (its WebEngine permanently on a Chromium 87-era engine). For an app that fronts VPN credentials, staying on a frozen toolkit is a slow-burn liability.

Scope (the non-mechanical parts)

  • PyQt5 → PyQt6 across gui, service and threads: scoped enums everywhere, changed module layout.
  • The service's D-Bus glue is the real design point: dbus.mainloop.pyqt5 has no PyQt6 counterpart in dbus-python — needs either the GLib main loop in the service or a move to QtDBus. Decide before touching the mechanical rename.
  • packaging/ dependency updates ride along.

Side payoff

With qt6-webengine tracking recent Chromium (Qt bumps it nearly every minor; 282 MiB installed), the embedded-webview fallback rejected in #150 (option 3) would graduate from last resort to workable fallback if the auto-open flow (#154) ever proves flaky. Not a reason to do the port — just what it unlocks.

🤖 Generated with Claude Code

Long-term goal, not scheduled for 0.9.2. ## Why Qt5 is EOL upstream — 5.15 gets no open-source releases anymore, so the whole GUI stack lives on distro patches. PyQt5 itself is still maintained, but the Qt underneath it is frozen (its WebEngine permanently on a Chromium 87-era engine). For an app that fronts VPN credentials, staying on a frozen toolkit is a slow-burn liability. ## Scope (the non-mechanical parts) - PyQt5 → PyQt6 across gui, service and threads: scoped enums everywhere, changed module layout. - The service's D-Bus glue is the real design point: `dbus.mainloop.pyqt5` has no PyQt6 counterpart in dbus-python — needs either the GLib main loop in the service or a move to QtDBus. Decide before touching the mechanical rename. - `packaging/` dependency updates ride along. ## Side payoff With qt6-webengine tracking recent Chromium (Qt bumps it nearly every minor; 282 MiB installed), the embedded-webview fallback rejected in #150 (option 3) would graduate from last resort to workable fallback if the auto-open flow (#154) ever proves flaky. Not a reason to do the port — just what it unlocks. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mysticalsoap/aqomui#155
No description provided.