breezy-desktop/ui/src
Devin Bernosky 20bd0b6435 Add Horizon Lock: track only horizontal (yaw) head movement
Adds a "Horizon lock" toggle that flattens the head pose to yaw-only,
ignoring pitch (vertical) and roll (tilt). The display then only pans
horizontally as you turn your head, staying level and at a fixed height.

This is a comfort/nausea aid — particularly on glasses such as the Viture
Pro, where pulse and micro-movement jitter on the pitch/roll axes makes the
display visibly wobble (see #80, #114). Unlike smooth follow, which chases
those noisy axes, horizon lock removes them from the rendered orientation
entirely.

Implementation: a swing-twist decomposition about the NWU up-axis (Z),
applied to the pose quaternions in DeviceDataStream, so the shader,
look-ahead and follow logic all inherit the yaw-only orientation. Exposed
as a GtkSwitch in the GNOME settings (Features group) and wired through the
shared gschema.
2026-06-27 15:15:19 -07:00
..
gtk Add Horizon Lock: track only horizontal (yaw) head movement 2026-06-27 15:15:19 -07:00
__init__.py Breezy GNOME support (#22) 2024-05-16 12:26:59 -07:00
breezydesktop.gresource.xml Add support for custom display resolutions, v2.0.10 2025-03-10 15:47:45 -07:00
breezydesktop.in Fix breakages in the breezydesktop and virtualdisplay bin files 2025-04-29 11:27:43 -07:00
configmanager.py Update state/config polling in the GNOME UI, fix issue where display resolution dropdown was closing on state refresh, v2.9.6 2026-03-10 12:35:21 -07:00
connecteddevice.py Add Horizon Lock: track only horizontal (yaw) head movement 2026-06-27 15:15:19 -07:00
customresolutiondialog.py Add support for custom display resolutions, v2.0.10 2025-03-10 15:47:45 -07:00
customresolutiondialogcontent.py Add support for custom display resolutions, v2.0.10 2025-03-10 15:47:45 -07:00
displaydistancedialog.py Finalize Vulkan and GNOME 6DoF (#144) 2026-01-08 10:30:00 -08:00
displaydistancedialogcontent.py Finalize Vulkan and GNOME 6DoF (#144) 2026-01-08 10:30:00 -08:00
extensionsmanager.py Move config interactions to new ConfigManager class, add enable and widescreen switches when device isn't connected 2024-10-22 13:27:40 -07:00
failedverification.py Add support for case where no license is present 2024-05-23 23:07:56 -07:00
files.py Update file path generation 2025-03-11 13:59:32 -07:00
license.py Add support for Productivity Pro tier, v2.9.1 (#162) 2026-03-03 13:26:47 -08:00
licensedialog.py Remove Flatpak usage for UI (#61) 2024-10-03 22:22:10 -07:00
licensedialogcontent.py Add support for Productivity Pro tier, v2.9.1 (#162) 2026-03-03 13:26:47 -08:00
licensefeaturerow.py Add support for Productivity Pro tier, v2.9.1 (#162) 2026-03-03 13:26:47 -08:00
licensetierrow.py Add support for Productivity Pro tier, v2.9.1 (#162) 2026-03-03 13:26:47 -08:00
main.py Add support for Productivity Pro tier, v2.9.1 (#162) 2026-03-03 13:26:47 -08:00
meson.build Add GitHub release update check to Python GNOME and KDE KCM UIs (#160) 2026-02-28 18:29:27 -08:00
nodevice.py Add multi-monitor support (#89) 2025-03-05 15:58:07 -08:00
nodriver.py Add messaging if no running driver is detected 2024-07-25 13:04:18 -07:00
noextension.py Add support for case where no license is present 2024-05-23 23:07:56 -07:00
nolicense.py Pull in driver with gamescope support, update vulkan setup to copy shader files to the appropriate gamescope directory, fix license issues in Breezy GNOME UI 2024-09-12 22:03:22 -07:00
settingsmanager.py Add text scaling slider (#57) 2024-10-01 14:12:29 -07:00
shortcutdialog.py Add multi-monitor support (#89) 2025-03-05 15:58:07 -08:00
statemanager.py Update state/config polling in the GNOME UI, fix issue where display resolution dropdown was closing on state refresh, v2.9.6 2026-03-10 12:35:21 -07:00
time.py Add localization 2024-08-16 12:26:16 -07:00
updatechecker.py Add GitHub release update check to Python GNOME and KDE KCM UIs (#160) 2026-02-28 18:29:27 -08:00
verify.py Update file path generation 2025-03-11 13:59:32 -07:00
virtualdisplay.in Add better handling of pipewire GStreamer dependency missing case, in UI and setup, pull in the latest driver version 2025-05-07 12:45:12 -07:00
virtualdisplay.py Add better handling of pipewire GStreamer dependency missing case, in UI and setup, pull in the latest driver version 2025-05-07 12:45:12 -07:00
virtualdisplaymanager.py Update custom resolution UI, v2.0.11 2025-03-11 10:32:11 -07:00
virtualdisplayrow.py Add multi-monitor support (#89) 2025-03-05 15:58:07 -08:00
window.py Add support for Productivity Pro tier, v2.9.1 (#162) 2026-03-03 13:26:47 -08:00