From f54639e3bee6803fc884135783c0633318a161a2 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 7 Oct 2026 18:58:11 +0200 Subject: feat(island): the island window on DP-1 A fixed overlay strip that never resizes: the pills animate inside it and the input mask follows their rectangles, so resizing a layer surface during a morph never happens. Hidden behind a sliver that also carries the privacy colours; the clock pill drops alone for a workspace or app-open flick. shell.qml gains the UseQApplication pragma, which tray menus need, and the island holds itself shown while a tray menu is open, since the menu is a separate popup that would otherwise un-hover the pills and let the hide timer fire. The hold ends at the next hover. Co-Authored-By: Claude Opus 5.5 --- desktop/shell.qml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'desktop/shell.qml') diff --git a/desktop/shell.qml b/desktop/shell.qml index c559385..eac0ddd 100644 --- a/desktop/shell.qml +++ b/desktop/shell.qml @@ -1,3 +1,4 @@ +//@ pragma UseQApplication // Copyright (C) 2026 Danilo M. // // This program is free software; you can redistribute it and/or modify @@ -9,6 +10,9 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. +// UseQApplication (line 1) is for the island's tray menus: SystemTrayItem +// display() fails without it. Pragmas are read only at launch, so changing +// it needs a restart, not a hot reload. import Quickshell import Quickshell.Io import Quickshell.Wayland @@ -22,6 +26,7 @@ import "modules/network" import "modules/sound" import "modules/status" import "modules/vm" +import "island" ShellRoot { // Quickshell exits once no window is visible, and the drawer is closed @@ -47,7 +52,7 @@ ShellRoot { Drawer { id: drawer modules: [ - SoundModule {}, + SoundModule { id: soundModule }, NetworkModule {}, BluetoothModule {}, KdeConnectModule {}, @@ -59,6 +64,13 @@ ShellRoot { ] } + // The island on DP-1. It reads the sound module's service rather than + // binding PipeWire a second time. + Island { + sound: soundModule.service + drawer: drawer + } + // The waybar launcher and the deep-link keybinds all reach this: // qs -p ipc call drawer toggle -> the grid // qs -p ipc call drawer open mail -> the mail page -- cgit v1.2.3