63 lines
1.7 KiB
Bash
Executable file
63 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env sh
|
|
|
|
# Restores the shader after screenshot has been taken
|
|
restore_shader() {
|
|
if [ -n "$shader" ]; then
|
|
hyprshade on "$shader"
|
|
fi
|
|
}
|
|
|
|
# Saves the current shader and turns it off
|
|
save_shader() {
|
|
shader=$(hyprshade current)
|
|
hyprshade off
|
|
trap restore_shader EXIT
|
|
}
|
|
|
|
save_shader # Saving the current shader
|
|
|
|
if [ -z "$XDG_PICTURES_DIR" ]; then
|
|
XDG_PICTURES_DIR="$HOME/Pictures"
|
|
fi
|
|
|
|
scrDir=$(dirname "$(realpath "$0")")
|
|
source $scrDir/globalcontrol.sh
|
|
swpy_dir="${confDir}/swappy"
|
|
save_dir="${2:-$XDG_PICTURES_DIR/Screenshots}"
|
|
save_file=$(date +'%y%m%d_%Hh%Mm%Ss_screenshot.png')
|
|
temp_screenshot="/tmp/screenshot.png"
|
|
|
|
mkdir -p $save_dir
|
|
mkdir -p $swpy_dir
|
|
echo -e "[Default]\nsave_dir=$save_dir\nsave_filename_format=$save_file" >$swpy_dir/config
|
|
|
|
function print_error
|
|
{
|
|
cat <<"EOF"
|
|
./screenshot.sh <action>
|
|
...valid actions are...
|
|
p : print all screens
|
|
s : snip current screen
|
|
sf : snip current screen (frozen)
|
|
m : print focused monitor
|
|
EOF
|
|
}
|
|
|
|
case $1 in
|
|
p) # print all outputs
|
|
grimblast copysave screen $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;;
|
|
s) # drag to manually snip an area / click on a window to print it
|
|
grimblast copysave area $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;;
|
|
sf) # frozen screen, drag to manually snip an area / click on a window to print it
|
|
grimblast --freeze copysave area $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;;
|
|
m) # print focused monitor
|
|
grimblast copysave output $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;;
|
|
*) # invalid option
|
|
print_error ;;
|
|
esac
|
|
|
|
rm "$temp_screenshot"
|
|
|
|
if [ -f "${save_dir}/${save_file}" ]; then
|
|
notify-send -a "t1" -i "${save_dir}/${save_file}" "saved in ${save_dir}"
|
|
fi
|