Skip to content

Include fullscreen windows and add optional fullscreen selection - #24

Open
Alyx-Clark wants to merge 3 commits into
yz778:mainfrom
Alyx-Clark:feat/fullscreen-overview-selection
Open

Include fullscreen windows and add optional fullscreen selection#24
Alyx-Clark wants to merge 3 commits into
yz778:mainfrom
Alyx-Clark:feat/fullscreen-overview-selection

Conversation

@Alyx-Clark

@Alyx-Clark Alyx-Clark commented Sep 10, 2026

Copy link
Copy Markdown

Fullscreen windows are excluded from Hyprview's overview, and selecting tiles on
scaled outputs can use the wrong coordinates. Include fullscreen windows by
saving their internal/client fullscreen modes, temporarily clearing internal
fullscreen while rendering the overview, and restoring states after returning
all windows to their original workspaces. Also restore state on plugin teardown.

Fix pointer hit testing to compare logical pointer coordinates with physical
tiles at the monitor's scale, and resolve selection from the click position.
Left-button presses select; empty-background clicks do not select a stale hover.

Add plugin:hyprview:fullscreen_on_select, default 0. When enabled, explicit
selection closes the overview (including sticky on mode) and sets the chosen
window fullscreen. When disabled, selection does not force fullscreen and the
existing sticky-click behavior remains available.

Related to #14.

This branch depends on #23. Until that PR is merged, the upstream diff includes
its prerequisite commit. The fullscreen feature is isolated in a494df9, with
cursor cleanup corrected in 38eaefe, for review.

Validation: built against Hyprland 0.56.2. Nested compositor tests cover repeated
open/close from fullscreen, exact workspace and internal/client-mode restoration,
reload/reopen, unload while open, real pointer selection across workspaces,
empty-background clicks, preserved default sticky behavior at 100% scale, and
opt-in fullscreen selection at 200% scale (including an already-fullscreen
selection). Physical gestures were previously confirmed on the local desktop.
Older Hyprland releases, rotated outputs, and multiple physical monitors have
not been validated.

Cursor regression: overview cleanup previously cleared the pointer buffer via
resetCursorImage() while retaining the renderer's cached shape. This could
leave the pointer invisible after selection even when the application requested
the same shape again. Restore the default cursor through the renderer instead,
including during teardown. A test-only observer checks cursor image availability
after dismissal, selection, and unload; the old build fails with "cursor image
disappeared". The fixed upstream build passes normal selection at 100% scale,
and the same fix in the personal fullscreen-selection build passes at 200%.

@Alyx-Clark
Alyx-Clark marked this pull request as ready for review September 11, 2026 18:26
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.

1 participant