1
0
Fork 0
dotfiles/bin/sway-interactive-screenshot

69 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# This is a modified version of sway-interactive-screenshot made by moverest
# https://github.com/moverest/sway-interactive-screenshot/
# `list_geometry` returns the geometry of the focused of visible windows. You can also get they title
# by setting a second argument to `with_description`. The geometry and the title are seperated by `\t`.
#
# Arguments:
# $1: `focused` or `visible`
# $2: `with_description` or nothing
#
# Output examples:
# - with the `with_description` option:
# 12,43 100x200\tTermite
# - without the `with_description` option:
# 12,43 100x200
function list_geometry () {
[ "$2" = with_description ] && local append="\t\(.name)" || local append=
swaymsg -t get_tree | jq -r '.. | (.nodes? // empty)[] | select(.'$1' and .pid) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)'$append'"'
}
# WINDOWS=`list_geometry visible with_description`
WINDOWS=`list_geometry visible with_description | screenshot-wofi-text-align`
FOCUSED=`list_geometry focused`
# CHOICE=`rofi -dmenu -i -p 'Screenshot' << EOF
CHOICE=`wofi -i -d -W 800 -p 'Screenshot' << EOF
Focused Window
Focused Screen
All Screens
Region
$WINDOWS
EOF`
SAVEDIR="$(xdg-user-dir PICTURES)/Screenshots"
mkdir -p "$SAVEDIR"
FILENAME="$SAVEDIR/$(date +'Screenshot %Y-%m-%d %H:%M:%S.png')"
EXPANDED_FILENAME="${FILENAME/#\~/$HOME}"
case $CHOICE in
'All Screens')
grim "$EXPANDED_FILENAME"
;;
'Focused Screen')
grim -o "$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')" "$EXPANDED_FILENAME"
;;
Region)
grim -g "$(slurp)" "$EXPANDED_FILENAME"
;;
'Focused Window')
grim -g "$FOCUSED" "$EXPANDED_FILENAME"
;;
'')
# notify-send "Screenshot" "Cancelled"
exit 0
;;
*)
GEOMETRY="`echo \"$CHOICE\" | cut -d$'\t' -f1`"
grim -g "$GEOMETRY" "$EXPANDED_FILENAME"
esac
wl-copy < $(echo "$EXPANDED_FILENAME")
notify-send "Screenshot" "File saved as <i>'$FILENAME'</i> and copied to the clipboard." -i "$EXPANDED_FILENAME"