Skip to content
zantakPublic

About

Per-monitor workspaces for the Omarchy bar: one isolated desk per screen.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Z-Desks

Two screens, two desks, ten workspaces — isolated per screen.

A multi-monitor Omarchy setup usually behaves like one big screen: the same workspace strip on every bar, the same highlight, the same scale. Z-Desks breaks it apart and turns each monitor into a desk of its own.

Workspaces Scale
Screen A 1 2 3 4 5 the scale that fits it
Screen B 6 7 8 9 10 the scale that fits it
10 workspaces total per screen
  • Isolated workspaces. Each screen owns its own range, so two displays give you 10 workspaces total. A bar lists only the workspaces of the monitor it is drawn on, and highlights the one that screen is focused on — never the other screen's. Switching desks on one screen never disturbs the other.
  • Independent scale. Because each screen is its own desk, each one keeps the scale that fits it (a hi-DPI 4K next to a lower-DPI panel, or any pair of monitors), so text and UI feel right on both.
  Built-in omarchy.workspaces            Z-Desks
  Screen A   ● 1 2 3 4 5 6 7 8 9 10      Screen A   ● 1 2 3 4 5
  Screen B   ● 1 2 3 4 5 6 7 8 9 10      Screen B             ● 6 7 8 9 10
             └── same strip on both ──┘              └── one desk per screen ──┘

Why

The built-in workspaces widget lists workspaces globally and highlights the globally focused one, so every bar displays the same numbers and the same focus. Z-Desks resolves the output its own bar is drawn on and lists only the workspaces Hyprland assigned to that output. Each screen gets an independent strip, which is what makes a 5 + 5 layout actually feel like two desks instead of one 10-workspace strip duplicated twice.

Features

  • Each bar is self-scoped to its monitor — no shared strip, no wrong highlight.
  • Two screens isolate into two desks: 10 workspaces, 5 per screen, no overlap.
  • Click a workspace to focus it.
  • Occupied workspaces are full-opacity, empty ones are dimmed.
  • Horizontal or vertical bars (root.vertical aware).
  • Pure bar-widget: lightweight, no service, no panel, no extra process.

Requirements

  • Omarchy (Quattro shell)
  • Hyprland
  • Per-screen workspace rules (below) — without them there is no isolation to show
  • Per-screen scale is set on the Hyprland side (Display panel, or scale-screen); Z-Desks reads the desks, it does not change the scale itself

Install

omarchy plugin add https://github.com/zantak/z-desks.git --enable

Then turn off the built-in Workspaces widget (omarchy.workspaces) so you don't end up with a duplicate strip in the same bar.

Configure

1. Give each screen its own range

Pin the workspaces to a monitor with persistent workspace rules in ~/.config/hypr/workspaces.lua, so each desk stays visible even when empty. Use your own monitor names (hyprctl monitors lists them):

local desks = {
  { monitor = "<monitor-1>", from = 1, to = 5 },
  { monitor = "<monitor-2>", from = 6, to = 10 },
}

for _, desk in ipairs(desks) do
  for n = desk.from, desk.to do
    hl.workspace_rule({ workspace = tostring(n), monitor = desk.monitor, persistent = true })
  end
end

Require it from ~/.config/hypr/hyprland.lua (require("hypr.workspaces")), then reload:

hyprctl reload

Without persistent rules the widget still works — it just shows the workspaces that currently exist on each output.

2. Scale each screen to taste

The two desks don't have to share a scale. Set it per monitor in the Display panel, or from the CLI — a higher scale on a hi-DPI display, a lower one on the other — and each desk will feel right. (Hyprland's monitor scale; Z-Desks doesn't touch it.)

Remove

omarchy plugin remove ztk.z-desks

Notes

  • Hyprland has a single global numbering space, so ranges must not overlap between screens. Z-Desks does not (yet) duplicate numbers across monitors — that's what hyprsplit is for.
  • The shell's text size is global (one Style singleton); only the monitor scale is per screen.

License

MIT — see LICENSE.

About

Per-monitor workspaces for the Omarchy bar: one isolated desk per screen.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages