diff --git a/hyprshot b/hyprshot
index 4768e61..254bc5d 100755
--- a/hyprshot
+++ b/hyprshot
@@ -1,5 +1,7 @@
#!/usr/bin/env sh
+set -e
+
AVAILABLE_MODES=(output window region)
function Help() {
@@ -28,19 +30,24 @@ EOF
}
function Print() {
- [ $DEBUG -eq 1 ] && printf "$@" >&2
+ if [ $DEBUG -eq 0 ]; then
+ return 0
+ fi
+
+ 1>&2 printf "$@"
}
function send_notification() {
- [ $SILENT -eq 0 ] && {
- notify-send "Screenshot saved" \
- "Image saved in ${1} and copied to the clipboard." \
- -i "${1}"
- }
+ if [ $SILENT -eq 1 ]; then
+ return 0
+ fi
+ notify-send "Screenshot saved" \
+ "Image saved in ${1} and copied to the clipboard." \
+ -i "${1}"
}
function save_geometry() {
- [ -z "${1}" ] && Print "no geometry\n" && exit 1;
+ Print "Geometry: %s\n" "${1}"
if [ $CLIPBOARD -eq 0 ]; then
mkdir -p "$SAVEDIR"
@@ -63,10 +70,10 @@ function begin_grab() {
local option=$1
case $option in
output)
- local geometry=`slurp -or`
+ local geometry=`grab_output`
;;
region)
- local geometry=`slurp -d`
+ local geometry=`grab_region`
;;
window)
local geometry=`grab_window`
@@ -75,6 +82,14 @@ function begin_grab() {
save_geometry "${geometry}"
}
+function grab_output() {
+ slurp -or
+}
+
+function grab_region() {
+ slurp -d
+}
+
function grab_window() {
local monitors=`hyprctl -j monitors`
local clients=`hyprctl -j clients | jq -r '[.[] | select(.workspace.id | contains('$(echo $monitors | jq -r 'map(.activeWorkspace.id) | join(",")')'))]'`
@@ -89,11 +104,8 @@ function grab_window() {
function args() {
local options=$(getopt -o hf:o:m:ds --long help,filename:,output-folder:,mode:,clipboard-only,debug,silent -- "$@")
- [ $? -eq 0 ] || {
- Print "Invalid option provided\n"
- exit 2
- }
eval set -- "$options"
+
while true; do
case "$1" in
-h | --help)
@@ -111,11 +123,6 @@ function args() {
-m | --mode)
shift;
echo "${AVAILABLE_MODES[@]}" | grep -wq $1
- local check=$?
- [ $check -eq 0 ] || {
- Print "Unknown mode: %s\n\nAvailable modes are:\n\toutput\n\tregion\n\twindow\n" "$1"
- exit 2
- }
OPTION=$1;;
--clipboard-only)
CLIPBOARD=1
@@ -134,16 +141,16 @@ function args() {
shift
done
- [ -z $OPTION ] && {
+ if [ -z $OPTION ]; then
Print "A mode is required\n\nAvailable modes are:\n\toutput\n\tregion\n\twindow\n"
exit 2
- }
+ fi
}
-[ -z $1 ] && {
+if [ -z $1 ]; then
Help
exit
-}
+fi
CLIPBOARD=0
DEBUG=0
@@ -152,6 +159,7 @@ FILENAME="$(date +'%Y-%m-%d-%H%M%S_hyprshot.png')"
[ -z "$HYPRSHOT_DIR" ] && SAVEDIR=${XDG_PICTURES_DIR:=~} || SAVEDIR=${HYPRSHOT_DIR}
args $0 "$@"
+
SAVE_FULLPATH="$SAVEDIR/$FILENAME"
[ $CLIPBOARD -eq 0 ] && Print "Saving in: %s\n" "$SAVE_FULLPATH"
begin_grab $OPTION