Skip to content

Add Flex Taskbar plugin - #296

Draft
sudiptacmd wants to merge 2 commits into
noctalia-dev:mainfrom
sudiptacmd:agent/add-flex-taskbar
Draft

Add Flex Taskbar plugin#296
sudiptacmd wants to merge 2 commits into
noctalia-dev:mainfrom
sudiptacmd:agent/add-flex-taskbar

Conversation

@sudiptacmd

Copy link
Copy Markdown

Plugin

  • Id: sudiptacmd/flex-taskbar
  • New plugin
  • Update to an existing plugin (version bumped in plugin.toml)

What it does

Adds a configurable Niri taskbar to the Noctalia bar. It supports pinned and unpinned running apps, grouped windows, one indicator dot per window, a focused-window dot and underline, focus/cycle/launch interactions, output filtering, full visual customization, and clickable window thumbnails on hover.

Icons default to 100% opacity in every state, and the per-item hover background defaults to transparent.

External dependencies

  • niri: query windows/workspaces, focus windows, and capture preview thumbnails.
  • gtk-launch: launch pinned desktop-file IDs without a custom command.
  • wl-copy and wl-paste: preserve and restore clipboard data around Niri's screenshot action.
  • head: select the first available clipboard MIME type.
  • rm: remove the temporary clipboard backup.
  • User-configured custom launch commands are executed as the current user.

There are no network calls. Preview PNGs and a temporary clipboard backup are written only under noctalia.pluginDataDir().

Testing

  • Tested on Niri
  • Tested on Hyprland
  • Tested on Sway
  • Tested on another compositor:
  • Noctalia version tested against: 5.0.0
  • Plugin API level: 15

Validated locally with:

  • noctalia plugins lint flex-taskbar — 0 errors, 0 warnings.
  • python3 .github/workflows/scripts/validate-plugins.py — 77 manifests validated.
  • python3 -m unittest discover -s .github/workflows/scripts -p 'test_*.py' — 56 tests passed.
  • Live Niri testing covered app launch/focus/cycling, per-window dots, focused underline, IPC refresh/settings/preview/close events, preview capture, clickable preview focus, disabling previews, 100% icon opacity, and transparent widget hover.

Screenshots / Videos

Running taskbar:

Flex Taskbar running in Noctalia

Store thumbnail:

Flex Taskbar store thumbnail

Checklist

  • The directory name matches the part of id after the / in plugin.toml exactly.
  • It ships plugin.toml, README.md, thumbnail.webp, and translations/en.json.
  • README.md follows the
    README template, documents
    every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.
  • I created thumbnail.webp with the thumbnail generator.
  • version follows semver and is bumped in this PR; plugin_api is the oldest API level this plugin requires.
  • Every non-English translation in this PR uses a locale supported by Noctalia core, and I can read, write, and
    understand that language well enough to review and maintain it (no unreviewed machine/LLM translations).
  • I did not edit catalog.toml; CI generates it.
  • This PR touches exactly one plugin directory.

Code review attestation

Plugins run as trusted, unsandboxed Luau in the user's session. Confirm:

  • The code is readable and not obfuscated, minified, or generated.
  • It does not download and execute remote code.
  • Every network call, filesystem write, and spawned process is something the description above accounts for.
  • I have the right to publish this code under the license declared in plugin.toml.

@spiros132
spiros132 force-pushed the main branch 5 times, most recently from 8d53319 to d59cdac Compare August 7, 2026 22:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant