168 lines
2.2 KiB
Bash
Executable File
168 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#
|
|
# Script to take screenshots or gifs
|
|
#
|
|
|
|
menucmd=menucmd
|
|
grimshot=grimshot
|
|
|
|
date_format='%Y-%m-%d_%H-%M-%S'
|
|
|
|
scrot_dir=$HOME/Screenshots
|
|
gif_dir=$scrot_dir/gifs
|
|
[ -d $scrot_dir ] || mkdir $scrot_dir
|
|
[ -d $gif_dir ] || mkdir $gif_dir
|
|
|
|
# prompt options in Xorg
|
|
prompt_xorg() {
|
|
options="
|
|
1) Fullscreen\n\
|
|
2) Selection\n\
|
|
3) Record screen
|
|
"
|
|
|
|
option=$(echo -e $options | $menucmd)
|
|
|
|
case $option in
|
|
1*)
|
|
sleep 0.5
|
|
f_scrot
|
|
;;
|
|
2*)
|
|
s_scrot
|
|
;;
|
|
3*)
|
|
prompt_gif
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# prompt options in Wayland
|
|
prompt_wayland(){
|
|
options="
|
|
1) Fullscreen\n\
|
|
2) Selection\n\
|
|
3) Window\
|
|
"
|
|
|
|
option=$(echo -e $options | $menucmd)
|
|
|
|
# use grimshot here
|
|
case $option in
|
|
1*)
|
|
sleep 0.5
|
|
f_grimshot
|
|
;;
|
|
2*)
|
|
s_grimshot
|
|
;;
|
|
3*)
|
|
w_grimshot
|
|
;;
|
|
esac
|
|
}
|
|
|
|
prompt_gif() {
|
|
options="
|
|
10s\n\
|
|
30s\n\
|
|
60s
|
|
"
|
|
option=$(echo -e $options | $menucmd)
|
|
|
|
case $option in
|
|
10s)
|
|
byzanz_gif 10
|
|
;;
|
|
30s)
|
|
byzanz_gif 30
|
|
;;
|
|
60s)
|
|
byzanz_gif 60
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# screenshots using scrot
|
|
s_scrot() {
|
|
name=$(date +${date_format}_sel.png)
|
|
path="${scrot_dir}/${name}"
|
|
crot -a $(slop -f "%x,%y,%w,%h") $path &&
|
|
xclip -sel clip $path -t image/png
|
|
}
|
|
|
|
f_scrot() {
|
|
name=$(date +${date_format}_full.png)
|
|
path="${scrot_dir}/${name}"
|
|
scrot $path &&
|
|
xclip -sel clip $path -t image/png
|
|
}
|
|
|
|
# screenshots using grimshot
|
|
f_grimshot() {
|
|
name=$(date +${date_format}_full.png)
|
|
path="${scrot_dir}/${name}"
|
|
$grimshot save output $path &&
|
|
wl-copy --type image/png < $path
|
|
}
|
|
|
|
s_grimshot() {
|
|
name=$(date +${date_format}_sel.png)
|
|
path="${scrot_dir}/${name}"
|
|
$grimshot save area $path &&
|
|
wl-copy --type image/png < $path
|
|
}
|
|
|
|
w_grimshot() {
|
|
name=$(date +${date_format}_sel.png)
|
|
path="${scrot_dir}/${name}"
|
|
$grimshot save window $path &&
|
|
wl-copy --type image/png < $path
|
|
}
|
|
|
|
# screen recorder
|
|
byzanz_gif() {
|
|
name=$(date +${date_format}.gif)
|
|
path="${gif_dir}/${name}"
|
|
byzanz-record -c -d $1 --delay=0 $path
|
|
}
|
|
|
|
if [[ -n $WAYLAND_DISPLAY ]]; then
|
|
case $1 in
|
|
-f)
|
|
sleep 0.5
|
|
f_grimshot
|
|
;;
|
|
-s)
|
|
s_grimshot
|
|
;;
|
|
-w)
|
|
w_grimshot
|
|
;;
|
|
*)
|
|
prompt_wayland
|
|
;;
|
|
esac
|
|
elif [[ -n $DISPLAY ]]; then
|
|
case $1 in
|
|
-f)
|
|
sleep 0.5
|
|
f_scrot
|
|
;;
|
|
-s)
|
|
s_scrot
|
|
;;
|
|
-w)
|
|
s_scrot
|
|
;;
|
|
*)
|
|
prompt_xorg
|
|
;;
|
|
esac
|
|
else
|
|
echo "Error: No Wayland or X11 display detected" >&2
|
|
exit 1
|
|
fi
|
|
|