Omahub
← All plugins
C

Spaces

by Chinmay Bhosale

Create named Spaces and switch complete sets of workspaces without closing applications.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
84ac30d
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
84ac30d
Reviewed
1 month ago

The plugin is a workspace context switcher that manipulates Hyprland workspaces via hyprctl. The code is transparent, well-tested, and includes safety mechanisms like locking, atomic writes, and recovery. No malicious or destructive behavior found.

  • The plugin uses hyprctl dispatch to change workspace IDs, which could temporarily disrupt the session if a bug occurs, but it has recovery mechanisms.
  • The plugin requires exactly one monitor; it refuses to operate otherwise, which is a safe limitation.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/chinofmaya/omarchy-spaces --enable
Productivity #Hyprland #quickshell #workspaces

Spaces

Create named Spaces for any project or activity, then switch every workspace and running app together.

Create as many Spaces as you need and give each one any name. Every Space gets its own use of workspaces 1–10, without closing a single application when you switch.

Spaces switcher showing Code, Research, and Personal Spaces with the active Space in the Omarchy bar

One desktop, your own Spaces

A normal Hyprland session gives you numbered workspaces. Spaces lets you create and name complete sets of those workspaces for whatever matters to you.

The screenshot uses three examples:

  • Code can hold your editor, terminals, and development browser.
  • Research can hold articles, notes, and documents.
  • Personal can hold music, messages, and everything outside work.

These are examples, not predefined categories. You choose every Space name and what belongs inside it.

Open the switcher, select a Space, and press Enter. The current set moves out of the way and the selected set returns exactly as you left it.

What you get

  • Switch every workspace at once — move between complete desktop setups in one action.
  • Keep every application running — Spaces never closes and relaunches your apps.
  • Preserve your layout — tiling trees, split ratios, floating windows, fullscreen state, and focus stay intact.
  • See where you are — the Omarchy bar always shows the active Space name.
  • Stay keyboard-first — create, switch, rename, delete, and reset without on-screen buttons.
  • Recover safely — interrupted switches roll back automatically on the next operation.

Install

Install and enable Spaces with Omarchy's standard plugin command:

omarchy plugin add https://github.com/chinofmaya/omarchy-spaces.git --enable
omarchy restart shell

Add a shortcut

Spaces does not change your keybindings. You choose how to open it.

Add this to ~/.config/hypr/bindings.lua:

o.bind(
  "SUPER + ALT + P",
  "󰽙 Spaces",
  "omarchy-shell shell toggle io.github.chinofmaya.spaces '{}'"
)

Apply the change:

hyprctl reload
hyprctl configerrors

You can replace SUPER + ALT + P with any unused binding. Check your current bindings with:

hyprctl binds

Avoid SUPER + ALT + S: Omarchy already uses it to move the focused window to the scratchpad. Hyprland runs duplicate bindings instead of replacing the old action.

You can also open Spaces directly:

omarchy-shell shell toggle io.github.chinofmaya.spaces '{}'

Use Spaces

Create your first Space

  1. Arrange your applications across workspaces 1–10.
  2. Open the Spaces switcher.
  3. Press Enter, type a name, and press Enter again.

Your current desktop is now captured as a Space. The bar shows 󰽙 <name>.

Create another Space

  1. Open the switcher.
  2. Press N.
  3. Name the new Space.
  4. Open applications normally in the empty context.

Switch Spaces

Open the switcher, select a Space with Tab or the arrow keys, and press Enter.

Spaces swaps the complete working context. Applications in the other Space keep running.

Controls

Key Action
Tab, ↑, ↓ Select a Space
Enter Capture the first Space or switch to the selected Space
N Create a new Space
E Rename the selected Space
D, then D again Remove a Space without closing its windows
R, then R again Reset Spaces and restore all parked workspaces
Esc Close or cancel

The switcher is buttonless. Every action is available from the keyboard.

What appears in Omarchy

Spaces switcher

The switcher lists your named Spaces and the applications currently kept inside each one. The selected row is the Space that opens when you press Enter.

Bar indicator

The top bar shows the Spaces icon followed by the active Space name:

󰽙 Work

It updates after captures, switches, renames, deletes, resets, and recovery.

How it works

Spaces groups live Hyprland workspaces into named contexts.

When you switch:

  1. The current Space's occupied workspaces are moved to collision-free reserved workspace IDs.
  2. The selected Space's complete workspace objects return to their original slots.
  3. Focus and workspace state are restored.

Applications are never closed or relaunched. Because whole workspace objects move together, Hyprland keeps their tiling layout and split ratios.

State is stored in ~/.local/state/omarchy-spaces/. Every switch uses an atomic state file and transaction journal so an interrupted operation can be rolled back.

Spaces are session-bound. After a logout or reboot, Spaces starts with an empty list and does not reopen applications.

Reset and remove

Before disabling or removing Spaces, restore all parked workspaces:

  1. Open Spaces and press R twice, or run:
omarchy-shell spaces reset RESET
  1. Then remove the plugin:
omarchy plugin disable io.github.chinofmaya.spaces
omarchy plugin remove io.github.chinofmaya.spaces

If reset reports an error, stop and resolve it before removing the plugin.

Requirements

  • Omarchy 4 with Lua-based Hyprland configuration
  • Hyprland 0.56 or newer
  • Quickshell 0.3
  • jq
  • flock from util-linux
  • One active monitor

Spaces currently manages workspace slots 1–10. It is a workspace context switcher, not an application launcher or reboot/session restore system.

Development

Keep the development checkout in ~/Work/omarchy-spaces. Do not edit packaged files under /usr/share/omarchy.

Run the validation suite without installing the plugin:

omarchy plugin validate ~/Work/omarchy-spaces
/usr/lib/qt6/bin/qmllint -I /usr/share/omarchy/shell Service.qml Spaces.qml SpaceIndicator.qml RecoveryGate.qml
env -u QT_QPA_PLATFORMTHEME QT_QPA_PLATFORM=offscreen /usr/lib/qt6/bin/qmltestrunner -input tests
bash -n scripts/spacesctl scripts/remap-probe.sh
bash tests/test-ui-safety.sh
bash tests/test-service-boundary.sh
bash tests/test-spacesctl.sh
bash tests/test-spacesctl-recovery.sh

License

MIT