dotfiles/.config/sway/wayland-screenshot

73 lines
1.6 KiB
Plaintext
Raw Normal View History

2021-12-11 15:02:56 +01:00
#!/bin/bash
FILEDIR=~/Downloads
OPTION=()
values=$(zenity \
--title=wayland-screenshot \
--text="Option" \
--forms \
--add-combo="Mode" \
--combo-values="All screen|Specific window|Specific area" \
--add-combo="Include cursor[default: no]" \
--combo-values="no|yes" \
--add-entry="time to wait[default: 0s]" \
--add-combo="Copy to clipboard[default: yes]" \
--combo-values="yes|no" \
)
result=$?
mode=$(echo $values | cut -d '|' -f 1)
cursor=$(echo $values | cut -d '|' -f 2)
wait=$(echo $values | cut -d '|' -f 3)
clipboard=$(echo $values | cut -d '|' -f 4)
if [ "$result" -eq 1 ];then # select cancel
echo "canceling"
exit
fi
if [ ! -z "$cursor" ] && [ "$cursor" == yes ];then
OPTION+="-c"
fi
if [ -z "$mode" ] ;then # select nothing
echo "mode is null"
zenity \
--title=wayland-screenshot \
--width=200 \
--warning \
--text="Mode empty"
exit
fi
if [ ! -z "$wait" ];then
sleep $wait
fi
if [ "$mode" == "All screen" ];then # select All screen
true
elif [ "$mode" == "Specific window" ];then # select specify window
GEO="$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp)"
elif [ "$mode" == "Specific area" ];then # select specfy area
GEO="$(slurp)"
else # error
echo $mode
fi
if [ -z "$clipboard" ] || [ "$clipboard" == yes ];then
if [ -z "$GEO" ]; then
grim $OPTION - | wl-copy;
else
grim $OPTION -g "$GEO" - | wl-copy;
fi
else
if [ -z "$GEO" ]; then
grim $OPTION $FILEDIR/Screenshot_$(date +%F_%H.%M.%S).png
else
grim $OPTION -g "$GEO" $FILEDIR/Screenshot_$(date +%F_%H.%M.%S).png
fi
fi