quickshell: caffeine toggle in battery dropdown
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
b851f73090
commit
1979a4957f
1 changed files with 51 additions and 0 deletions
|
|
@ -4666,6 +4666,7 @@ in
|
||||||
let pos = batteryWidget.mapToItem(bar.contentItem, 0, batteryWidget.height / 2);
|
let pos = batteryWidget.mapToItem(bar.contentItem, 0, batteryWidget.height / 2);
|
||||||
batteryDropdown.dropdownY = pos.y;
|
batteryDropdown.dropdownY = pos.y;
|
||||||
brightRead.running = true; // refresh sliders on open
|
brightRead.running = true; // refresh sliders on open
|
||||||
|
caffRead.running = true; // and the caffeine state
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6092,6 +6093,56 @@ in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Caffeine card — parks hypridle so nothing locks,
|
||||||
|
// blanks or suspends. State is re-read on open, so a
|
||||||
|
// hypridle restart can't leave the switch lying.
|
||||||
|
Card {
|
||||||
|
id: caffCard
|
||||||
|
width: parent.width
|
||||||
|
property bool on: false
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width
|
||||||
|
height: 20
|
||||||
|
Row {
|
||||||
|
spacing: 6
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
SIcon {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
text: "coffee"
|
||||||
|
color: caffCard.on ? Theme.base0D : Theme.base05
|
||||||
|
font.pixelSize: 15
|
||||||
|
}
|
||||||
|
SText {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
text: "Caffeine"
|
||||||
|
font.weight: Font.Medium
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ToggleSwitch {
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
on: caffCard.on
|
||||||
|
onToggled: (v) => {
|
||||||
|
caffCard.on = v;
|
||||||
|
caffSet.command = [Commands.systemctl, "--user", v ? "stop" : "start", "hypridle.service"];
|
||||||
|
caffSet.running = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Process { id: caffSet }
|
||||||
|
Process {
|
||||||
|
id: caffRead
|
||||||
|
command: [Commands.systemctl, "--user", "is-active", "hypridle.service"]
|
||||||
|
stdout: StdioCollector {
|
||||||
|
// is-active exits non-zero when stopped; the
|
||||||
|
// word on stdout is what matters here.
|
||||||
|
onStreamFinished: caffCard.on = text.trim() !== "active"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// Brightness card — screen + keyboard backlight.
|
// Brightness card — screen + keyboard backlight.
|
||||||
// Values are read on dropdown open (brightRead); writes
|
// Values are read on dropdown open (brightRead); writes
|
||||||
// are debounced latest-wins so a drag doesn't spawn a
|
// are debounced latest-wins so a drag doesn't spawn a
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue