Andrés Blog

Krams. Und so.


Screenshot'n'Upload

Dieses kleine Script startet scrot -s, um einen Screenshot von einem Bereich des Monitors anzufertigen. Anschließend wird das Bild per ssh auf den eigenen Server hochgeladen, wobei der Dateiname durch den eigenen SHA256-Hash ersetzt wird. Die URL, unter der das Bild nun abrufbar ist, wird in die Zwischenablage geschrieben und kann schnell geteilt werden.

#!/usr/bin/env bash

# bash strict mode
set -euo pipefail
IFS=$'\n\t'

# Ending of temporary filename decides filetype
filename=$(mktemp tmp.XXXXXXXXXX.png)
ext=${filename##*.}

function finish {
    rm -f "$filename"
    unset IFS
}
trap finish EXIT

sleep 0.1 # scrot is not able to grab the pointer without this sleep
notify-send --urgency=low "Screenshot ready" "Select area to screenshot and upload."
scrot -s ${filename}
shasum=$(sha256sum ${filename} | awk '{print $1}')

rsync --chmod=g-rwx,o=r "${filename}" "wgmd:public_html/share/${shasum}.${ext}"
url="https://share.wgmd.de/${shasum}.${ext}"

notify-send --urgency=low "Screenshot uploaded" "Upload successful.\nUse clipboard to access URL."
echo ${url} | xclip -selection clipboard