summaryrefslogtreecommitdiff
path: root/home/wayland/pkgs/wayland-scripts/src/bin/freezshot
diff options
context:
space:
mode:
authorsinanmohd <sinan@sinanmohd.com>2024-06-05 22:22:45 +0530
committersinanmohd <sinan@sinanmohd.com>2024-06-05 22:22:45 +0530
commit7437a37e9ae174033e336e5d29f435ec78df27e0 (patch)
tree6d2a22b17a23b1136649173ed5d487bcbbfdf4ae /home/wayland/pkgs/wayland-scripts/src/bin/freezshot
parent1368cff428c3eb2112afeb53f4756bfdddaff363 (diff)
home/wayland/pkgs/wayland-scripts/freezshot: init
Diffstat (limited to 'home/wayland/pkgs/wayland-scripts/src/bin/freezshot')
-rwxr-xr-xhome/wayland/pkgs/wayland-scripts/src/bin/freezshot51
1 files changed, 51 insertions, 0 deletions
diff --git a/home/wayland/pkgs/wayland-scripts/src/bin/freezshot b/home/wayland/pkgs/wayland-scripts/src/bin/freezshot
new file mode 100755
index 0000000..a47e9c8
--- /dev/null
+++ b/home/wayland/pkgs/wayland-scripts/src/bin/freezshot
@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+
+tmp="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}"
+tmp="$(mktemp -d "${tmp}/freezhot.XXXX")"
+out="${GRIM_DEFAULT_DIR:-${XDG_PICTURES_DIR:-.}}"
+
+wl_res()
+{
+ swaymsg -pt get_outputs | while read -r line; do
+ case "$line" in
+ "Current mode"*)
+ line="${line#*Current mode: }"
+ echo "${line%% *}"
+ return
+ esac
+ done
+}
+
+########
+# MAIN #
+########
+
+if [ ! -d "$out" ]; then
+ mkdir -p "$out"
+fi
+GRIM_DEFAULT_DIR="$tmp" grim
+trap 'rm -r "$tmp"' EXIT
+imv -f "$tmp"/* &
+view_pid=$!
+
+region=$(slurp -f '%wx%h %x:%y') > /dev/null 2>&1
+r=$?
+kill $view_pid
+if [ $r != 0 ]; then
+ exit 1
+fi
+
+img="$(ls "$tmp")"
+res="${region% *}"
+if [ "$res" = "$(wl_res)" ]; then
+ cp "$tmp/$img" "$out"
+else
+ width=${res%x*}
+ hight="${res#*x}"
+ position="${region#* }"
+ ffmpeg \
+ -loglevel quiet \
+ -i "$tmp/$img" \
+ -vf "crop=$width:$hight:$position" \
+ "$out/$img"
+fi