diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-11 16:57:33 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-11 16:57:33 +0200 |
| commit | d00f52480b19b714f50b1a017935e94ed1b486b5 (patch) | |
| tree | 670ea31d1b9317a8f6c9453abf9867a7ce073d97 /volume-osd | |
| parent | 4c4ed4e3ce3dd25395866cb0bb71a8187f359dbe (diff) | |
| download | quickshell-d00f52480b19b714f50b1a017935e94ed1b486b5.tar.gz quickshell-d00f52480b19b714f50b1a017935e94ed1b486b5.zip | |
fix(volume-osd): keep the shell alive when nothing is visible
Quickshell exits once no window is visible. The OSD is hidden between
changes, and with no MPRIS player running there is nothing else to hold
it open, so the process loaded cleanly, logged no error and quit. The
symptom was a panel that never appeared: not a blank panel, a dead shell.
A 1x1 transparent window with an empty mask keeps it running. The mask
makes it click-through, so it cannot catch a stray click, and it draws
nothing.
This window existed earlier and was removed after a process check that
was measuring the wrong thing, which made it look unnecessary. The
README now says why it is there, so it does not get removed a third time.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G7NRsGyF9jGfPYS4zPqpN7
Diffstat (limited to 'volume-osd')
| -rw-r--r-- | volume-osd/README.md | 7 | ||||
| -rw-r--r-- | volume-osd/VolumeOsd.qml | 13 |
2 files changed, 20 insertions, 0 deletions
diff --git a/volume-osd/README.md b/volume-osd/README.md index d99140f..5ec9f59 100644 --- a/volume-osd/README.md +++ b/volume-osd/README.md @@ -118,6 +118,13 @@ current while something binds the node. Without the tracker the volume reads once and then goes stale, which looks like an OSD that displays a number from several changes ago. +**A config with no visible window exits.** The OSD is hidden most of the time, +so it holds itself open with a 1x1 transparent window with an empty mask, +which is click-through and draws nothing. Without it the shell loads, reports +no error, and quits, and the symptom is a keybind that appears to do nothing +or a panel that never paints. This was removed once during development after +misreading a process check, and the bug came straight back. + **A Row sizes to its children, not to its parent.** The track row's text column originally had a fixed width, and art + text + buttons + spacing came to 356px inside a 328px content box, so the `next` button hung over the panel diff --git a/volume-osd/VolumeOsd.qml b/volume-osd/VolumeOsd.qml index ab7eb62..f739aec 100644 --- a/volume-osd/VolumeOsd.qml +++ b/volume-osd/VolumeOsd.qml @@ -81,6 +81,19 @@ Scope { onTriggered: root.active = null } + // Quickshell exits once no window is visible, and the OSD is hidden most + // of the time, so a 1x1 transparent window holds the process open. Its + // empty mask makes it click-through, so it cannot catch a stray click. + PanelWindow { + visible: true + implicitWidth: 1 + implicitHeight: 1 + color: "transparent" + exclusionMode: ExclusionMode.Ignore + mask: Region {} + WlrLayershell.keyboardFocus: WlrKeyboardFocus.None + } + PanelWindow { id: win |
