Skip to content

feat(cider): Umbriel loft and overlay OSD (1.10.0) - #680

Merged
ItsLemmy merged 2 commits into
noctalia-dev:mainfrom
dragged9698:feat/cider-1.10.0-umbriel-loft
Sep 9, 2026
Merged

feat(cider): Umbriel loft and overlay OSD (1.10.0)#680
ItsLemmy merged 2 commits into
noctalia-dev:mainfrom
dragged9698:feat/cider-1.10.0-umbriel-loft

Conversation

@dragged9698

@dragged9698 dragged9698 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Plugin

  • Id: dragged/cider
  • New plugin
  • Update to an existing plugin (version bumped in plugin.toml)

What it does

Cider now-playing alerts (notification / OSD card) plus a sticky karaoke lyrics HUD.

This update (1.9.7 → 1.10.0):

  • Umbriel loft — middle-click the bar chip sends that Cider window to the scratchpad and restores it to its remembered workspace. The chip stays while lofted (unlist is not quit). Track toasts still fire. Left-click is lyrics HUD on every compositor; loft is a no-op off Umbriel.

External dependencies

  • python3, gtk3, gtk-layer-shell, python-gobject (declared in plugin.toml)
  • Cider desktop app with Connectivity / External Application Access
  • Compositor IPC: umbriel (preferred, including loft msg actions), else niri, else hyprctl
  • Optional: parec (PulseAudio/PipeWire) for silence-aware plain-lyrics scroll — feature fails open without it

Testing

  • Unit: python -m unittest test_write_position.py test_lyrics_display.py from cider/scripts — 107 tests OK

  • Lint: noctalia plugins lint cider — 0 errors, 0 warnings

  • Manifest: python3 .github/workflows/scripts/validate-plugins.py — 163 plugins OK

  • Manual on Umbriel 0.1.0: loft hide, restore to remembered workspace (DP-1:1 tiled), left-click lyrics HUD, middle-click loft, chip stays while lofted

  • Restore uses show-pad then window-restore-from-scratchpad (hidden pad members ignore window-focus). If another client is stored in the same output pad, it can flash for a frame — compositor limit, not a group-toggle UX.

  • Tested on Niri

  • Tested on Hyprland

  • Tested on Sway

  • Tested on another compositor: Umbriel

  • Noctalia version tested against: v5.0.1

  • Plugin API level: 24

Screenshots / Videos

HUD/OSD visuals are unchanged from the store thumbnail (cider/thumbnail.webp, 960×540, from the official generator in #406 / #581). This PR adds compositor loft behavior.

Checklist

Ready-for-review requirement: Every box in this section must be checked. If any statement is not true, keep the
pull request as Draft. An explanation does not replace a required check.

  • 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.
  • thumbnail.webp is present and relevant; for a new plugin I created it with the thumbnail generator, and for an update I regenerated it with the generator if the visual identity or user-facing appearance changed.
  • 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:
Ready-for-review requirement: Every attestation below must be checked.

  • 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.

dragged9698 and others added 2 commits September 8, 2026 23:13
Keep the bar chip while Cider is scratchpadded and restore it to the
remembered workspace. Sit the now-playing toast on the overlay layer.

Co-authored-by: Cursor <cursoragent@cursor.com>
Community validate-plugins.py does not allow [[panel]] layer, so keep
plugin_api at 24 (argv runAsync) and let the host own overlay placement.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ItsLemmy
ItsLemmy merged commit 21f869c into noctalia-dev:main Sep 9, 2026
2 checks passed
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