diff options
| author | 2025-05-28 14:24:58 -0400 | |
|---|---|---|
| committer | 2025-05-28 14:24:58 -0400 | |
| commit | a28487fe6fbac72c7b1a752acab42dcc6ab46476 (patch) | |
| tree | c3b1b9b751dd5e96b4afc835decf14ce38fd35f8 /scripts/desktop/screenshot | |
| parent | 75ad6c3fcad1f19c4f4f5c345fbb43ce80d9c461 (diff) | |
| download | dotfiles-a28487fe6fbac72c7b1a752acab42dcc6ab46476.tar.gz dotfiles-a28487fe6fbac72c7b1a752acab42dcc6ab46476.tar.bz2 dotfiles-a28487fe6fbac72c7b1a752acab42dcc6ab46476.zip | |
Post server fs corruption
Diffstat (limited to 'scripts/desktop/screenshot')
| -rwxr-xr-x | scripts/desktop/screenshot | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/desktop/screenshot b/scripts/desktop/screenshot new file mode 100755 index 0000000..ddeb73a --- /dev/null +++ b/scripts/desktop/screenshot @@ -0,0 +1,48 @@ +#! /usr/bin/env bash + +if [[ $1 == "qrcode" || $1 == "color" ]]; then + mime_type="text/plain" +else + dir="$HOME/pics/screenshots/`date +'%m-%Y'`" + if [ ! -d $dir ]; then mkdir -p $dir; fi + while : ; do + filename="screenshot-`date +'%m-%d-%y'`-`hexdump -n 3 -e '1/4 "%02X"' /dev/random`" + [ -e $dir/$filename.* ] || break + done + if [[ $1 == "video" ]]; then + output="$dir/$filename"".mkv" + mime_type="video/x-matroska" + else + output="$dir/$filename"".png" + mime_type="image/png" + fi +fi + +parseqr () { zbarimg -q1 - | cut -d ':' -f 2-; } +parsecolor () { magick - -format '%[pixel:p{0,0}]' txt:- | awk 'END {printf $3}'; } + +if [[ $XDG_SESSION_TYPE == "wayland" ]]; then + copy="wl-copy -t $mime_type" + case $1 in + "qrcode") grim -t png -g "$(slurp)" - | parseqr | $copy ;; + "color") grim -t ppm -g "$(slurp -p)" - | parsecolor | $copy ;; + "video") wf-recorder -a -g "$(slurp)" -f $output ;; + "main") grim -t png -o DP-1 $output ;; + "full") grim -t png $output ;; + "output") grim -t png -g "$(slurp -o)" $output ;; + *) grim -t png -g "$(slurp)" $output ;; + esac +else + copy="xclip -selection clipboard -target $mime_type -i" + case $1 in + "full") import -window root $output ;; + *) + area=$(slop -f "%g") || exit 1 + read -r G < <(echo $area) + import -window root -crop $G $output ;; + esac +fi + +if [[ $1 != "qrcode" && $1 != "color" && $1 != "video" && -f $output ]]; then + cat $output | $copy; +fi |