blob: decebc5e9152faec9265424e67114334dfa2512d (
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
|
#!/bin/sh
MODE=
OUTPUT=
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
echo "Usage: xshot [MODE] [OUTPUT]"
echo "Make Xorg screenshot"
echo
echo "Modes:"
echo " window (w)"
echo " screen (s)"
echo " desktop (d)"
echo "Default mode is window."
exit 0
;;
window|screen|desktop)
MODE="$1"
;;
*)
if [ -z "$MODE" ]; then
MODE="$1"
elif [ -z "$OUTPUT" ]; then
OUTPUT="$1"
else
echo "Unknown argument: $1" >&2
exit 1
fi
esac
shift
done
[ -n "$MODE" ] || MODE=window
case "$MODE" in
window|w)
# TODO how about getting window class and naming it according to it
[ -n "$OUTPUT" ] || OUTPUT="xshot_$(date +%F_%H%M%S_%N).png"
import "$OUTPUT"
;;
screen|s)
# TODO mode complicated
# https://unix.stackexchange.com/questions/247935/automatically-take-screenshot-of-specific-display-in-x#247936
# This is going to work but question is how to specify screen/which screen
# is currently active
exit 1
;;
desktop|d)
[ -n "$OUTPUT" ] || OUTPUT="xshot_$(date +%F_%H%M%S_%N).png"
import -window root "$OUTPUT"
;;
*)
echo "Unknown mode: $MODE" >&2
exit 1
esac
|