| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/bin/bash
- # Script to capture screenshots (Wayland)
- # Directory for screenshots
- SCREENSHOT_DIR="$HOME/pix/Screenshots"
- mkdir -p "$SCREENSHOT_DIR"
- # Filename format
- TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
- FILENAME="Screenshot_${TIMESTAMP}_hyprland.jpg"
- FILE_PATH="${SCREENSHOT_DIR}/${FILENAME}"
- # Capture based on argument
- case "$1" in
- area)
- # Select an area using slurp
- grim -t jpeg -g "$(slurp)" "$FILE_PATH"
- ;;
- monitor)
- # Active monitor
- MONITOR=$(hyprctl activeworkspace -j | jq -r '.monitor')
- grim -t jpeg -o "$MONITOR" "$FILE_PATH"
- ;;
- window)
- # Active window
- WINDOW_DATA=$(hyprctl activewindow -j)
- if [ "$(echo "$WINDOW_DATA" | jq -r '.address')" == "null" ]; then
- notify-send "Screenshot failed" "No active window found" -u low
- exit 1
- fi
- WINDOW_AT=$(echo "$WINDOW_DATA" | jq -r '.at | join(",")')
- WINDOW_SIZE=$(echo "$WINDOW_DATA" | jq -r '.size | join("x")')
- grim -t jpeg -g "${WINDOW_AT} ${WINDOW_SIZE}" "$FILE_PATH"
- ;;
- *)
- echo "Usage: $0 {area|monitor|window}"
- exit 1
- ;;
- esac
- # Check if file was created and copy to clipboard
- if [ -f "$FILE_PATH" ]; then
- wl-copy -t image/jpeg <"$FILE_PATH"
- notify-send "Screenshot saved" "$FILENAME" -i "$FILE_PATH"
- fi
|