3 Commits
Author SHA1 Message Date
pastilhasandClaude Opus 5 a8b49abd4b Shrink the workspace list and label each with its shortcut digit
Twenty workspaces plus dividers was ~912px of bar.

- Label each workspace with `id % 10`, so 11-15 read "1 2 3 4 5", 1-10 read
  "1 2 3 4 5 6 7 8 9 0" and 16-20 read "6 7 8 9 0". Beyond the width this
  buys, it makes the label the key you press: the bindings are SUPER+<n> for
  1-10, SUPER+CTRL+1..5 for 11-15 and SUPER+CTRL+6..0 for 16-20, so the
  digit shown is the digit in that workspace's shortcut.

- Narrow the buttons to space(13) now every label is one character, drop the
  inter-button spacing to 0, and set the font a step below body. The group
  dividers keep their wider gaps — that separation is what distinguishes the
  three monitors.

Net ~560px, down from ~912px.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 17:32:39 +01:00
pastilhasandClaude Opus 5 e05733448a Per-monitor workspace list with cross-monitor switching
Show every workspace grouped by the monitor it is pinned to, in physical
order, and let a click change another monitor without moving the pointer.

- Fixed layout of all 20 workspaces instead of stock's occupancy-derived
  list, which seeded [1..5] and hard-capped at 10 — 11-20 could never
  appear however they were assigned. Grouped as 11-15 | 1-10 | 16-20,
  matching the pinning in ~/.config/hypr/workspaces.lua, with dividers
  and wider gaps between groups. Workspace 10 renders as "10" rather than
  "0" now that two-digit labels are the norm.

- Clicking a workspace that lives on another monitor switches that
  monitor without dragging the cursor across. Omarchy sets
  cursor.warp_on_change_workspace = 1, so a plain focus({ workspace })
  teleports the pointer to whichever screen the workspace is pinned to.
  Instead: suppress warping, hop focus to the target monitor, change its
  workspace, hop back, restore warping.

  This goes through `hyprctl eval` rather than `dispatch` for two
  reasons. Hyprland 0.56 parses `hyprctl dispatch` as Lua, so it takes
  exactly one dispatcher object — `dispatch workspace 12` fails as
  `hl.dispatch(workspace 12)`. And `hyprctl keyword` no longer works at
  all under that parser: "keyword can't work with non-legacy parsers.
  Use eval." eval takes multiple statements, so the whole sequence runs
  as one call instead of five racing ones.

  Clicking a workspace on the monitor you are already on keeps stock
  behaviour.

The monitor names are specific to this machine (HDMI-A-1 / DP-1 /
HDMI-A-2) and live in workspaceGroups + groupMonitors at the top of the
file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 22:45:52 +01:00
pastilhas 04cb314967 Baseline: omarchy.workspaces as shipped
Workspaces.qml exactly as it ships in omarchy-dev 4.0.0.r1744.gf002044
(shell/plugins/bar/widgets/), alongside the manifest that `omarchy plugin
clone` generates — upstream has no per-widget manifest, the widgets share
the shell's registry.

Kept on its own branch so `git diff stock..master` shows precisely what
this fork changes, and so a future Omarchy release can be dropped onto
this branch and merged.
2026-08-15 22:45:52 +01:00