blob: 8bd6e6991da4d20271f47f891dbcb2bcd57b6bde (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#!/bin/bash
PREVIEWBORDERCOLOR="#c8bcb7"
PREVIEWBORDERTHICKNESS="2"
ROFI_THEME="BernGray"
SCROTDIR="$HOME/Desktop"
SCROTPROGRAM="gimp"
SCROTTMP="$( mktemp -t hackshot_XXXXXXXXXX.png )"
SCROTFINAL="Screenshot_$( date -u +%Y-%m-%d_%H-%M-%S ).png"
SCROTMONITOR="$( xdotool getmouselocation --shell | grep "SCREEN=" | cut -d "=" -f 2 )"
SCROTGEOMETRY=""
SHORTCUTS=(
'FUNCTION | TERMINAL EQUIVALENT | RECOMMENDED KEYBIND'
'--------------------------------------------------------------------------------------------'
'Take screenshot of selected region | hackshot.sh -r | PrintScr'
'Take screenshot of active window | hackshot.sh -w | Ctrl+PrintScr'
'Take screenshot of active screen | hackshot.sh -s | Shift+PrintScr'
'Take screenshot of all screens | hackshot.sh | Ctrl+Shift+PrintScr'
)
while getopts "hrws" opt; do
case $opt in
h) echo -e "usage: $0 [-h help] [-d toggle daemon] [-s select]\n\nSuggested Keyboard Shortcuts:\n"; printf '%s\n' "${SHORTCUTS[@]}"; exit ;; # PRINT HELP IN TERMINAL
r) SCROTGEOMETRY="-g $( hacksaw -c "$PREVIEWBORDERCOLOR" 2>&1 )" ;;
w) SCROTGEOMETRY="-g $( xdotool getwindowgeometry $(xdotool getactivewindow) | grep -o -E "[0-9]+(,|x)[0-9]+" | tac | sed -r "s|([0-9]+),([0-9]+)|+\1+\2|g" | tr -d "\n" )" ;;
# w) SCROTGEOMETRY="-i $( xdotool getactivewindow )" ;; DOESN'T JIBE BECAUSE OF THE RESOLUTION CHECK BELOW
s) SCROTGEOMETRY="--single-screen" ;;
?) echo "error: option -$OPTARG is not implemented"; exit ;;
esac
done
[[ -n $( echo "$SCROTGEOMETRY" | grep "Error" ) ]] && exit
rm /tmp/hackshot_*png
if [[ -z "$SCROTGEOMETRY" ]]; then
shotgun "${SCROTTMP}"
else
shotgun $SCROTGEOMETRY "${SCROTTMP}"
fi
convert -bordercolor "$PREVIEWBORDERCOLOR" -border "$PREVIEWBORDERTHICKNESS" "${SCROTTMP}" "/tmp/hackshot_preview.png"
# BREAKS WITH MULTIPLE MONITORS BECAUSE IT GETS THE COMBINED DIMENSIONS OF ALL OF THEM
# PREVIEWWIDTH="$(( $( xdpyinfo | grep -i -A 5 "screen #$SCROTMONITOR" | awk '/dimensions/{print $2}' | cut -d "x" -f 1 ) / 3 * 2 ))"
# PREVIEWHEIGHT="$(( $( xdpyinfo | grep -i -A 5 "screen #$SCROTMONITOR" | awk '/dimensions/{print $2}' | cut -d "x" -f 2 ) / 3 * 2 ))"
PREVIEWWIDTH="$(( $( xdotool getdisplaygeometry | cut -d " " -f 1 ) / 3 * 2 ))"
PREVIEWHEIGHT="$(( $( xdotool getdisplaygeometry | cut -d " " -f 2 ) / 3 * 2 ))"
if [[ "$SCROTGEOMETRY" != "--single-screen" ]]; then
SCROTWIDTH="${SCROTGEOMETRY#* }"; SCROTWIDTH="${SCROTWIDTH%x*}";
SCROTHEIGHT="${SCROTGEOMETRY#*x}"; SCROTHEIGHT="${SCROTHEIGHT%%+*}";
[[ "$SCROTWIDTH" -lt "$PREVIEWWIDTH" ]] && PREVIEWWIDTH="$SCROTWIDTH"
[[ "$SCROTHEIGHT" -lt "$PREVIEWHEIGHT" ]] && PREVIEWHEIGHT="$SCROTHEIGHT"
fi
PREVIEWWIDTH="$(( "$PREVIEWWIDTH" + ( "$PREVIEWBORDERTHICKNESS" * 2 ) ))"
PREVIEWHEIGHT="$(( "$PREVIEWHEIGHT" + ( "$PREVIEWBORDERTHICKNESS" * 2 ) ))"
# SAME AS ABOVE
# PREVIEWX="$(( ( $( xdpyinfo | grep -i -A 5 "screen #$SCROTMONITOR" | awk '/dimensions/{print $2}' | cut -d "x" -f 1 ) / 2 ) - ( ${PREVIEWWIDTH} / 2 ) ))"
# PREVIEWY="$(( ( $( xdpyinfo | grep -i -A 5 "screen #$SCROTMONITOR" | awk '/dimensions/{print $2}' | cut -d "x" -f 2 ) / 2 ) - ( ${PREVIEWHEIGHT} / 2 ) ))"
PREVIEWX="$(( ( $( xdotool getdisplaygeometry | cut -d " " -f 1 ) / 2 ) - ( ${PREVIEWWIDTH} / 2 ) ))"
PREVIEWX="$(( ( $( xdotool getdisplaygeometry | cut -d " " -f 2 ) / 2 ) - ( ${PREVIEWWIDTH} / 2 ) ))"
feh -x -g "${PREVIEWWIDTH}x${PREVIEWHEIGHT}+${PREVIEWX}+${PREVIEWY}" -. "/tmp/hackshot_preview.png" &
CHOICE=$(echo -e "1. Save to $SCROTDIR\n2. Copy to clipboard\n3. Open with $SCROTPROGRAM\n4. Abort" \
| rofi -dmenu -i -no-custom -p "" -theme "$ROFI_THEME" -async-pre-read 3 -no-click-to-exit )
kill $!
if [[ -n $( grep "^1" <<< "$CHOICE" ) ]]; then
mv "${SCROTTMP}" "${SCROTDIR}/${SCROTFINAL}"
elif [[ -n $( grep "^2" <<< "$CHOICE" ) ]]; then
echo "file:///${SCROTTMP}" | xclip -selection clipboard -t text/uri-list
elif [[ -n $( grep "^3" <<< "$CHOICE" ) ]]; then
nohup "$SCROTPROGRAM" "${SCROTTMP}" >/dev/null 2>&1 &
else
# rm "${SCROTTMP}"
exit 0
fi
|