#!/usr/bin/sh # @author nate zhou # @since 2024,2025,2026 # shoot - Take a screenshot with selected region in wlroots compositors. # @depends wmenu grim slurp wlr-rander maim(xorg) xrandr(xorg) [ -z "$GRIM_DEFAULT_DIR" ] && GRIM_DEFAULT_DIR="$HOME/tmp/screenshots" SCREENSHOT_HOME="${HOME}/tmp/screenshots" [ -d "$SCREENSHOT_HOME" ] || mkdir -p $SCREENSHOT_HOME filename="${SCREENSHOT_HOME}/$(date +%Y-%m-%d_%H_%M_%S).png" notify() { [ -z "$region" ] && exit 0 notify-send -u low "$(basename $0)" "$region" } shootOutput() { if [ "$XDG_SESSION_TYPE" = "wayland" ]; then region="$(wlr-randr \ | grep '^[a-zA-Z0-9]'\ | wmenu-color -p "$(basename $0)" -l 3 \ | tr -d '()' \ | cut -d' ' -f-1 )" sleep 0.1 grim -o "$region" "$filename" notify else region="$(xrandr \ | grep ' connected '\ | dmenu -p "$(basename $0)" -l 3 \ | sed 's/ primary / /' \ | cut -d' ' -f3 )" sleep 0.1 maim -g "$region" "$filename" notify fi } shootAll() { region="all outputs" if [ "$XDG_SESSION_TYPE" = "wayland" ]; then grim "$filename" else maim "$filename" fi notify } shootGeo() { if [ "$XDG_SESSION_TYPE" = "wayland" ]; then region=$(slurp) grim -g "$region" "$filename" else region=$(slop) maim -g "$region" "$filename" fi notify } [ -z "$1" ] && shootOutput case "$1" in -a|--all) shootAll ;; -g|--geo) shootGeo ;; esac