From fd8ab97d3abdd415d4ea9875ef2b3a1800150498 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:57:49 +1000 Subject: screenshot: kill wayfreeze even if no selection Also fix slurp being hidden by wayfreeze --- src/caelestia/subcommands/screenshot.py | 35 ++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'src/caelestia/subcommands') 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", "-"]) -- cgit v1.2.3-freya