scripts/printscreen

99 lines
2.3 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
## Try to use flameshot to get a screenshot
### 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 {{{
# -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
## }}}