From 6200f400f3412d4f708c81c85f74cdc9692d7fc2 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:24:12 +1000 Subject: picker: use saveItem Removes grim dependency --- modules/areapicker/Picker.qml | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/areapicker/Picker.qml b/modules/areapicker/Picker.qml index 0584b51..999e5c4 100644 --- a/modules/areapicker/Picker.qml +++ b/modules/areapicker/Picker.qml @@ -3,6 +3,7 @@ pragma ComponentBehavior: Bound import qs.components import qs.services import qs.config +import Caelestia import Quickshell import Quickshell.Io import Quickshell.Wayland @@ -65,6 +66,12 @@ MouseArea { } } + function save(): void { + const tmpfile = `file:///tmp/caelestia-picker-${Quickshell.processId}-${Date.now()}.png`; + CUtils.saveItem(screencopy, tmpfile, Qt.rect(Math.ceil(rsx), Math.ceil(rsy), Math.floor(sw), Math.floor(sh)), path => Quickshell.execDetached(["swappy", "-f", path])); + closeAnim.start(); + } + anchors.fill: parent opacity: 0 hoverEnabled: true @@ -103,8 +110,13 @@ MouseArea { if (closeAnim.running) return; - Quickshell.execDetached(["sh", "-c", `grim -l 0 -g '${screen.x + Math.ceil(rsx)},${screen.y + Math.ceil(rsy)} ${Math.floor(sw)}x${Math.floor(sh)}' - | swappy -f -`]); - closeAnim.start(); + if (root.loader.freeze) { + save(); + } else { + overlay.visible = border.visible = false; + screencopy.visible = false; + screencopy.active = true; + } } onPositionChanged: event => { @@ -188,6 +200,8 @@ MouseArea { } Loader { + id: screencopy + anchors.fill: parent active: root.loader.freeze @@ -195,10 +209,19 @@ MouseArea { sourceComponent: ScreencopyView { captureSource: root.screen + + onHasContentChanged: { + if (hasContent && !root.loader.freeze) { + overlay.visible = border.visible = true; + root.save(); + } + } } } StyledRect { + id: overlay + anchors.fill: parent color: Colours.palette.m3secondaryContainer opacity: 0.3 @@ -232,6 +255,8 @@ MouseArea { } Rectangle { + id: border + color: "transparent" radius: root.realRounding > 0 ? root.realRounding + root.realBorderWidth : 0 border.width: root.realBorderWidth -- cgit v1.2.3-freya