diff options
| author | tsukasa <62455208+tsxkasa@users.noreply.github.com> | 2025-12-01 03:52:44 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-01 22:52:44 +1100 |
| commit | 578cd3666edd5315c1e9356c40be6b43635e26ce (patch) | |
| tree | a232c71b8881dc4b3fd675074482390e5f326efe /modules/areapicker | |
| parent | issues: fix typo in issue description template (#943) (diff) | |
| download | caelestia-shell-578cd3666edd5315c1e9356c40be6b43635e26ce.tar.gz caelestia-shell-578cd3666edd5315c1e9356c40be6b43635e26ce.tar.bz2 caelestia-shell-578cd3666edd5315c1e9356c40be6b43635e26ce.zip | |
picker: copy screenshot to clipboard (#940)
added screenshotClip and screenshotFreezeClip to allow directly copying
screenshots to clipboard instead of opening it in swappy
Diffstat (limited to 'modules/areapicker')
| -rw-r--r-- | modules/areapicker/AreaPicker.qml | 41 | ||||
| -rw-r--r-- | modules/areapicker/Picker.qml | 9 |
2 files changed, 49 insertions, 1 deletions
diff --git a/modules/areapicker/AreaPicker.qml b/modules/areapicker/AreaPicker.qml index 7ff051f..0d8b2fe 100644 --- a/modules/areapicker/AreaPicker.qml +++ b/modules/areapicker/AreaPicker.qml @@ -12,6 +12,7 @@ Scope { property bool freeze property bool closing + property bool clipboardOnly Variants { model: Quickshell.screens @@ -51,12 +52,28 @@ Scope { function open(): void { root.freeze = false; root.closing = false; + root.clipboardOnly = false; root.activeAsync = true; } function openFreeze(): void { root.freeze = true; root.closing = false; + root.clipboardOnly = false; + root.activeAsync = true; + } + + function openClip(): void { + root.freeze = false; + root.closing = false; + root.clipboardOnly = true; + root.activeAsync = true; + } + + function openFreezeClip(): void { + root.freeze = true; + root.closing = false; + root.clipboardOnly = true; root.activeAsync = true; } } @@ -67,6 +84,7 @@ Scope { onPressed: { root.freeze = false; root.closing = false; + root.clipboardOnly = false; root.activeAsync = true; } } @@ -77,6 +95,29 @@ Scope { onPressed: { root.freeze = true; root.closing = false; + root.clipboardOnly = false; + root.activeAsync = true; + } + } + + CustomShortcut { + name: "screenshotClip" + description: "Open screenshot tool (clipboard)" + onPressed: { + root.freeze = false; + root.closing = false; + root.clipboardOnly = true; + root.activeAsync = true; + } + } + + CustomShortcut { + name: "screenshotFreezeClip" + description: "Open screenshot tool (freeze mode, clipboard)" + onPressed: { + root.freeze = true; + root.closing = false; + root.clipboardOnly = true; root.activeAsync = true; } } diff --git a/modules/areapicker/Picker.qml b/modules/areapicker/Picker.qml index 1625ccf..67ec268 100644 --- a/modules/areapicker/Picker.qml +++ b/modules/areapicker/Picker.qml @@ -73,7 +73,14 @@ MouseArea { function save(): void { const tmpfile = Qt.resolvedUrl(`/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])); + CUtils.saveItem(screencopy, tmpfile, Qt.rect(Math.ceil(rsx), Math.ceil(rsy), Math.floor(sw), Math.floor(sh)), path => { + if (root.loader.clipboardOnly) { + Quickshell.execDetached(["sh", "-c", "wl-copy --type image/png < " + path]); + Quickshell.execDetached(["notify-send", "-a", "caelestia-cli", "-i", path, "Screenshot taken", "Screenshot copied to clipboard"]); + } else { + Quickshell.execDetached(["swappy", "-f", path]); + } + }); closeAnim.start(); } |