diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-08-27 16:24:12 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-08-27 16:24:12 +1000 |
| commit | 6200f400f3412d4f708c81c85f74cdc9692d7fc2 (patch) | |
| tree | 734da836463eecd7dbc9392631afbe5cbd6389ae /modules/areapicker | |
| parent | bar/clock: allow hiding icon (#484) (diff) | |
| download | caelestia-shell-6200f400f3412d4f708c81c85f74cdc9692d7fc2.tar.gz caelestia-shell-6200f400f3412d4f708c81c85f74cdc9692d7fc2.tar.bz2 caelestia-shell-6200f400f3412d4f708c81c85f74cdc9692d7fc2.zip | |
picker: use saveItem
Removes grim dependency
Diffstat (limited to 'modules/areapicker')
| -rw-r--r-- | modules/areapicker/Picker.qml | 29 |
1 files changed, 27 insertions, 2 deletions
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 |