51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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() {
 | 
						|
    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"
 | 
						|
}
 | 
						|
 | 
						|
open_editor() {
 | 
						|
    # Open the screenshot in GIMP, ImageMagick's display command, or any preferred editor
 | 
						|
    photoflare "$FILENAME" &
 | 
						|
}
 | 
						|
 | 
						|
# Capture the screenshot based on the option passed
 | 
						|
case "$1" in
 | 
						|
    --full)
 | 
						|
        capture_full_screen
 | 
						|
        ;;
 | 
						|
    --select)
 | 
						|
        capture_selection
 | 
						|
        ;;
 | 
						|
    --window)
 | 
						|
        capture_window
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        echo "Invalid option. Usage: screengrab [--full|--select|--window] [--edit]"
 | 
						|
        exit 1
 | 
						|
        ;;
 | 
						|
esac
 | 
						|
 | 
						|
# Copy to clipboard and notify
 | 
						|
wl-copy < "$FILENAME" && notify-send "Screengrab" "Screenshot copied to clipboard"
 | 
						|
 | 
						|
# If --edit flag is passed, open the screenshot in the editor
 | 
						|
if [[ "$2" == "--edit" ]]; then
 | 
						|
    open_editor
 | 
						|
fi
 | 
						|
 |