dotfiles/.config/scripts/wm/screenshot.sh

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