44 lines
1.5 KiB
Bash
Executable File
44 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
###
|
|
### ~/.config/hypr/scripts/screenshot/screenshot_monitor.sh
|
|
###
|
|
|
|
time=$(date +%Y-%m-%d-%H%M%S)
|
|
dir="$(xdg-user-dir PICTURES)/Screenshots"
|
|
|
|
monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
|
|
[ -n "$monitor" ] || exit 1
|
|
|
|
file="Screenshot_${time}_${monitor}.png"
|
|
|
|
mkdir -p "$dir"
|
|
|
|
# Capture the focused monitor, save it and copy to clipboard
|
|
grim -o "$monitor" "$dir/$file" || exit 1
|
|
wl-copy -t image/png < "$dir/$file"
|
|
|
|
if command -v notify-send >/dev/null 2>&1; then
|
|
notify-send -a Screenshot -i camera-photo "Screenshot saved" "$file"
|
|
fi
|
|
|
|
# Open the editor if swappy is available (blocks until it is closed).
|
|
# swappy never overwrites the opened file on Ctrl+s (it saves a new
|
|
# timestamped copy to save_dir), so pass it a temporary config pointing
|
|
# save_dir/save_filename_format at our exact file: Ctrl+s then saves and
|
|
# exits (early_exit). -o writes the final surface when quitting with Esc/q.
|
|
# Note: closing with Ctrl+w or the X button quits without saving (swappy).
|
|
if command -v swappy >/dev/null 2>&1; then
|
|
cfg=$(mktemp -d)
|
|
mkdir -p "$cfg/swappy"
|
|
printf '[Default]\nsave_dir=%s\nsave_filename_format=%s\nearly_exit=true\n' \
|
|
"$dir" "$file" > "$cfg/swappy/config"
|
|
XDG_CONFIG_HOME="$cfg" swappy -f "$dir/$file" -o "$dir/$file"
|
|
rm -rf "$cfg"
|
|
wl-copy -t image/png < "$dir/$file"
|
|
fi
|
|
|
|
# Compress the resulting image in the background if oxipng is available
|
|
if command -v oxipng >/dev/null 2>&1; then
|
|
oxipng --strip safe -o 4 "$dir/$file" &
|
|
fi
|