diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-04 22:34:49 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-04 22:34:49 +1000 |
| commit | d95c1347171965891fcb24023afbc8c462e1a920 (patch) | |
| tree | 5b7375af541573fb140e81f78ad98f3089033069 | |
| parent | feat: brightness osd (diff) | |
| download | caelestia-shell-d95c1347171965891fcb24023afbc8c462e1a920.tar.gz caelestia-shell-d95c1347171965891fcb24023afbc8c462e1a920.tar.bz2 caelestia-shell-d95c1347171965891fcb24023afbc8c462e1a920.zip | |
osd: pause hide on hover
| -rw-r--r-- | modules/osd/Osd.qml | 19 | ||||
| -rw-r--r-- | services/Hyprland.qml | 6 |
2 files changed, 22 insertions, 3 deletions
diff --git a/modules/osd/Osd.qml b/modules/osd/Osd.qml index 4d6ab7e..33a12ab 100644 --- a/modules/osd/Osd.qml +++ b/modules/osd/Osd.qml @@ -13,6 +13,7 @@ Variants { required property ShellScreen modelData readonly property Brightness.Monitor monitor: Brightness.getMonitorForScreen(modelData) property bool osdVisible + property bool hovered function show(): void { root.osdVisible = true; @@ -43,7 +44,10 @@ Variants { id: timer interval: OsdConfig.hideDelay - onTriggered: root.osdVisible = false + onTriggered: { + if (!root.hovered) + root.osdVisible = false; + } } LazyLoader { @@ -91,6 +95,19 @@ Variants { monitor: root.monitor } } + + HoverHandler { + id: hoverHandler + + parent: win + onHoveredChanged: { + root.hovered = hovered; + if (hovered) + timer.stop(); + else + root.osdVisible = false; + } + } } } } diff --git a/services/Hyprland.qml b/services/Hyprland.qml index 481ee7c..f0a0a97 100644 --- a/services/Hyprland.qml +++ b/services/Hyprland.qml @@ -40,8 +40,9 @@ Singleton { Process { id: getClients - command: ["sh", "-c", "hyprctl -j clients | jq -c"] + command: ["hyprctl", "-j", "clients"] stdout: SplitParser { + splitMarker: "" onRead: data => { const clients = JSON.parse(data); const rClients = root.clients; @@ -69,8 +70,9 @@ Singleton { Process { id: getActiveClient - command: ["sh", "-c", "hyprctl -j activewindow | jq -c"] + command: ["hyprctl", "-j", "activewindow"] stdout: SplitParser { + splitMarker: "" onRead: data => { const client = JSON.parse(data); root.activeClient = client.address ? clientComp.createObject(root, { |