Skip to content

feat(actions): add cross-workspace vertical focus and move variants - #11

Merged
ItsLemmy merged 1 commit into
noctalia-dev:mainfrom
DarkJaguar91:cross-workspace-vertical-focus
Aug 26, 2026
Merged

feat(actions): add cross-workspace vertical focus and move variants#11
ItsLemmy merged 1 commit into
noctalia-dev:mainfrom
DarkJaguar91:cross-workspace-vertical-focus

Conversation

@DarkJaguar91

@DarkJaguar91 DarkJaguar91 commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

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

  • window-focus-or-workspace-up / window-focus-or-workspace-down
  • window-move-or-workspace-up / window-move-or-workspace-down

When the focused window is already at the top/bottom of its column, instead of silently doing nothing, these actions switch to the adjacent workspace and restore focus or move the window there. This matches the behavior of Niri and feels more natural for scrollable-tiling layouts where workspace boundaries are meant to be seamless.

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

Docs updated in docs/user/keybinds.md.

Motivation

Got used to the Niri feature, and was struggling without it.

Type of Change

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

Related Issue

None

Testing

just format
just test
just lint

In my NixOS using my fork as a flake

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

https://drive.google.com/file/d/1rcqfkEse3F1VcwsvKoRQzVotbVzreKMA/view?usp=sharing

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.

@DarkJaguar91
DarkJaguar91 force-pushed the cross-workspace-vertical-focus branch from 46415c8 to e0a414d Compare August 23, 2026 05:41
@Yocraft-2000

Copy link
Copy Markdown
Contributor

How does this fix #7 ? #7 fixes the bug where dragging a pinned window over a fullscreen window make it disappear:

umbrielpinnedbug.mp4

@DarkJaguar91

Copy link
Copy Markdown
Contributor Author

How does this fix #7 ? #7 fixes the bug where dragging a pinned window over a fullscreen window make it

hmm, I was testing this at like 2am, and I guess I must have tested on maximized screen instead of full screen. Will remove that reference

Add new IPC actions that extend the existing vertical focus/movement
commands to cross workspace boundaries:

- window-focus-or-workspace-up/down
- window-move-or-workspace-up/down

When the focused window is already at the top/bottom of its column,
instead of silently doing nothing, these actions switch to the adjacent
workspace and restore focus or move the window there. This matches
the behavior of Niri and feels more natural for scrollable-tiling
layouts where workspace boundaries are meant to be seamless.

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

docs/user/keybinds.md updated to document the new actions.
@ItsLemmy
ItsLemmy force-pushed the cross-workspace-vertical-focus branch from e0a414d to bc0245b Compare August 26, 2026 12:28
@ItsLemmy
ItsLemmy merged commit e173a27 into noctalia-dev:main Aug 26, 2026
ItsLemmy added a commit that referenced this pull request Aug 26, 2026
* feat: port the 3-finger view scroll behavior from niri

* fix: warnings

* feat(actions): add cross-workspace vertical focus and move variants (#11)

Add new IPC actions that extend the existing vertical focus/movement
commands to cross workspace boundaries:

- window-focus-or-workspace-up/down
- window-move-or-workspace-up/down

When the focused window is already at the top/bottom of its column,
instead of silently doing nothing, these actions switch to the adjacent
workspace and restore focus or move the window there. This matches
the behavior of Niri and feels more natural for scrollable-tiling
layouts where workspace boundaries are meant to be seamless.

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

docs/user/keybinds.md updated to document the new actions.

* fix: honor deactivated unfullscreen when activation follows (#16)

* feat(actions): center the focused scrolling column (#17)

Co-authored-by: Lemmy <studio@quadbyte.net>

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

* feat(keybinds): add window-focus/move-or-output actions

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.

* feat(keybinds): extend window-focus/move-or-output actions vertically

* fix(keybinds): register output traversal actions

---------

Co-authored-by: Lemmy <studio@quadbyte.net>

---------

Co-authored-by: Brandon James Talbot <bjtal91@gmail.com>
Co-authored-by: Lemmy <studio@quadbyte.net>
Co-authored-by: Ian Ribeiro <133624505+oldirtty@users.noreply.github.com>
Yocraft-2000 pushed a commit to Yocraft-2000/umbriel that referenced this pull request Aug 26, 2026
…octalia-dev#11)

Add new IPC actions that extend the existing vertical focus/movement
commands to cross workspace boundaries:

- window-focus-or-workspace-up/down
- window-move-or-workspace-up/down

When the focused window is already at the top/bottom of its column,
instead of silently doing nothing, these actions switch to the adjacent
workspace and restore focus or move the window there. This matches
the behavior of Niri and feels more natural for scrollable-tiling
layouts where workspace boundaries are meant to be seamless.

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

docs/user/keybinds.md updated to document the new actions.
Yocraft-2000 added a commit to Yocraft-2000/umbriel that referenced this pull request Aug 26, 2026
* feat: port the 3-finger view scroll behavior from niri

* fix: warnings

* feat(actions): add cross-workspace vertical focus and move variants (noctalia-dev#11)

Add new IPC actions that extend the existing vertical focus/movement
commands to cross workspace boundaries:

- window-focus-or-workspace-up/down
- window-move-or-workspace-up/down

When the focused window is already at the top/bottom of its column,
instead of silently doing nothing, these actions switch to the adjacent
workspace and restore focus or move the window there. This matches
the behavior of Niri and feels more natural for scrollable-tiling
layouts where workspace boundaries are meant to be seamless.

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

docs/user/keybinds.md updated to document the new actions.

* fix: honor deactivated unfullscreen when activation follows (noctalia-dev#16)

* feat(actions): center the focused scrolling column (noctalia-dev#17)

Co-authored-by: Lemmy <studio@quadbyte.net>

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

* feat(keybinds): add window-focus/move-or-output actions

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.

* feat(keybinds): extend window-focus/move-or-output actions vertically

* fix(keybinds): register output traversal actions

---------

Co-authored-by: Lemmy <studio@quadbyte.net>

---------

Co-authored-by: Brandon James Talbot <bjtal91@gmail.com>
Co-authored-by: Lemmy <studio@quadbyte.net>
Co-authored-by: Ian Ribeiro <133624505+oldirtty@users.noreply.github.com>
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