diff options
Diffstat (limited to 'home/wayland/pkgs/wayland-scripts/src/bin')
-rwxr-xr-x | home/wayland/pkgs/wayland-scripts/src/bin/freezshot | 51 |
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 |