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
|
|
|