Skip to content

feat: add nexus displays configuration page#1629

Open
devalentineomonya wants to merge 3 commits into
caelestia-dots:mainfrom
devalentineomonya:main
Open

feat: add nexus displays configuration page#1629
devalentineomonya wants to merge 3 commits into
caelestia-dots:mainfrom
devalentineomonya:main

Conversation

@devalentineomonya

Copy link
Copy Markdown

This PR adds a Displays page to Nexus, allowing users to identify, arrange, scale, rotate, and configure refresh rates for connected monitors.

The implementation follows the existing roadmap by completing the previously marked // connectivity TODO: Displays section.

I'm happy to adapt or refactor any part of this implementation if you have a different architectural direction or approach in mind.

Changes

  • Added monitor management service and Hyprland integration.
  • Added monitor identification overlay.
  • Added Displays page and per-monitor configuration UI.
  • Registered the page under the Connectivity section in Nexus.

Screenshots

recording_20260626_23-00-40.mp4

@devalentineomonya devalentineomonya force-pushed the main branch 3 times, most recently from 57438ab to 847f43b Compare June 26, 2026 20:39
@soramanew

Copy link
Copy Markdown
Collaborator
image

This should be similar to the wallpaper page, but instead of a wallpaper it should be a box with draggable monitors to reposition them. We can then have the list of monitors below it, similar to what you have now.

This adds the Displays/Monitors settings page to Nexus, allowing users to identify, arrange, scale, rotate, and set refresh rates for their monitors.

Includes:
- Monitors service (services/Monitors.qml) wrapping Hyprland keyword command batching.
- Hyprctl service (services/Hyprctl.qml) for querying active monitor status.
- Monitor identifier overlay (modules/MonitorIdentifier.qml).
@PixelKhaos

Copy link
Copy Markdown
Contributor

As a bit of a reference, just with each monitor in a list that doesn't expand on that same page, but instead has its own page like you did.
The disconnected status could be a neat thing to add as well.

image

This change implements a draggable layout editor for displays configuration:

- Implemented an angular-offset hot-zone snapping algorithm based on relative vector direction to neighboring monitors
- Added a Wayland configuration recovery mechanism using internally-debounced Hyprctl updates and onMonitorsChanged refresh callbacks
- Upgraded layout design to dark containers with display icons, highlight indicators, and locked/current statuses
- Added support for styling and disabling dragging on disconnected display items
- Resolved an issue where simple click/selection actions would trigger coordinate re-evaluation and flicker surfaces
@devalentineomonya

Copy link
Copy Markdown
Author

Updates

• displays: adds draggable display arrangement with aspect-ratio snapping and auto-refresh
recovery

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants