Workspaces.qml: Add global workspace sync for multi-monitor setups - #10199
Workspaces.qml: Add global workspace sync for multi-monitor setups#10199amacieli wants to merge 1 commit into
Conversation
- Introduces dual-mode operation: global mode (all monitors switch together) and
local mode (stock per-monitor behavior, fallback)
- Global mode is opt-in via toggle file ~/.local/state/omarchy/toggles/hypr/workspace-global.lua
- When global mode is active:
- Bar shows stable 5 slots (AW1-AW5) instead of raw Hyprland WS IDs
- Clicking a slot calls omarchy-hyprland-workspace-global-switch (handles
workspace theft and fullscreen=2 blocking)
- All three monitor bars agree on focused/occupied state
- When global mode is absent:
- Falls back to stock omarchy behavior (per-monitor focus, raw WS IDs)
- No breaking changes to existing installs
- Each monitor owns exclusive workspace range (offset = monitor_id * 10):
- Monitor 0: WS 1-10
- Monitor 1: WS 11-20
- Monitor 2: WS 21-30
Related to discussion omacom#8412 (linked workspaces for multi-monitor setups)
|
Three things from having built essentially this same design independently before finding this PR — thanks for the 1. Allocating bases against a stable identity ( 2. The QML side may not need the offset formula duplicated at all. Quickshell already exposes the mapping: 3. A real bug, worth flagging since this PR is probably affected too: The fix that worked for me: add an One more small thing found while building the keybind side, unrelated to this widget but easy to trip over in the same feature: iterating monitors with Happy to send any of this as a follow-up PR if useful. Assisted by Claude Code (Claude Sonnet 5). |
Chessing234
left a comment
There was a problem hiding this comment.
global sync looks fine, but awisfocused shouldn't hardcode monitor 0 — if that output is gone every bar shows no focused workspace while switches still work. derive the slot from any connected monitor's active workspace minus its offset.
Related to discussion #8412 (linked workspaces for multi-monitor setups)