canido.dev
Projects/zjeffer / split-monitor-workspaces

split-monitor-workspaces

Separate numbered workspaces per monitor for Hyprland

Get it on GitHub
Unclaimed

Built by @zjeffer on GitHub. This page was written by @iluxav from public sources, last updated for v0.56.0 (2026-07-20), and may lag behind new releases.

Maintain split-monitor-workspaces? Claim it
v0.56.0 / 2026-07-209 things you can doFollow (Atom feed)

Give every monitor its own workspaces 1 to N, as the dwm window manager does, so SUPER+number switches workspaces on the monitor you are on.

What you can do with it

Switch to the Nth workspace of the monitor you are on, with each monitor numbered 1 to N on its own.

Good to know

On Omarchy, unbind Omarchy's SUPER+number and SUPER+SHIFT+number binds first.

Present at v0.52.2

Send the active window to the Nth workspace of the current monitor, with or without following it.

Present at v0.52.2

Cycle to the next or previous workspace on the current monitor, wrapping at the ends or stopping there.

Present at v0.52.2

Move the active window to the next or previous monitor.

Present at v0.52.2

Create a fixed number of persistent workspaces on each monitor at startup, so status bars show them even when empty.

Present at v0.52.2

Bring windows left on a disconnected monitor's workspaces back to the current monitor.

Present at v0.52.2

Configure per-monitor workspaces from Hyprland's Lua config with smw.setup and bind the returned functions with hl.bind.

Good to know

Needs Hyprland 0.55.0 or newer and the Lua config.

Since v0.55.4

Load it as a C++ plugin through hyprpm and configure it in hyprland.conf.

Good to know

Hyprland plugins have no ABI guarantees; the plugin must be built for your exact Hyprland version.

DeprecatedPresent at v0.52.2
Release history 5
v0.56.02026-07-20

Refer to monitors by their description instead of their port name.

Details

Monitor names in monitor_priority and max_workspaces accept a desc: prefix matching the start of the monitor description, for example desc:ViewSonic Corporation VX2758A-QHD.

Tag v0.56.0, for Hyprland 0.56.0.

Improved / inferred: Switch to the Nth workspace of the monitor you are…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.55.42026-06-23

Set up per-monitor workspaces from Hyprland's Lua config with smw.setup and bind them with hl.bind.

Details

The project is now a Lua package: clone it into ~/.config/hypr/plugins, require it, call smw.setup({ workspace_count = 5, ... }) and bind smw.workspace(n), smw.move_to_workspace_silent(n), smw.cycle_workspaces and smw.grab_rogue_windows. It uses hy3's dispatchers when hy3 is loaded. The C++ plugin moved to docs/cpp-plugin.md and is marked deprecated. Groups v0.55.0 to v0.55.4.

Tag v0.55.4 or branch release/0.55.x; the Lua package needs Hyprland 0.55.0 or newer with the Lua config, and Lua as a dependency.

Added: Configure per-monitor workspaces from Hyprland's Lu…Deprecated: Load it as a C++ plugin through hyprpm and configur…Improved: Switch to the Nth workspace of the monitor you are…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.53.32026-01-25

Switch all monitors to the matching workspace at once, the way GNOME does.

Details

New option link_monitors (default 0). The README adds unbind lines for Omarchy's default SUPER+number binds and scroll actions for Waybar. Commands now work when enable_persistent_workspaces = 0. Groups v0.53.2 and v0.53.3.

Tag v0.53.3, for Hyprland 0.53.3.

Added: Switch every monitor to its corresponding workspace…Now works: Create a fixed number of persistent workspaces on e…Improved: Switch to the Nth workspace of the monitor you are…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.53.12026-01-03

Choose which monitor gets the lowest workspace numbers, and give each monitor its own number of workspaces.

Details

New config keywords monitor_priority (for example monitor_priority = DP-1, DVI-D-1) and max_workspaces (for example max_workspaces = DP-1, 9). Groups v0.53.0 and v0.53.1.

Tag v0.53.1, for Hyprland 0.53.1.

Improved: Switch to the Nth workspace of the monitor you are…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.52.22025-11-14
Starting point

Switch to workspace 1 to N on the monitor you are on, with each monitor keeping its own set.

Details

State as of v0.52.2: a Hyprland C++ plugin with the dispatchers split-workspace, split-movetoworkspace, split-movetoworkspacesilent, split-cycleworkspaces, split-changemonitor, split-changemonitorsilent and split-grabroguewindows, configured under plugin:split-monitor-workspaces (count, keep_focused, enable_notifications, enable_persistent_workspaces, enable_wrapping).

Tag v0.52.2; install with hyprpm, the Nix flake or a manual build against matching Hyprland headers.

Added: Switch to the Nth workspace of the monitor you are…Added: Send the active window to the Nth workspace of the…Added: Cycle to the next or previous workspace on the curr…Added: Move the active window to the next or previous moni…Added: Create a fixed number of persistent workspaces on e…Added: Bring windows left on a disconnected monitor's work…Added: Load it as a C++ plugin through hyprpm and configur…

Seeded by @iluxav with Claude Code (canido)

Read the evidence