aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-07 19:06:02 +0200
committerDanilo M. <danix@danix.xyz>2026-10-07 19:06:02 +0200
commit04fdf9ca7980b594ea674d8755b730569a550d26 (patch)
tree6ca0230175029c3465b1c46ddc9ede90f71a782e
parentf54639e3bee6803fc884135783c0633318a161a2 (diff)
downloadquickshell-04fdf9ca7980b594ea674d8755b730569a550d26.tar.gz
quickshell-04fdf9ca7980b594ea674d8755b730569a550d26.zip
fix(island): neutral idle sliver, flag scroll via MouseArea
The sliver was the accent at rest, and udt had snapped the accent to the same colour as the mic indicator (#36d190), so an idle sliver read as a live microphone. It is Theme.overlay at rest now; captures keep their colours whatever the wallpaper does. The flag's WheelHandler never fired. MouseArea.onWheel, which SoundPage already uses, does; scroll now switches layout, one step per notch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-rw-r--r--desktop/island/Island.qml8
-rw-r--r--desktop/island/StatusPill.qml17
-rw-r--r--docs/superpowers/specs/2026-10-07-island-core-design.md3
3 files changed, 18 insertions, 10 deletions
diff --git a/desktop/island/Island.qml b/desktop/island/Island.qml
index b471e3c..0cb3c10 100644
--- a/desktop/island/Island.qml
+++ b/desktop/island/Island.qml
@@ -146,8 +146,10 @@ PanelWindow {
Region { item: status; intersection: Intersection.Combine }
}
- // The visible sliver: accent at rest, the capture colours while
- // something captures, one equal segment per active kind.
+ // The visible sliver: neutral at rest, the capture colours while
+ // something captures, one equal segment per active kind. Not the accent
+ // at rest: udt snaps the accent to a palette colour, and when it lands on
+ // green an idle sliver read exactly like a live microphone.
Row {
id: sliver
x: win.cx - width / 2
@@ -156,7 +158,7 @@ PanelWindow {
height: 4
Repeater {
- model: Privacy.roles.length ? Privacy.roles : ["accent"]
+ model: Privacy.roles.length ? Privacy.roles : ["overlay"]
delegate: Rectangle {
required property string modelData
width: sliver.width / Math.max(1, Privacy.roles.length)
diff --git a/desktop/island/StatusPill.qml b/desktop/island/StatusPill.qml
index 344117c..5ab8f95 100644
--- a/desktop/island/StatusPill.qml
+++ b/desktop/island/StatusPill.qml
@@ -93,13 +93,18 @@ Capsule {
// One switch per wheel notch (120). A touchpad sends many small
// deltas, and switching on each made the count erratic.
- WheelHandler {
+ // A MouseArea, not a WheelHandler: the handler never fired here,
+ // while MouseArea.onWheel is what SoundPage already relies on.
+ MouseArea {
+ anchors.fill: parent
property real acc: 0
- onWheel: event => {
- acc += event.angleDelta.y;
- if (Math.abs(acc) < 120) return;
- Keyboard.cycle(acc > 0 ? "prev" : "next");
- acc = 0;
+ onWheel: wheel => {
+ acc += wheel.angleDelta.y;
+ if (Math.abs(acc) >= 120) {
+ Keyboard.cycle(acc > 0 ? "prev" : "next");
+ acc = 0;
+ }
+ wheel.accepted = true;
}
}
}
diff --git a/docs/superpowers/specs/2026-10-07-island-core-design.md b/docs/superpowers/specs/2026-10-07-island-core-design.md
index 0110432..858e75c 100644
--- a/docs/superpowers/specs/2026-10-07-island-core-design.md
+++ b/docs/superpowers/specs/2026-10-07-island-core-design.md
@@ -73,7 +73,8 @@ translucent and still works.
## States
**Hidden.** Only the sliver shows: a short, thin bar at top centre in
-`Theme.accent`. While anything captures, the sliver takes the capture colours
+`Theme.overlay`, neutral, because udt can snap the accent to the same colour
+as a capture kind (green, measured: accent and green both `#36d190`). While anything captures, the sliver takes the capture colours
instead, split into equal segments, one per active kind:
| Kind | Colour | Source |