diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-06-14 23:57:49 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-06-14 23:57:49 +1000 |
| commit | fd8ab97d3abdd415d4ea9875ef2b3a1800150498 (patch) | |
| tree | 6728d5210a2d71e42b48b60a40f87ba88485f3ca | |
| parent | Squashed commit of the following: (diff) | |
| download | caelestia-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
| -rw-r--r-- | src/caelestia/subcommands/screenshot.py | 35 |
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", "-"]) |