summaryrefslogtreecommitdiff
path: root/src/caelestia
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-14 23:57:49 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-14 23:57:49 +1000
commitfd8ab97d3abdd415d4ea9875ef2b3a1800150498 (patch)
tree6728d5210a2d71e42b48b60a40f87ba88485f3ca /src/caelestia
parentSquashed commit of the following: (diff)
downloadcaelestia-cli-fd8ab97d3abdd415d4ea9875ef2b3a1800150498.tar.gz
caelestia-cli-fd8ab97d3abdd415d4ea9875ef2b3a1800150498.tar.bz2
caelestia-cli-fd8ab97d3abdd415d4ea9875ef2b3a1800150498.zip
screenshot: kill wayfreeze even if no selection
Also fix slurp being hidden by wayfreeze
Diffstat (limited to 'src/caelestia')
-rw-r--r--src/caelestia/subcommands/screenshot.py35
1 files changed, 21 insertions, 14 deletions
diff --git a/src/caelestia/subcommands/screenshot.py b/src/caelestia/subcommands/screenshot.py
index 73d65f7..a535f6f 100644
--- a/src/caelestia/subcommands/screenshot.py
+++ b/src/caelestia/subcommands/screenshot.py
@@ -1,4 +1,5 @@
import subprocess
+import time
from argparse import Namespace
from datetime import datetime
@@ -19,19 +20,28 @@ class Command:
self.fullscreen()
def region(self) -> None:
- freeze_proc = None
+ if self.args.region == "slurp":
+ freeze_proc = None
- if self.args.freeze:
- freeze_proc = subprocess.Popen(["wayfreeze", "--hide-cursor"])
+ if self.args.freeze:
+ freeze_proc = subprocess.Popen(["wayfreeze", "--hide-cursor"])
- if self.args.region == "slurp":
- ws = hypr.message("activeworkspace")["id"]
- geoms = [
- f"{','.join(map(str, c['at']))} {'x'.join(map(str, c['size']))}"
- for c in hypr.message("clients")
- if c["workspace"]["id"] == ws
- ]
- region = subprocess.check_output(["slurp"], input="\n".join(geoms), text=True)
+ try:
+ ws = hypr.message("activeworkspace")["id"]
+ geoms = [
+ f"{','.join(map(str, c['at']))} {'x'.join(map(str, c['size']))}"
+ for c in hypr.message("clients")
+ if c["workspace"]["id"] == ws
+ ]
+
+ # Delay to ensure wayfreeze starts first
+ if freeze_proc:
+ time.sleep(0.01)
+
+ region = subprocess.check_output(["slurp"], input="\n".join(geoms), text=True)
+ finally:
+ if freeze_proc:
+ freeze_proc.kill()
else:
region = self.args.region
@@ -40,9 +50,6 @@ class Command:
swappy.stdin.write(sc_data)
swappy.stdin.close()
- if freeze_proc:
- freeze_proc.kill()
-
def fullscreen(self) -> None:
sc_data = subprocess.check_output(["grim", "-"])