aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/shell.qml
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-07 18:58:11 +0200
committerDanilo M. <danix@danix.xyz>2026-10-07 18:58:11 +0200
commitf54639e3bee6803fc884135783c0633318a161a2 (patch)
tree9ee4a0f5cac51ceaf71bf4f232ec300336d0eadb /desktop/shell.qml
parentb324ff0fb5cbc13a038ce2e5a2a4af69598bb91a (diff)
downloadquickshell-f54639e3bee6803fc884135783c0633318a161a2.tar.gz
quickshell-f54639e3bee6803fc884135783c0633318a161a2.zip
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 <noreply@anthropic.com>
Diffstat (limited to 'desktop/shell.qml')
-rw-r--r--desktop/shell.qml14
1 files changed, 13 insertions, 1 deletions
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. <danix@danix.xyz>
//
// 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 <this dir> ipc call drawer toggle -> the grid
// qs -p <this dir> ipc call drawer open mail -> the mail page