Omahub
← All plugins
K

Hyprsidekick

by Kelvin Confesor

Mnemonic named-workspace switcher with pill, dropdown, and config UI

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
b21e740
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
b21e740
Reviewed
1 month ago

The plugin is a workspace switcher that generates Hyprland keybinds and writes config files. The code is carefully written with input validation and escaping (safeMod, validKey, luaEsc, shellQuote) to prevent command injection, and all shell commands it runs are static or sanitized. The only side effects are the expected ones: writing its own config, disabling the stock widget (a documented setting), and reloading Hyprland.

  • Runs unsandboxed and executes shell commands (hyprctl, omarchy plugin disable, omarchy bar move), but all are static or sanitized.
  • Writes to ~/.config/hypr/hyprsidekick.lua and reloads Hyprland; this is expected functionality and clearly documented.
  • Disables the stock omarchy.workspaces widget by default (hideStockWidget=true), which is a user-visible side effect but configurable.
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/kconfesor/hyprsidekick --enable
Widgets #Hyprland #bar #workspaces

Hyprsidekick

An Omarchy bar widget for mnemonic named workspaces, AeroSpace-style (the macOS tiling window manager) adapted to Hyprland. Shows the workspace you're on as a pill, opens a dropdown of all your workspaces (named + numbered) to click-jump, and gives you a visual Settings panel to manage them and their Hyprland keybinds. No JSON editing required.

Replaces the stock omarchy.workspaces widget, which only shows numeric workspaces and hides named ones.

<p align="center"> <img src="hyprsidekick-dropdown.png" alt="Workspace dropdown" height="300"> &nbsp;&nbsp; <img src="hyprsidekick-dropdown-2.png" alt="Workspace dropdown" height="300"> &nbsp;&nbsp; <img src="hyprsidekick-settings.png" alt="Settings panel" height="300"> </p>

How it works

You give each workspace a one-letter mnemonic and a name (and, optionally, an icon). Hyprsidekick then:

  • binds a modifier + letter shortcut to jump to that workspace, and modifier + Shift + letter to send the focused window there. The modifier defaults to Alt (Omarchy already uses Super for its numbered workspaces and Super + letter for apps, so Alt stays out of the way); choose Alt / Super / Ctrl / Super+Alt in Settings → Modifier.
  • shows the workspace you're currently on as a pill in the bar, by name, letter, letter·name, or icon (your choice).

Example: a workspace with key C and name Coding, using the default Alt modifier →

  • Alt + C jumps to it (on a Mac-style keyboard remapped with keyd, your Option/Cmd key acts as Alt, so it's Cmd + C),
  • the bar pill reads C·Coding (or Coding, or C, or its icon 󰅩).

So instead of remembering "workspace 4", you press the letter that means something to you. Click the pill to see them all and jump with the mouse.

Reading the dropdown

  • Highlighted row = the workspace you're on now.
  • Dot on the right = that workspace has open windows (occupied); no dot / dimmed = empty.
  • Named mnemonics are listed first, then your numbered workspaces.
  • Settings (gear, bottom) opens the visual editor.

Features

  • Pill showing the active workspace, by mnemonic, name, key·name, or icon.
  • Dropdown of every workspace (named mnemonics + numbered), with the active one highlighted and an occupied dot; click a row to jump.
  • Settings panel (in-shell, no config files): add / remove / edit workspaces (key, name, icon picker), choose label format and numbered-workspace behavior, move the widget between bar sections, and hide the stock widget.
  • Hyprland integration: generates ~/.config/hypr/hyprsidekick.lua with the <mod>+<key> switch / <mod>+Shift+<key> move binds for your workspaces (modifier configurable, Alt by default) and reloads Hyprland in one click.
  • Live preview while editing; Cancel (or Escape / click-away) reverts, Done commits.
  • Durable config: your workspaces persist to ~/.config/hyprsidekick/config.json, so disabling/re-enabling or updating the plugin never loses them.

Install

omarchy plugin add https://github.com/kconfesor/hyprsidekick.git --enable
omarchy bar move kconfesor.hyprsidekick --section left

One-time keybind setup. So Hyprland loads the generated shortcuts, add this line to ~/.config/hypr/bindings.lua once:

require("hypr.hyprsidekick")

(Hyprsidekick never edits your bindings.lua itself; if the line is missing it just sends a reminder. It only writes its own ~/.config/hypr/hyprsidekick.lua.)

Then open the widget's Settings (dropdown → gear), set up your workspaces, and hit Done. Whenever you add/remove a workspace or change its key, name, or modifier, Hyprsidekick regenerates the binds and reloads Hyprland automatically. (A manual Apply to Hyprland button is there too, to force a re-apply.)

Plugins run unsandboxed. Review the source before enabling.

Usage

  • Left-click the pill → open the dropdown. Click any workspace to jump to it (empty numbered workspaces are created on click).
  • Dropdown footer → Settings → open the editor.
  • <mod> + <key> switches to a workspace, <mod> + Shift + <key> moves the focused window there, where <mod> is your configured modifier (Alt by default; set it in Settings → Modifier). Binds update automatically when you edit workspaces. On a keyboard remapped with keyd, your Option/Cmd key is Alt.

Configure

Everything is editable in the Settings panel (its footer's gear). It persists to ~/.config/hyprsidekick/config.json (the durable source of truth) and mirrors into the widget's entry in ~/.config/omarchy/shell.json:

Key Values Default Meaning
workspaces [{ "key", "name", "icon" }] none Your named workspaces + mnemonics.
labelFormat key · name · key-name · icon key-name How the pill renders the active workspace.
numberedMode range · active · hidden active Numbered workspaces in the dropdown: fixed 1..N, only active, or none.
numberedCount integer 9 N, when numberedMode is range.
hideStockWidget bool true Remove the stock omarchy.workspaces from the bar.
barSection left · center · right left Which bar section the widget sits in.
bindMod ALT · SUPER · CTRL · SUPER + ALT ALT Modifier for the generated <mod>+<key> binds (Omarchy uses Super for numbers/apps, so Alt is the safe default).
accentActive bool false Color the pill with the theme accent instead of the neutral bar color.

Placement: use the Settings Position selector, or omarchy bar move kconfesor.hyprsidekick --section <left|center|right>.

Remove

omarchy plugin remove kconfesor.hyprsidekick
omarchy plugin enable omarchy.workspaces   # restore the stock widget

Then remove the require("hypr.hyprsidekick") line from ~/.config/hypr/bindings.lua, and delete ~/.config/hypr/hyprsidekick.lua (the generated binds) and ~/.config/hyprsidekick/ (the saved config) if you no longer want them.

License

MIT © Kelvin Confesor