43 lines
		
	
	
		
			849 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			849 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
SAVE_DIR="$HOME/Pictures/Screenshots"
 | 
						|
 | 
						|
mkdir -p "$SAVE_DIR"
 | 
						|
 | 
						|
FILENAME="$SAVE_DIR/screenshot_$(date +"%Y-%m-%d_%H-%M-%S").png"
 | 
						|
 | 
						|
capture_full_screen() {
 | 
						|
    grim "$FILENAME"
 | 
						|
}
 | 
						|
 | 
						|
capture_selection() {
 | 
						|
    # Use slurp to select region
 | 
						|
    region=$(slurp)
 | 
						|
    grim -g "$region" "$FILENAME"
 | 
						|
}
 | 
						|
 | 
						|
capture_window() {
 | 
						|
    window_geometry=$(swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
 | 
						|
    grim -g "$window_geometry" "$FILENAME"
 | 
						|
}
 | 
						|
 | 
						|
case "$1" in
 | 
						|
    --full)
 | 
						|
        capture_full_screen
 | 
						|
        ;;
 | 
						|
    --select)
 | 
						|
        capture_selection
 | 
						|
        ;;
 | 
						|
    --window)
 | 
						|
        capture_window
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        echo "Invalid option. Usage: screengrab [--full|--select|--window]"
 | 
						|
        exit 1
 | 
						|
        ;;
 | 
						|
esac
 | 
						|
 | 
						|
wl-copy < "$FILENAME" && notify-send "Screengrab" "Screenshot copied to clipboard"
 | 
						|
 | 
						|
 |