diff --git a/printscreen b/printscreen index ae6fb4a..35f3335 100755 --- a/printscreen +++ b/printscreen @@ -4,13 +4,95 @@ ### See https://github.com/flameshot-org/flameshot ## Or try to use scrot +# Vars {{{ +readonly PROGNAME=$(basename "${0}") +readonly NBARGS="${#}" +## Test if DEBUG is already defined (by parent script,…) +[ -z "${DEBUG}" ] && DEBUG=1 + +## Colors +readonly RED='\033[0;31m' +readonly RESET='\033[0m' +readonly COLOR_DEBUG="${PURPLE}" +# }}} +debug_message() { # {{{ + + local_debug_message="${1}" + + ## Print message if DEBUG is enable (=0) + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6b\e[m\n' "DEBUG − ${PROGNAME} : ${local_debug_message}" + + return 0 +} +# }}} + +# Manage arguments # {{{ + +## If there is argument(s) +if [ ! "${NBARGS}" -eq "0" ]; then + + manage_arg="0" + + ## If the first argument is not an option {{{ + ## Use it to delay screenshot + if ! printf -- '%s' "${1}" | grep -q -E -- "^-+"; + then + ## Use this argument for delay_screenshot + delay_screenshot="${1}" + ## Enable FULL screenshot mode + FULL_MODE="0" + + ## Switch to the next argument + shift + manage_arg=$((manage_arg+1)) + fi + ## }}} + # Parse all options (start with a "-") one by one + while printf -- '%s' "${1}" | grep -q -E -- "^-+"; do + + case "${1}" in + -d|--delay ) ## Add a delay + ## Enable FULL screenshot mode + FULL_MODE="0" + ## Move to the next argument + shift + ## Define the delay with this argument + delay_screenshot="${1}" + ;; + * ) ## unknow option + printf '%b\n' "${RED}Invalid option: ${1}${RESET}" + printf '%b\n' "---" + exit 1 + ;; + esac + + debug_message "Arguments management − \ +${RED}${1}${COLOR_DEBUG} option managed." + + ## Move to the next argument + shift + manage_arg=$((manage_arg+1)) + + done + + debug_message "Arguments management − \ +${RED}${manage_arg}${COLOR_DEBUG} argument(s) successfully managed." +else + debug_message "Arguments management − \ +No arguments/options to manage." +fi + +# }}} + +## Use Flameshot if available {{{ if [ "$(command -v flameshot)" ]; then flameshot gui --path /tmp --delay 50 - -else ## Use scrot +## }}} +else ## Use Scrot {{{ # -s : Interactively select a window or rectangle with the mouse. # -e : Directly open the screenshot with Gimp then delete it scrot -s -m -e 'gimp $f ; mv $f /tmp/' fi +## }}}