06 minute read

Unlocking more than 10 workspaces in Hyprland

I thought Hyprland was holding me back on workspaces. It wasn’t. The real constraint was much closer to my hands than I expected.

The problem with 10 workspaces

I moved to Linux a few months ago. Shortly after, I realised that the default Omarchy setup for Waybar limits workspaces to 10.

Not because Hyprland can’t handle more. Not because Waybar can’t display them. But because keybindings are tied to the keyboard’s number row.

To switch to workspace 8, you press SUPER + 8.
To move a window to workspace 2, SUPER + SHIFT + 2.
Workspace 10 maps to 0.

And then… you hit a wall.

What about workspace 20? Or 32? Or 99?

This is not a Hyprland limitation

Hyprland itself has no such restriction. You can prove it instantly:

Bash
1
hyprctl dispatch workspace 20

Run that command and you’ll jump straight into workspace 20. If it doesn’t exist yet, Hyprland creates it.

That’s exactly what Omarchy’s keybindings do under the hood. So the limitation isn’t Hyprland, Waybar, Omarchy, or Linux.

It’s the keyboard.

Unless you’re willing to buy a keyboard with a “20” key—which doesn’t sound very practical, especially on a laptop—this approach simply doesn’t scale.

A first attempt (and why it fell short)

Back in December 2025, I opened a discussion in the Omarchy GitHub repo suggesting a workaround for workspaces beyond 10. The idea was simple: a small script that prompts for a workspace number and dispatches the command.

It got zero traction. But more importantly, it wasn’t great.

The script worked fine for creating and switching to workspaces like 32 or 88. But moving windows was awkward.

The dispatcher that moves windows to another workspace acts on the currently focused window. That means that even if I opened a terminal window and typed a number, I would be moving the wrong window—the terminal window I just opened. I needed to first find a way to identify the specific window I wanted.

Not exactly smooth.

The missing piece: scratchpad

This week, I finally paid attention to something I’d been ignoring: the scratchpad workspace.

Scratchpad is a special workspace that floats above everything else. You toggle it with SUPER + S. Any window launched there stays hidden until you bring it back.

You can also move existing windows into it with SUPER + ALT + S.

That’s when it clicked.

Scratchpad could act as a temporary staging area for windows—before sending them to any workspace number I want.

The new workflow

Here’s how it works now:

First, I toggle scratchpad.
Then I open new windows there, or move existing ones into it.
After that, I trigger a script that asks for a workspace number.
I type something like 88 and press enter.
All windows in scratchpad move to workspace 88, and Hyprland switches to it.

If scratchpad is empty, the workspace still gets created. No special cases. This avoids focus issues entirely and keeps the workflow predictable.

The script

Bash
12345678910111213
#!/bin/bash  
ghostty --title="WorkspacePrompt" -e bash -c '  
  read -p "Moving all windows in scratchpad to workspace number: " num  
  [[ "$num" =~ ^[0-9]+$ ]] || exit 0  

  hyprctl clients -j \  
  | jq -r ".[] | select(.workspace.name == \"special:scratchpad\") | .address" \  
  | while read -r addr; do  
      hyprctl dispatch movetoworkspace "$num",address:"$addr"  
    done  

  hyprctl dispatch workspace "$num"  
'

The key detail here is that the script queries all clients, filters only those in the scratchpad workspace, and moves them one by one using their window address.

No guessing. No accidental window moves.

Making it feel native

By giving the terminal a custom title, I can apply a rule so it always opens floating, as any other prompt would:

Plain Text
1234567
windowrule {  
    name = WorkspacePrompt  
    match:title = WorkspacePrompt  

    float = on  
    size = 400 100  
}

It shows up cleanly, does its job, and disappears.

Why this works well

This doesn’t fight Hyprland. It works with it.

Keybindings stay simple for the common case. Scratchpad becomes a flexible buffer. And higher-numbered workspaces stop being a second-class citizen.

It’s still a workaround—but it’s one that actually fits into daily use.

Takeaways

The 10-workspace limit isn’t really a Hyprland problem. It’s a side effect of how we bind workspaces to number keys.

Hyprland itself is far more flexible than the default setup makes it seem, and once you stop relying purely on keybindings, things open up quickly.

Scratchpad turned out to be more than a place to hide windows. Used as a temporary holding area, it makes moving windows around feel deliberate instead of fragile.

With a very small script, it’s possible to build a workflow that scales naturally without fighting the compositor.

Photo of Pedro