Repository navigation
Monitor actions and paged Scroll (0.91.17–0.91.23) - #23
Merged
Merged
Conversation
Select neighboring monitors from live logical geometry and restore recent window focus. Move the pointer onto the restored window, preserving Ocean views and supporting shared cameras. Guard lock, exclusive layers and active pointer interactions. Add real-protocol multi-output coverage across all three engines and document 0.91.17. All 751 tests, fmt, both strict Clippy variants, debug/release builds and a private rendered CLI smoke pass. Native multi-monitor pointer verification remains pending.
Add directional and named monitor transfers using live logical geometry and the focused window's own output. Follow focus and pointer, preserve group and pin ownership, Scroll width proportions and floating/fullscreen/maximized restore geometry. Share tile-transfer and pointer handoff primitives, refresh Space membership before hit-testing, and handle pending client resize buffers. Reveal off-camera Ocean reefs with existing navigation behavior. All 753 tests, fmt, both strict Clippy variants, debug/release builds and private rendered CLI smoke pass. Multi-output behavior has real-protocol coverage; native transfer appearance and physical input remain unverified.
Transfer whole columns to the destination active workspace, keeping row order, height weights, width proportion, selected row, tab groups and output pins. Focus and pointer follow; floating selection delegates to the window transfer. Publish moved members after column reconstruction so IPC snapshots contain final column positions and sizing. Reuse live topology and preserve existing window/drop guards, fullscreen ownership and normal restore records. All 755 tests, fmt, both strict Clippy variants, debug/release builds and private rendered CLI smoke pass. A real IPC subscriber and multi-output Wayland fixture cover the column transaction; native transfer appearance and physical input remain unverified.
Preserve the workspace number when free, otherwise choose the first free normal slot. Transfer the complete layout, Scroll view and parked owners, then follow focus and pointer. Keep sticky floaters on their monitor unless fullscreen suspends the pin. Validate 761 tests, formatting, strict all-feature and default Clippy, debug and optimized builds, and a rendered three-client CLI smoke test. Native multi-monitor appearance and input remain pending.
Add focus-column-or-monitor-left/right and focus-window-or-monitor-up/down (niri names). They run ordinary directional focus and, when focus does not move or nothing is focused, focus the monitor on that side from the focused window's monitor. All engines; Classic/Scroll directional focus that lands on another monitor also moves the pointer.
scroll { pages = true } makes every Scroll column one page, exactly one
viewport long, holding at most two windows split along the strip. New
windows open a new page, the camera shows whole pages, scroll-left/right
flips pages, and windows only change pages through swap, consume or drag.
Along-strip resize moves the divider within a 20% limit.
Pages are ordinary column widths again, so tile_proportion, presets and center_focused still apply and neighbor pages peek in; tile_proportion 1.0 keeps full-screen pages. The view settles on a whole page (centered when centering applies) except while a touchpad swipe pans the strip, and scroll-left/right flips between those page views.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Layer 2 multi-monitor actions plus paged Scroll,
0.91.17–0.91.23.Monitor actions
focus-monitor-left/right/up/down,focus-monitor:<name>— restore the destination's last window; pointer follows (0.91.17).move-window-to-monitor-*/:<name>— focus and pointer follow; groups, pins, float size, fullscreen/maximize return travel (0.91.18).move-column-to-monitor-*/:<name>— Scroll only; rows, weights, width share and selected row travel (0.91.19).move-workspace-to-monitor-*/:<name>— Classic/Scroll; keeps the number if free, else first free slot (0.91.20).focus-column-or-monitor-left/right,focus-window-or-monitor-up/down— directional focus, monitor handoff at strip ends; all engines (0.91.21).Paged Scroll
scroll { pages = true }(off by default): a page is a column holding at most two windows side by side along the strip; new window = new page; nothing moves between pages automatically;scroll-left/rightflips pages (0.91.22).tile_proportionandcenter_focused(neighbors peek;1.0= full-screen pages) and the view always settles on a whole page except during a touchpad swipe (0.91.23).Verification
0.91.23: 766 tests (734+23+9), fmt, strict Clippy (all-features and default), locked all-feature release build.0.91.23, confirmed working.