breezy-desktop icon indicating copy to clipboard operation
breezy-desktop copied to clipboard

Add a UI for Linux users, parity with Decky UI

Open wheaney opened this issue 2 years ago • 3 comments

Right now the only way to modify configs is through the ~/bin/xreal_driver_config script, and I'm finding it a bit tedious to manage and use that script as I add features, especially more complex ones like a calibration workflow. The Decky UI makes it possible for Decky users to configure things on-the-fly using checkboxes/buttons/sliders/etc... and I'd like to have the same UI available for general Linux users. Since breezy is always running in the background, this task would be to build a UI that someone could launch whenever they wanted to use it, but opening or closing it has no effect on the operations of breezy itself.

wheaney avatar Dec 08 '23 18:12 wheaney

As I'm expanding the role of the Decky UI (which is part of what prompted this task), I'm realizing that the decky python backend code is actually providing the API that could be used by both Decky and a Breezy UI. So if using a Python script to kick off a portable (across Linux distros/window systems) GUI is a possibility, let's go with that. This would include refactoring the decky plugin's Python backend into a reusable Python class. It would either need to live in its own repo, or I think it makes sense to put it in Breezy since the decky plugin installs Breezy and could theoretically include Breezy's Python API. Note that I'm expanding this Python API in my own branch as I write this, and it should be merged within the next week.

wheaney avatar Dec 12 '23 17:12 wheaney

Here are the python functions we'd want to refactor out of the decky python backend:

  • Functions for reading writing driver state, config, and control flags: https://github.com/wheaney/decky-XRGaming/blob/main/main.py#L51-L182
  • Functions for requesting and verifying tokens: https://github.com/wheaney/decky-XRGaming/blob/main/main.py#L280-L306

wheaney avatar Feb 07 '24 17:02 wheaney

PyXRLinuxDriverIPC now contains the shared python backend that owns the driver integrations for the Breezy UI and Decky plugin UI.

Next steps would be to update the Breezy UI:

  • To have parity with the decky UI
  • To be aware of what Breezy app is running (GNOME, Vulkan, or both when that's supported in the future), and show the appropriate elements.

wheaney avatar Jul 24 '24 21:07 wheaney