Omahub
← All plugins
T

Auto Workspace

by tenzin

Auto-launch apps on workspaces at boot — assign YouTube to WS1, Code to WS2, etc. Supports multiple apps per workspace.

Security review

Review recommended · 1 finding

Deterministic scan — not a security guarantee

Medium
Risk level
Medium
Analyzed commit
8259f73
Scanned
1 month ago

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
8259f73
Reviewed
1 month ago

The plugin is a workspace auto-launcher that runs user-defined commands via hyprctl. The flagged eval is used to construct hyprctl dispatch commands from the user's own config, which is expected functionality. No network access, no privilege escalation, and the script includes symlink and size protections. The eval line should be reviewed to confirm it only executes user-provided commands, but no malicious behavior is evident.

  • The eval at auto-workspace.sh:259 is flagged; it appears to be used for hyprctl dispatch of user-defined commands, but should be verified to ensure it doesn't allow injection from untrusted sources.
  • The script reads shell history and recently-used.xbel for app scoring, which is local-only and not exfiltrated.
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/yesheytenzin/auto-workspace --enable
Widgets #launcher #workspaces #system

Auto Workspace

Auto-launch apps on workspaces at boot/login for Omarchy Quattro + Hyprland.

Assign YouTube to workspace 1 so it always opens there, put Code + Terminal on workspace 2, etc. Supports multiple apps per workspace, silent launch, and per-boot dedup.

Install

omarchy plugin add https://github.com/yesheytenzin/auto-workspace.git --enable
# or manual drop-in for dev:
mkdir -p ~/.config/omarchy/plugins/tenzin.auto-workspace
cp -r /path/to/auto_workspace/* ~/.config/omarchy/plugins/tenzin.auto-workspace/
omarchy-shell shell rescanPlugins
omarchy plugin enable tenzin.auto-workspace
# bar widget appears in left section; move if desired:
omarchy bar move tenzin.auto-workspace --section left

Usage

  1. Click the 󰨧 icon in the bar (left) → Auto Workspace panel.
  2. Click + Add, pick workspace 1-10, type name + command/URL, choose type:
    • App — .desktop Exec like code, spotify, foot, chromium
    • Web App — URL like https://youtube.com (uses omarchy-launch-webapp)
    • Custom — raw command as-is
  3. Add to WS — saved to ~/.local/state/omarchy/auto-workspace/config.json (legacy plugin-folder config is auto-migrated).
  4. Click Launch all to test now, or ↗ on a single rule. On next boot/login it launches automatically.

Tips:

  • Centered panel: icon may be left/center/right — panel always opens centered (centerOnBar: true, 720 wide) for a full workspace overview.
  • Workspace list (1-10): each WS shows count, assigned apps, and a live preview. Expand a WS to see its apps, drag tiles to reorder launch order or drag between workspaces to move assignments — preview updates live (dwindle mock for 1-4 apps, grid for >4). Hypr live preview (maybe): shows ● live N + chips for windows currently on that WS from hyprctl clients -j (polls every 2s when open), updates as you launch/move windows.
  • Multiple apps on same workspace → they tile/float per that workspace's Hyprland layout. Preview follows the selected workspace. The ⇄ dwindle/scrolling button sets this workspace only (same persist path as Super+L: ~/.local/state/omarchy/workspace-layouts/<id>.lua).
  • Use filter box to pick from installed .desktop apps quickly.
  • Per-workspace launch is hyprctl eval 'hl.exec_cmd("[workspace N silent] <cmd>")' — doesn't steal focus.
  • Launch timing is now per-app by type: Web App (Chromium zygote) defaults to Once per boot (no duplicate on rescan), App (native foot/ghostty/code) defaults to Every restart (closed windows come back), Custom defaults to Once per boot. Change via Once/Every toggle per row or Launch: Once per boot / Every restart when adding.

Config

~/.local/state/omarchy/auto-workspace/config.json:

{
  "version": 1,
  "settings": {
    "enabled": true,
    "launchDelayMs": 800,
    "staggerMs": 400,
    "silent": true,
    "onlyOnBoot": true
  },
  "assignments": [
    { "id": "aw-...", "workspace": 1, "name": "YouTube", "command": "https://youtube.com", "exec": "omarchy-launch-webapp 'https://youtube.com'", "type": "webapp", "enabled": true, "onlyOnBoot": true },
    { "id": "aw-...", "workspace": 2, "name": "Foot", "command": "foot --app-id=foot-work", "exec": "foot --app-id=foot-work", "type": "app", "enabled": true, "onlyOnBoot": false }
  ]
}

CLI

Helper script at ~/.config/omarchy/plugins/tenzin.auto-workspace/auto-workspace.sh:

auto-workspace.sh --status
auto-workspace.sh --list-apps
auto-workspace.sh --launch 1 "chromium --app=https://youtube.com"
auto-workspace.sh --launch-all
auto-workspace.sh --force-launch-all
omarchy-shell -q tenzin.auto-workspace launchAll
omarchy-shell -q tenzin.auto-workspace forceLaunchAll
omarchy-shell -q tenzin.auto-workspace status

How it works

  • Service.qml (kind service) runs on shell start (Component.onCompleted). It ensures config exists, then after launchDelayMs spawns auto-workspace.sh --launch-all via Process. Respects onlyOnBoot by remembering /proc/sys/kernel/random/boot_id in ~/.local/state/omarchy/auto-workspace/last_boot_id and dedups against hyprctl clients -j.
  • BarWidget.qml + Panel.qml (kind bar-widget) provides the management UI. No sudo, no network.

Update

omarchy plugin update tenzin.auto-workspace
# update all plugins
omarchy plugin update

Remove

omarchy plugin remove tenzin.auto-workspace
rm -rf ~/.config/omarchy/plugins/tenzin.auto-workspace ~/.local/state/omarchy/auto-workspace

License

MIT