82 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env sh
 | 
						|
 | 
						|
tool="grim"
 | 
						|
 | 
						|
rclone_remote="s3-serguzim-me:public/screenshots"
 | 
						|
screenshot_host="https://s3.serguzim.me/public/screenshots"
 | 
						|
screenshot_path="/tmp/screenshot.webp"
 | 
						|
file="$(date '+%F_%H-%M-%S').webp"
 | 
						|
 | 
						|
clip_image()
 | 
						|
{
 | 
						|
	if [ -n "$WAYLAND_DISPLAY" ]
 | 
						|
	then
 | 
						|
		wl-copy -t image/png < "$screenshot_path"
 | 
						|
	else
 | 
						|
		xclip -t image/png "$screenshot_path" -selection clipboard
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
upload_image()
 | 
						|
{
 | 
						|
	# to have link available in clipboard manager
 | 
						|
	if [ -n "$WAYLAND_DISPLAY" ]
 | 
						|
	then
 | 
						|
		wl-copy "$screenshot_host/$file"
 | 
						|
		wl-copy -p "$screenshot_host/$file"
 | 
						|
	else
 | 
						|
		printf '%s' "$screenshot_host/$file" | xclip -selection clipboard
 | 
						|
		printf '%s' "$screenshot_host/$file" | xclip -selection primary
 | 
						|
	fi
 | 
						|
 | 
						|
    rclone copyto "$screenshot_path" "$rclone_remote/$file"
 | 
						|
    notify-send -a "Screenshot" "Uploaded screenshot to s3"
 | 
						|
}
 | 
						|
 | 
						|
call_screenshot_tool() {
 | 
						|
	case $tool in
 | 
						|
		flameshot)
 | 
						|
			result=$(flameshot gui -r | tee $screenshot_path | wc -c) ;;
 | 
						|
		grim)
 | 
						|
			result=$(grim -g "$(slurp)" - | tee $screenshot_path | wc -c) ;;
 | 
						|
		*)
 | 
						|
			echo "Unknown screenshot tool: $tool"
 | 
						|
			return 1 ;;
 | 
						|
	esac
 | 
						|
 | 
						|
	if [ "$result" -gt 0 ]
 | 
						|
	then
 | 
						|
		return 0
 | 
						|
	else
 | 
						|
		return 1
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
main_no_upload()
 | 
						|
{
 | 
						|
	if call_screenshot_tool
 | 
						|
    then
 | 
						|
        clip_image
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
main()
 | 
						|
{
 | 
						|
    if [ -n "$1" ] && [ -e "$1" ]
 | 
						|
    then
 | 
						|
        convert "$1" "$screenshot_path"
 | 
						|
        upload_image
 | 
						|
        clip_image
 | 
						|
    else
 | 
						|
		if call_screenshot_tool
 | 
						|
        then
 | 
						|
            upload_image
 | 
						|
            clip_image
 | 
						|
        fi
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
case $1 in
 | 
						|
    no_upload)   main_no_upload ;;
 | 
						|
    *)           main "$1" ;;
 | 
						|
esac
 |