* dock: add trash bin button
- icon reflects content- filled/empty
- multiple file manager support with nautilus as default, builtin as
fallback
- settingsspec at dock tab
- context menu
* fix: remove support for builtin filebrowser
needs specific adaptors at FB adhering the trash freedesktop spec
* fix: suppress auto-hide dock with trash context menu open
* feat: allow for custom file manager command
* feat: switch runner to proc.runcommand with toasts on command failures
* Close notification center after clicking action buttons
When clicking action buttons (e.g., "View", "Activate") in the
notification center, the action fires but the popout stays open. Since
the center is a layer-shell surface, it blocks focus changes on Wayland
compositors like niri, making the action appear to do nothing.
The keyboard navigation path already closes the center after invoking
actions; this brings the mouse click path in line.
Also fix closeNotificationCenter() in PopoutService to set
notificationHistoryVisible = false (matching PopoutManager._closePopout)
instead of calling close() directly, which left the visibility property
stale and caused the bell toggle to require two presses to reopen.
Fixes#2178
* Sync notificationHistoryVisible with shouldBeVisible
NotificationCenterPopout has its own notificationHistoryVisible property
that drives open/close, but the PopoutService public API (open, close,
toggle) calls DankPopout methods directly, bypassing that property. This
leaves notificationHistoryVisible stale, causing the bell toggle to
require two presses to reopen after a programmatic close.
Sync the property from onShouldBeVisibleChanged so any caller going
through open()/close() gets the state corrected automatically.
* services: add LabwcService with quit
labwc has a minimal IPC surface (no socket, no queries) but it does
expose `labwc --exit` as a clean shutdown path. Wrap that in a small
Singleton service following the same shape as DwlService/NiriService
so the compositor-specific dispatch in callers can stay uniform.
* session: dispatch labwc logout via LabwcService
CompositorService.isLabwc was detected but never dispatched in
_logout(); labwc sessions therefore fell through to the Hyprland
exit call, which silently no-ops under labwc. Users had to set
customPowerActionLogout to 'labwc --exit' as a workaround.
Add a labwc branch alongside the existing niri/dwl/sway branches
so the power menu logout works out of the box.
Adds a 'Monochrome Icons' toggle to the system tray widget context menu.
When enabled, all system tray icons are desaturated using MultiEffect,
giving a cleaner monochrome bar aesthetic that matches minimal themes.
The setting is per-user (settings.json), defaults to false to preserve
existing behavior.
outputs
fixes#2199 , possibly regresses #1235 - but I think the original bug
was lastAppliedTemp being incorrectly set, this allows compositors to
cache last applied gamma
gamma: add a bunch of defensive mechanisms for output changes
related to #2197
gamma: ensure gamma is re-evaluate on resume
fixes#1036
Screen sharing was not detected by PrivacyService on Niri because:
1. Niri creates the screencast as a Stream/Output/Video node, but
screensharingActive only checked PwNodeType.VideoSource nodes.
2. looksLikeScreencast() only inspected application.name and
node.name, missing Niri's node which has an empty application.name
but identifies itself via media.name (niri-screen-cast-src).
Add Stream/Output/Video to the checked media classes and include
media.name in the screencast heuristic. Also add a forward-compatible
check for NiriService.hasActiveCast for when Niri gains cast tracking
in its IPC.
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>