Omahub
← All plugins
G

Desktop layout

by Geert Zaal

Save and restore tiled Hyprland window layouts (workspace, order, width, height).

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
00dbaec
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

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
00dbaec
Reviewed
1 month ago

Manual review agrees with the deterministic scan: this is a straightforward local Hyprland window-layout save/restore utility. It only invokes hyprctl, writes a JSON snapshot under ~/.local/state/omarchy, and spawns a helper process on explicit save/restore IPC calls; there is no network, obfuscation, destructive behavior, or hidden persistence. The optional autostart snippet is a documented user-added config line, not something the plugin installs or runs by itself.

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/gzaal/omarchy-desktop-layout --enable
Desktop #Hyprland #quickshell #workspaces

Desktop layout for Omarchy / Hyprland

Save and restore tiled window layouts across workspaces: which app sits where, left-to-right / top-to-bottom order, and width + height.

Omarchy’s Hyprland Lua dispatchers (hl.dsp.*) do not understand classic hyprctl dispatch movetoworkspacesilent. This plugin talks Lua, probes tiling split direction (so +40px does not shrink the window), then walks every window toward the saved size.

Does not launch apps. Chrome / Telegram / etc. must already be opening (session restore or autostart). Then the layout is applied on top.

Install

omarchy plugin add https://github.com/gzaal/omarchy-desktop-layout.git --enable

Add to ~/.config/hypr/bindings.lua (use Home, not HOME):

o.bind("SUPER + SHIFT + Home", "Save desktop layout", "omarchy-shell gzaal.desktop-layout save")
o.bind("SUPER + CTRL + Home", "Restore desktop layout", "omarchy-shell gzaal.desktop-layout restore")

Reload Hyprland (hyprctl reload or log out).

Optional login restore — add to ~/.config/hypr/autostart.lua:

o.launch_on_start("bash -lc 'sleep 15; omarchy-shell -q gzaal.desktop-layout restore'")

Remove

omarchy plugin remove gzaal.desktop-layout

Then delete the two o.bind lines (and the optional autostart line) from your Hyprland config. The snapshot at ~/.local/state/omarchy/desktop-layout.json is left in place; delete it if you do not want it.

Keys

Shortcut Action
Super+Shift+Home Save layout of workspaces 1 and 2
Super+Ctrl+Home Restore it

Do not confuse with Omarchy’s Super+Home / Super+Alt+Home (single-window width).

On Logitech MX Keys, Home may need Fn.

CLI

python3 ~/.config/omarchy/plugins/<install-dir>/desktop-layout.py save
python3 ~/.config/omarchy/plugins/<install-dir>/desktop-layout.py restore

Snapshot file: ~/.local/state/omarchy/desktop-layout.json

Override workspaces:

OMARCHY_DESKTOP_LAYOUT_WORKSPACES=1,2,3 python3 desktop-layout.py save

Limitations

  • Matching is by window class + title. Chrome tab titles can drift; save again after a big tab change.
  • Does not start missing applications.
  • Dwindle/scrolling trees cannot always reproduce an arbitrary split; widths converge over a few resize passes.

License

MIT