Skip to content

feat(actions): add output-boundary traversal for window focus and move - #18

Open
oldirtty wants to merge 2 commits into
noctalia-dev:mainfrom
oldirtty:feat/window-focus-move-or-output
Open

feat(actions): add output-boundary traversal for window focus and move#18
oldirtty wants to merge 2 commits into
noctalia-dev:mainfrom
oldirtty:feat/window-focus-move-or-output

Conversation

@oldirtty

Copy link
Copy Markdown

Summary

Adds new IPC actions that extend the existing focus/movement commands to cross output boundaries:

  • window-focus-or-output-left / window-focus-or-output-right
  • window-focus-or-output-up / window-focus-or-output-down
  • window-move-or-output-left / window-move-or-output-right
  • window-move-or-output-up / window-move-or-output-down

When the focused window is already at the edge of its row or column, instead of silently doing nothing, these actions focus the adjacent output in that direction or move the focused window's column to that output. This matches the behavior of Niri and makes monitor navigation seamless across both axes in scrollable-tiling layouts.

The original window-focus-left/right/up/down and window-move-left/right/up/down actions remain unchanged for users who prefer workspace-local behavior.

Motivation

Got used to the Niri feature, and was struggling without it. I use only horizontal output traversal; but this PR completes the feature with vertical support as well for consistent monitor navigation in both axes.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Build / packaging
  • Documentation

Related Issue

None

Testing

just format
just test
just lint

Manual Coverage

  • Tested in a nested Umbriel session
  • Tested in a native Umbriel session
  • Tested with multiple monitors
  • Tested with a scaled output
  • Tested with native Wayland applications
  • Tested with X11 applications through xwayland-satellite
  • Tested with the scrolling layout
  • Tested with the dwindle layout

Screenshots / Videos

N/A

Checklist

  • This PR is ready for review, or it is marked as Draft.
  • I read and followed the relevant guidance in CONTRIBUTING.md.
  • I initialized and updated the SceneFX submodule where required.
  • I ran just format, or this PR has no C++ changes.
  • I ran the relevant build, test, lint, or verification commands, or explained why they were not run.
  • I functionally verified compositor behavior where automated checks are insufficient.
  • I self-reviewed the changes.
  • I checked for new warnings or errors.
  • I updated docs/ and examples/config.toml, or this PR does not change user-facing configuration or behavior.
  • I used canonical names for config keys, IPC actions, paths, and identifiers.

Adds window-focus-or-output-{left,right} and
window-move-or-output-{left,right}: falls through to focusing/moving to
the adjacent output when the column is already at the edge. Vertical
(up/down) variants land in a follow-up commit.
@oldirtty oldirtty changed the title Feat/window focus move or output feat(actions): add output-boundary traversal for window focus and move Aug 23, 2026
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