Skip to content

Repository files navigation

Desks

      +---------+
      |  o   o  |
      |    ~    |
      +----+----+
     /|         |\
     \|_________|/
       ||     ||
      _||     ||_

Named-desk overlay for Omarchy Quattro. A desk is the current 1–10 workspaces, given a name. Switching parks this room onto named special workspaces special:omadesk-<id>-N (the same kind of hidden space as the scratchpad, so Super+Tab never lands there) and brings the other room back onto 1–10. Each workspace is put back on the monitor it was on; a missing display is skipped. The bar still shows 1 2 3. The scratchpad itself (special:scratchpad) stays global and is never parked, restored, or stored.

Desks picker

Live truth while the session is alive is parked window addresses. Two Chromiums on two workspaces work during the day because we move those addresses. A save stores class, exec, Chromium profile, terminal cwd and command, and window size. After a reboot, switching into that desk relaunches those windows (chromium --profile-directory=… --new-window, a terminal with its directory and command, floating size and position). Workspace tiles show the tiled layout from window geometry, with app icons, two per row at the monitor's aspect ratio.

Install

omarchy plugin add https://github.com/modoterra/omadesk.git --enable

From this checkout:

omarchy plugin add /home/hallas/Work/modoterra/omadesk --enable

There is no installer script. The plugin is QML + JavaScript only.

Put the chip next to the stock workspace numbers:

omarchy bar move com.mdtrr.omadesk --section left

Summon

omarchy-shell shell toggle com.mdtrr.omadesk

Suggested bind: Super+D. Super+Space stays the Omarchy menu. Super+Shift+D is Omarchy’s Docker TUI, so this plugin does not take that key.

o.bind("SUPER + D", "Desks", "omarchy-shell shell toggle com.mdtrr.omadesk")

Keys

Key Action
Super+D toggle overlay
/ start filter (Esc leaves)
j / k, arrows, h l move cursor
1–9 jump to card
click a workspace tile switch onto that workspace
drag a window pane onto another tile move that window on this desk
drag a pane onto Empty put it on the next free workspace
D / L in the workspace header toggle dwindle and scrolling
enter switch, or return to Unsaved
n save current as a named desk
s update desk you are on
r rename (display name; parking id stays)
e extras (DND Leave/On/Off, launch missing after reboot, theme Leave or Set)
del forget, with confirm (parked windows return to 1–10)
esc close (clear filter first if any)

Remove

omarchy plugin remove com.mdtrr.omadesk

Recipes live in ~/.config/omarchy/omadesk/desks.json. Forget deletes the recipe and brings that desk's parked windows back onto 1–10. A live desk still has windows (on 1–10 or parked). A dead desk is recipe only. Switching into it after a reboot launches the saved windows if Launch Missing is on. Theme extras can leave the current theme or run omarchy theme set. On the desk you are on, that set runs as soon as you pick it. On another desk it runs when you switch in.

Tests

node tests/test_model.js
omarchy plugin validate .
qmllint -I "$OMARCHY_PATH/shell" Overlay.qml BarWidget.qml

Security

Plugins run unsandboxed inside the long-lived Omarchy shell process, with your user permissions. Review the code before you enable it. Hyprctl is the only command used to move windows; apps are launched with uwsm-app.

Community

Use common sense and decency. There is no formal code of conduct. We reserve the right to moderate this community to the extent of the law and the policy of the host. Write community@modoterra.xyz if you need us.

About

Named-desk overlay for Omarchy. Sixteen workspaces stay 1–10; switching parks a room and brings another back.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages