update for kde and non wlroot, add more options for zipline, fix upload errors
This commit is contained in:
parent
78c532808e
commit
8378f5b1d6
3 changed files with 147 additions and 28 deletions
94
main.sh
94
main.sh
|
@ -87,8 +87,6 @@ while [[ $# -gt 0 ]]; do
|
|||
esac
|
||||
done
|
||||
|
||||
REQUIRED_COMMANDS=("notify-send" "curl" "jq")
|
||||
|
||||
SHOULD_UPLOAD=$(get_value "DEFAULT_OPTION")
|
||||
[[ "$SHOULD_UPLOAD" == "upload" ]] && SHOULD_UPLOAD=true || SHOULD_UPLOAD=false
|
||||
|
||||
|
@ -98,10 +96,17 @@ SHOW_NOTIFICATIONS=$(get_value "SHOW_NOTIFICATIONS")
|
|||
SHOW_CAPTURE_PREVIEW=$(get_value "SHOW_CAPTURE_PREVIEW")
|
||||
[[ "$SHOW_CAPTURE_PREVIEW" == "true" ]] && SHOW_CAPTURE_PREVIEW=true || SHOW_CAPTURE_PREVIEW=false
|
||||
|
||||
REQUIRED_COMMANDS=("notify-send" "curl" "jq")
|
||||
|
||||
if [[ -n "$WAYLAND_DISPLAY" ]]; then
|
||||
SCREENSHOT_CMD=("grim" "-g")
|
||||
SELECT_REGION="slurp"
|
||||
REQUIRED_COMMANDS+=("wl-copy" "grim" "slurp")
|
||||
if [[ "$XDG_CURRENT_DESKTOP" == "KDE" ]]; then
|
||||
SCREENSHOT_CMD=("spectacle" "-rbn" "-o")
|
||||
REQUIRED_COMMANDS+=("xclip" "spectacle")
|
||||
else
|
||||
SCREENSHOT_CMD=("grim" "-g")
|
||||
SELECT_REGION="slurp"
|
||||
REQUIRED_COMMANDS+=("wl-copy" "grim" "slurp")
|
||||
fi
|
||||
elif [[ -n "$DISPLAY" ]]; then
|
||||
SCREENSHOT_CMD=("flameshot" "gui" "-p")
|
||||
REQUIRED_COMMANDS+=("xclip" "flameshot")
|
||||
|
@ -183,7 +188,11 @@ if [[ "$SHOULD_COPY" == "true" ]]; then
|
|||
fi
|
||||
|
||||
if [[ -n "$WAYLAND_DISPLAY" ]]; then
|
||||
"${SCREENSHOT_CMD[@]}" "$("$SELECT_REGION")" "$FILE"
|
||||
if [[ "$XDG_CURRENT_DESKTOP" == "KDE" && -n "$WAYLAND_DISPLAY" ]]; then
|
||||
"${SCREENSHOT_CMD[@]}" "$FILE"
|
||||
else
|
||||
"${SCREENSHOT_CMD[@]}" "$("$SELECT_REGION")" "$FILE"
|
||||
fi
|
||||
else
|
||||
"${SCREENSHOT_CMD[@]}" "$FILE"
|
||||
fi
|
||||
|
@ -272,7 +281,11 @@ if [[ -z "$USER_FILE" ]]; then
|
|||
fi
|
||||
|
||||
if [[ -n "$WAYLAND_DISPLAY" ]]; then
|
||||
"${SCREENSHOT_CMD[@]}" "$("$SELECT_REGION")" "$FILE"
|
||||
if [[ "$XDG_CURRENT_DESKTOP" == "KDE" && -n "$WAYLAND_DISPLAY" ]]; then
|
||||
"${SCREENSHOT_CMD[@]}" "$FILE"
|
||||
else
|
||||
"${SCREENSHOT_CMD[@]}" "$("$SELECT_REGION")" "$FILE"
|
||||
fi
|
||||
else
|
||||
"${SCREENSHOT_CMD[@]}" "$FILE"
|
||||
fi
|
||||
|
@ -286,10 +299,6 @@ if [[ -z "$USER_FILE" ]]; then
|
|||
echo "Error: File not found: $FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$SHOULD_SAVE" != "true" ]]; then
|
||||
[[ -n "$FILE" ]] && rm -f "$FILE"
|
||||
fi
|
||||
else
|
||||
FILE="$USER_FILE"
|
||||
fi
|
||||
|
@ -299,21 +308,56 @@ if [[ ! -f "$FILE" ]]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
HEADERS=()
|
||||
if [[ "$SERVICE" == "zipline" ]]; then
|
||||
declare -A ZIPLINE_HEADERS
|
||||
ZIPLINE_HEADERS=$(get_starting_with "x-zipline")
|
||||
for key in "${!ZIPLINE_HEADERS[@]}"; do
|
||||
header_name="${key#ZIPLINE__}" | tr '[:upper:]' '[:lower:]' | tr '_' '-'
|
||||
header_value="${ZIPLINE_HEADERS[$key]}"
|
||||
headers+=("-H" "$header_name: $header_value")
|
||||
done
|
||||
fi
|
||||
|
||||
headers+=("-H" "${UPLOAD_HEADERS[$SERVICE]}: $AUTH")
|
||||
|
||||
echo headers "${headers[@]}"
|
||||
|
||||
FILE_URL=""
|
||||
RESPONSE=$(curl -s -w "%{http_code}" -o /tmp/upload_response.json \
|
||||
-X POST -F "file=@$FILE" "${headers[@]}" "$DOMAIN")
|
||||
|
||||
REPONSE=$(curl -s -X POST \
|
||||
-F "file=@$FILE" \
|
||||
-H "${UPLOAD_HEADERS[$SERVICE]}: $AUTH" \
|
||||
"$DOMAIN")
|
||||
HTTP_CODE="${RESPONSE:(-3)}"
|
||||
BODY=$(cat /tmp/upload_response.json)
|
||||
rm /tmp/upload_response.json
|
||||
|
||||
if ! echo "$REPONSE" | jq . &>/dev/null; then
|
||||
echo -e "${RED}Error: Invalid response from server.${RESET}"
|
||||
if [[ "$HTTP_CODE" -ne 200 ]]; then
|
||||
echo -e "${RED}Error: Upload failed with status code $HTTP_CODE.${RESET}"
|
||||
echo "$BODY"
|
||||
exit 1
|
||||
fi
|
||||
FILE_URL=$(echo "$REPONSE" | jq -r ".${UPLOAD_JSON_KEYS[$SERVICE]}")
|
||||
|
||||
if [[ "$FILE_URL" == "null" ]]; then
|
||||
if ! echo "$BODY" | jq . &>/dev/null; then
|
||||
echo -e "${RED}Error: Invalid JSON response from server.${RESET}"
|
||||
echo "$BODY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FILE_URL=$(echo "$BODY" | jq -r ".${UPLOAD_JSON_KEYS[$SERVICE]}")
|
||||
if [[ "$FILE_URL" == "null" || -z "$FILE_URL" ]]; then
|
||||
echo -e "${RED}Error: File URL not found in response.${RESET}"
|
||||
echo "$BODY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "$WAYLAND_DISPLAY" ]]; then
|
||||
echo "Using wl-copy for clipboard."
|
||||
echo "$FILE_URL" | wl-copy
|
||||
elif [[ -n "$DISPLAY" ]]; then
|
||||
echo "Using xclip for clipboard."
|
||||
echo "$FILE_URL" | xclip -selection clipboard
|
||||
else
|
||||
echo "Error: Unable to detect display server (Wayland/X11)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -332,13 +376,7 @@ else
|
|||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "$WAYLAND_DISPLAY" ]]; then
|
||||
echo "Using wl-copy for clipboard."
|
||||
echo "$FILE_URL" | wl-copy
|
||||
elif [[ -n "$DISPLAY" ]]; then
|
||||
echo "Using xclip for clipboard."
|
||||
echo "$FILE_URL" | xclip -selection clipboard
|
||||
else
|
||||
echo "Error: Unable to detect display server (Wayland/X11)."
|
||||
exit 1
|
||||
# delete if should not save and not a user file
|
||||
if [[ "$SHOULD_SAVE" != "true" && "$USER_FILE" == "" ]]; then
|
||||
rm -f "$FILE"
|
||||
fi
|
Loading…
Add table
Add a link
Reference in a new issue