73 lines
1.6 KiB
Bash
Executable File
73 lines
1.6 KiB
Bash
Executable File
#!/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
|
|
|