Omahub
← All plugins
L

Workspace Icons

by lucasjr76

Workspace indicators that pair each workspace number with the icons of the apps open on it.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

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

The plugin is a straightforward QML bar widget that displays workspace icons and handles workspace switching via hyprctl. No suspicious behavior, file access, network calls, or persistence was found. The deterministic scan also reported no issues.

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/lucasjr76/omarchy-workspace-icons --enable
Widgets #bar

Workspace Icons

Workspace Icons in the Omarchy bar: workspace 1 holds Brave and a terminal, the focused workspace 2 holds Firefox and a settings app in full colour, workspaces 3 to 5 are empty

An Omarchy shell bar widget that pairs each workspace number with the icons of the apps open on that workspace, grouped so the eye can tell which icons belong to which number.

The default layout puts the icons next to the number, with a wide gap between workspaces and a narrow one between the icons inside a workspace. Icons are desaturated everywhere except on the focused workspace, so colour marks where you are. An overlay layout that draws the icons on top of the number is also available, but two marks competing for one 26px cell is hard to read — it is kept as an option, not the default.

It is a drop-in alternative to the built-in omarchy.workspaces widget: same click-to-focus behaviour, plus scroll-to-switch and a tooltip listing the apps.

Requirements

Omarchy 4 or newer, which is where the bar became a Quickshell shell with plugin support. No dependency beyond what Omarchy already ships: the widget uses Quickshell.Hyprland for workspace state, QtQuick.Effects for the grayscale pass, and the shell's own icon index to resolve app icons.

Install

omarchy plugin add https://github.com/lucasjr76/omarchy-workspace-icons.git --enable
omarchy plugin disable omarchy.workspaces   # optional: replace the stock one

Uninstall

omarchy plugin remove lucasjr76.workspace-icons
omarchy plugin enable omarchy.workspaces     # if you had disabled the stock one

Removal takes the widget out of ~/.config/omarchy/shell.json and deletes ~/.config/omarchy/plugins/lucasjr76.workspace-icons/. Nothing is written anywhere else.

License

MIT — see LICENSE.

Settings

Set them inline on the widget's entry in ~/.config/omarchy/shell.json (hot-reloads on save) or from Setup > Plugins.

Key Default What it does
layout beside beside = number then icons. overlay = icons drawn on top of the number
minWorkspaces 5 Workspaces always shown, even when empty
groupSpacing 10 Gap between workspaces, in px. Keep it clearly wider than the gap between icons
maxIcons 3 Icons drawn per workspace (distinct apps, in stacking order)
iconSize 15 Icon size in px
iconOpacity 100 Icon opacity on the focused workspace (%)
inactiveIconOpacity 80 Icon opacity on the other workspaces (%)
iconGrayscale inactive inactive = colour only where you are, always = never colour, never = always colour
showNumber always empty-only hides the number once a workspace has apps
numberScale 125 Number size, as a % of the bar font size
numberOpacityOccupied 100 Number opacity when the workspace has apps (%)
numberOpacityEmpty 45 Number opacity when the workspace is empty (%)
numberBold true Draw the number bold
unknownIcons generic generic = placeholder icon for apps with no desktop entry, hide = number only
hideEmpty false Hide empty workspaces past minWorkspaces
scrollToSwitch true Scroll over the widget to move between workspaces

How icons are resolved

The window's Wayland appId (Hyprland's window class) is matched against the desktop-entry database — heuristicLookup, then exact id, then a scan of StartupWMClass — and the entry's Icon= is resolved through the shell's own icon index. Apps with no desktop entry fall back to the app id used as an icon name, then to a generic placeholder.