Back to plugins
v1.1.1 whyoolw
About
ShareDND
Automatic Do Not Disturb while the screen is being shared.
When the first screencast starts (any app sharing via the portal — Discord,
OBS, browsers, niri msg action set-dynamic-cast-*, ...), notification DND is
enabled. When the last screencast stops, notifications come back.
Plugin
| Field | Value |
|---|---|
| ID | whyoolw/sharednd |
| Entry | Service: service |
Usage
Enable the plugin in Settings → Plugins while running a niri session. The headless service starts monitoring screencasts immediately; it has no bar widget or panel. Start and stop a screen share to verify that Noctalia's DND state follows the session according to the ownership settings below.
How it works
- A headless service follows
niri msg -j event-streamand reacts toCastsChanged/CastStartedOrChanged/CastStoppedevents — no polling. - On every cast event it re-queries
niri msg -j castsas the authoritative state, so missed or reordered events cannot desync it. The stream is wrapped in a shell retry loop and resends full state on reconnect. - Stop transitions are debounced by ~1 second: switching what is being shared produces a stop/start event pair, which the debounce collapses — DND does not flap, and the stop/start race cannot drop ownership.
- DND is toggled through the host IPC (
noctalia msg notification-dnd-set), so the usual OSD feedback appears.
Ownership rules
- If DND was already on before sharing started, the plugin leaves it on after sharing ends (it never took ownership). The "Always disable DND after sharing" setting overrides this.
- If DND was enabled manually during sharing while the plugin owned it, it will still be turned off when sharing ends (the plugin cannot tell the difference).
Settings
- Only active streams — count only casts with
is_active: true. Off by default: any open screencast session (even paused or showing nothing) keeps DND on. - Always disable DND after sharing — force DND off when sharing ends, regardless of its state before sharing started.
Requirements
- Requires
niri(detection is niri IPC). Detection only starts inside a niri session (NIRI_SOCKETset and theniribinary inPATH); on other compositors the service is inert and spawns no processes. - Disabling or reloading the plugin mid-share while it owns DND turns DND
back off (
onExitcleanup).
Versions
| Version | Plugin API | Updated |
|---|---|---|
| v1.1.1 latest | 3 | Jul 15, 2026 |
Older versions stay installable on a Noctalia release whose plugin API is below the latest version's.