Skip to content

feat(screen_recorder): configurable bar glyph per state - #59

Merged
ItsLemmy merged 2 commits into
noctalia-dev:mainfrom
jmylchreest:feat/configurable-recorder-glyphs
Aug 30, 2026
Merged

feat(screen_recorder): configurable bar glyph per state#59
ItsLemmy merged 2 commits into
noctalia-dev:mainfrom
jmylchreest:feat/configurable-recorder-glyphs

Conversation

@jmylchreest

@jmylchreest jmylchreest commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

The screen_recorder bar widget hardcodes its glyph for each state, so changing one means editing recorder.luau and losing it on the next update. This adds five settings, one per state the widget renders:

setting default when
glyph_unavailable video-off gpu-screen-recorder not installed
glyph_idle video ready
glyph_pending video recording or replay buffer starting
glyph_recording video recording
glyph_replaying repeat replay buffer running

Every default is the glyph that state already used, and an unset or empty value falls back to the same, so this is a no-op until someone sets one. Colours are untouched: recording stays error, pending primary, replaying secondary.

Motivation

Idle and recording both render video and differ only by colour. On a busy bar that is easy to miss, and it carries no signal at all for a red/green colour blind user.

Tabler ships filled variants of most outline icons, so glyph_recording = "video-filled" gives a solid camera while recording against an outline one at rest — distinguishable by shape as well as tint.

I deliberately left that out of the defaults. Changing what everyone sees is a taste call rather than a fix, and this PR is only about making it reachable.

Type of Change

  • New feature

Related Issue

None.

Testing

  • noctalia plugins lint screen_recorder — 0 errors, 0 warnings
  • python3 .github/workflows/validate-plugins.py — validated 12 plugin manifest(s), exit 0
  • Loaded against noctalia-git 5.0.0.r5339 — plugin loads with 3 entries, no config warnings with glyph_recording = "video-filled" set via [plugin_settings."noctalia/screen_recorder"]
  • Start/stop exercised via noctalia msg plugin noctalia/screen_recorder:service all toggle; state transitions and the existing settings (codec, qp, audio source, cursor) behave as before
  • With no glyph settings set, the widget renders exactly as it did before the change

translations/en.json carries the new labels only, per the README — other locales are left to Noctalia Translate.

Manual Coverage

  • Tested on Niri
  • Tested on Hyprland
  • Tested on Sway
  • Tested on another compositor:
  • Tested with different bar positions and density settings
  • Tested at different interface scaling values
  • Tested with multiple monitors

Tested on niri 26.04, two outputs (3440x1440 + 2560x1440), bar at top. Not tested on other compositors, other bar positions, or non-default scaling — the change is a per-state glyph name lookup with unchanged fallbacks, so it should be independent of all three, but I have not verified that.

jmylchreest and others added 2 commits August 27, 2026 13:46
The bar widget hardcoded its glyph for each state, so the only way to change
one was to edit recorder.luau and lose it on the next update.

Five settings, one per state the widget renders: unavailable, idle, pending,
recording, replaying. Each defaults to the glyph that state already used, and
an unset or empty value falls back to the same, so this is a no-op until
someone sets one.

The case that prompted it: Tabler carries filled variants of most outline
icons, so `glyph_recording = "video-filled"` makes the active state read as a
solid camera rather than an outline one that differs from idle only by colour.
Left out of the defaults deliberately, since that is a taste change rather than
a fix.

Colours are untouched: recording stays `error`, pending `primary`, replaying
`secondary`.
@ItsLemmy

Copy link
Copy Markdown
Contributor

Thanks

@ItsLemmy
ItsLemmy merged commit d94c127 into noctalia-dev:main Aug 30, 2026
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.

2 participants