From 9c6520b879f29bb9f99f3eef80492f688bacde67 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 15 Sep 2025 22:55:28 +1000 Subject: utilities/toggles: add gamemode Closes #617 --- services/GameMode.qml | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ services/Hypr.qml | 3 +++ 2 files changed, 70 insertions(+) create mode 100644 services/GameMode.qml (limited to 'services') diff --git a/services/GameMode.qml b/services/GameMode.qml new file mode 100644 index 0000000..d7124cc --- /dev/null +++ b/services/GameMode.qml @@ -0,0 +1,67 @@ +pragma Singleton + +import Quickshell +import Quickshell.Io +import QtQuick + +Singleton { + id: root + + property alias enabled: props.enabled + + function setDynamicConfs(): void { + Quickshell.execDetached(["hyprctl", "--batch", "keyword animations:enabled 0;keyword decoration:shadow:enabled 0;keyword decoration:blur:enabled 0;keyword general:gaps_in 0;keyword general:gaps_out 0;keyword general:border_size 1;keyword decoration:rounding 0;keyword general:allow_tearing 1"]); + } + + onEnabledChanged: { + if (enabled) + setDynamicConfs(); + else + Quickshell.execDetached(["hyprctl", "reload"]); + } + + PersistentProperties { + id: props + + property bool enabled + + reloadableId: "gameMode" + } + + Connections { + target: Hypr + + function onConfigReloaded(): void { + if (props.enabled) + root.setDynamicConfs(); + } + } + + Process { + running: true + command: ["hyprctl", "getoption", "animations:enabled", "-j"] + stdout: StdioCollector { + onStreamFinished: props.enabled = JSON.parse(text).int === 0 + } + } + + IpcHandler { + target: "gameMode" + + function isEnabled(): bool { + return props.enabled; + } + + function toggle(): void { + props.enabled = !props.enabled; + } + + function enable(): void { + props.enabled = true; + } + + function disable(): void { + props.enabled = false; + } + } +} diff --git a/services/Hypr.qml b/services/Hypr.qml index 011e8b1..62bdf78 100644 --- a/services/Hypr.qml +++ b/services/Hypr.qml @@ -26,6 +26,8 @@ Singleton { readonly property string kbLayout: kbMap.get(kbLayoutFull) ?? "??" readonly property var kbMap: new Map() + signal configReloaded + function dispatch(request: string): void { Hyprland.dispatch(request); } @@ -43,6 +45,7 @@ Singleton { return; if (n === "configreloaded") { + root.configReloaded(); setDynamicConfsProc.running = true; } else if (n === "activelayout") { devicesProc.running = true; -- cgit v1.2.3-freya