#!/bin/bash # Functions # Error function error { >&2 echo -e "\033[1;31mERROR:\033[0m $1"; shift exit "${1:-1}" } # Throw a value function throw-value { error "Value \"${1}\" invalid for ${2}." 1 } function screenshot-path { printf '%s%s-screenshot-%s.png' "${screenshot_d}/" "${LOGNAME}" "$(date +'%Y_%m_%d_%s')" } # Variables declare -a prepend _command append screenshot_d=/tmp # Arguments selection_mode="$1"; shift saving_mode="$1" ; shift # Command building _command+=(grim) case "$selection_mode" in full) : ;; area) _command+=(-g -) prepend+=(slurp) ;; *) throw-value "$selection_mode" 'selection mode' ;; esac case "$saving_mode" in clip) _command+=(-) append+=(wl-copy -t image/png) ;; file) _command+=("$(screenshot-path)") ;; *) throw-value "$saving_mode" 'saving mode' ;; esac # Debug #echo "${prepend[@]} | ${_command[@]} | ${append[@]}" #exit 0 # Execution set -xe "${prepend[@]}" | "${_command[@]}" | "${append[@]}"