summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.local/bin/freezshot62
1 files changed, 62 insertions, 0 deletions
diff --git a/.local/bin/freezshot b/.local/bin/freezshot
new file mode 100755
index 0000000..81b5bd2
--- /dev/null
+++ b/.local/bin/freezshot
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+tmp="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}"
+tmp="$(mktemp -d "${tmp}/freezhot.XXXX")"
+out="${GRIM_DEFAULT_DIR:-${XDG_PICTURES_DIR:-.}}"
+
+note()
+{
+ : "${1:?}"
+
+ command -v notify-send > /dev/null &&
+ notify-send "󰩬 freezshot" "$1"
+}
+
+die()
+{
+ printf "\033[31;1merr: %b\033[0m\n" "$1" 1>&2
+ exit "${2:-1}"
+}
+
+dep_check()
+{
+ for dep; do
+ command -v "$dep" > /dev/null ||
+ die "$dep is not installed" 127
+ done
+
+ unset dep
+}
+
+wl_res()
+{
+ wlr-randr | while read -r line; do
+ case "$line" in
+ *"current)")
+ echo "${line% px*}"
+ return
+ esac
+ done
+}
+
+########
+# MAIN #
+########
+
+dep_check grim slurp imv wlr-randr
+[ -d "$out" ] || mkdir -p "$out"
+
+GRIM_DEFAULT_DIR="$tmp" grim
+imv -f "$tmp"/* &
+view_pid=$!
+
+if region=$(slurp) > /dev/null 2>&1; then
+ if [ "${region#* }" = "$(wl_res)" ]; then
+ cp "$tmp"/* "$out"
+ else
+ grim -g "$region"
+ fi
+fi
+
+kill $view_pid
+rmdir "$tmp"