summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortsukasa <62455208+tsxkasa@users.noreply.github.com>2025-12-01 03:52:44 -0800
committerGitHub <noreply@github.com>2025-12-01 22:52:44 +1100
commit578cd3666edd5315c1e9356c40be6b43635e26ce (patch)
treea232c71b8881dc4b3fd675074482390e5f326efe
parentissues: fix typo in issue description template (#943) (diff)
downloadcaelestia-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
-rw-r--r--modules/areapicker/AreaPicker.qml41
-rw-r--r--modules/areapicker/Picker.qml9
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();
}