You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Noctalia v5 bar widget that shows the current Mangowm tiling layout and keymode. Click the widget to open a scrollable layout picker panel — choose any of the
14 supported layouts and switch instantly. Horizontal scroll over the widget cycles through layouts without opening the panel.
The widget is minimal by default: shows layout icon + letter code. Configurable to hide when keymode is default, show the keymode name, and notify on changes.
External dependencies
mmsg — Mangowm's IPC CLI. Used to query the current layout (mmsg get all-tags), watch for changes (mmsg watch all-tags / mmsg watch keymode), and switch
layouts (mmsg dispatch setlayout,). Declared in plugin.toml as dependencies = ["mmsg"].
Testing
Tested on Niri
Tested on Hyprland
Tested on Sway
Tested on another compositor: Mangowm
Noctalia version tested against: 5.0.0~beta1
Plugin API level: 4
Tested:
Widget renders current layout icon + letter on bar
Left-click → layout picker panel opens with current layout highlighted
Click a different layout → switches immediately, panel closes, widget updates
doRender() is called from inside setLayout (defined at panel.luau:30), but doRender
is declared as local function doRender later at panel.luau:64. At the call site the name
is not yet a visible local, so it compiles as a global read and evaluates to nil.
Impact is limited to the failure path: when mmsg dispatch setlayout,<name> returns a
non-zero exit code, the error notification fires and then the callback aborts with
"attempt to call a nil value (global 'doRender')". The panel is left showing stale
state instead of re-rendering. Fix by forward-declaring (local doRender before setLayout, then function doRender()), or by moving doRender above setLayout.
non-blocking - mangowm-status/plugin.toml:8
icon = "grid" is not a resolvable glyph name. It is absent from the Tabler catalog
(assets/fonts/tabler.json) and absent from the Noctalia alias table, so the registry
logs "missing glyph: grid" and substitutes the missing-glyph placeholder wherever the
manifest icon is rendered (plugin manager, widget picker, catalog entry). The glyphs used
inside the Luau entries (columns, menu, dashboard, window, cards, layout) all resolve
correctly, so only the manifest-level icon is affected. Candidates that do resolve:
grid-4x4, grid-3x3, layout, dashboard.
non-blocking - mangowm-status/widget.luau:126
update() sets a 1000 ms interval and calls pollLayout() on every tick, which spawns
a fresh mmsg get all-tags subprocess once per second for the lifetime of the bar.
Two persistent mmsg watch streams (widget.luau:81, widget.luau:96) already deliver
layout and keymode changes, so the poll is a redundant fallback running at a very high
rate. The README documents the behavior honestly, so this is a resource concern rather
than a correctness or trust issue. A longer interval (for example 5-15 s), or arming the
poll only when a stream has not reported, would cut the process churn substantially.
Thumbnail should use the provided generator and not a home made banner.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin
What it does
A Noctalia v5 bar widget that shows the current Mangowm tiling layout and keymode. Click the widget to open a scrollable layout picker panel — choose any of the
14 supported layouts and switch instantly. Horizontal scroll over the widget cycles through layouts without opening the panel.
The widget is minimal by default: shows layout icon + letter code. Configurable to hide when keymode is default, show the keymode name, and notify on changes.
External dependencies
layouts (mmsg dispatch setlayout,). Declared in plugin.toml as dependencies = ["mmsg"].
Testing
Tested:
Screenshots / Videos
Mangowm Status
Checklist
Code review attestation