Watch
1
0
Fork
You've already forked souveraine
0
souveraine/surfaces/quickshell/ii-phone/modules/common/models/quickToggles/WaydroidTerminateToggle.qml
Fimeg e6e3dd3b2a shell: quick toggle types come from the chooser, not a second list
The hand-written allowlist in AndroidQuickPanel had drifted from it, so the
phone rendered 12 of its 17 configured toggles and said nothing about the rest.
Adds the missing fullScreenshot and waydroidTerminate, and a deploy guard so
the phone chooser can't fall behind the base one again.
2026-07-31 12:51:10 -04:00

59 lines
2 KiB
QML

// Pixel3Arch addition: stop the Waydroid session. Phone-only — waydroid is
// installed on the phone and not on the laptop, so this lives in the overlay.
// Deploy to modules/common/models/quickToggles/.
import QtQuick
import Quickshell
import Quickshell.Io
import qs.services
import qs.modules.common
/**
* Terminate the Android container's session.
*
* `waydroidTerminate` sat in the phone's config with no component behind it in
* any tree or commit — a configured verb that did nothing, silently.
*/
QuickToggleModel {
id: root
/// True while a stop is in flight, so a double tap cannot race itself.
property bool busy: false
name: Translation.tr("Stop Android")
hasStatusText: false
toggled: false
icon: "android"
// Deliberate, and always pressable. There is deliberately NO status poll:
// `waydroid status` talks to the container and can block for seconds, and
// a button that greys itself out on a stale read is a verb the owner
// cannot reach. Press it; it reports what actually happened.
mainAction: () => {
if (root.busy)
return;
root.busy = true;
stopProc.running = true;
}
Process {
id: stopProc
command: ["bash", "-c",
"waydroid session stop >/dev/null 2>&1; "
+ "waydroid status 2>/dev/null | grep -q 'Session:.*RUNNING' && echo running || echo stopped"]
stdout: StdioCollector {
id: stopResult
onStreamFinished: {
root.busy = false;
const stillRunning = stopResult.text.trim() === "running";
Quickshell.execDetached(["notify-send", Translation.tr("Android"),
stillRunning
? Translation.tr("Session did not stop.")
: Translation.tr("Session stopped."),
"-a", "Shell"]);
}
}
onExited: root.busy = false
}
tooltipText: Translation.tr("Stop the Waydroid session")
}