make progress window better
This commit is contained in:
41
uploader.sh
41
uploader.sh
@@ -19,6 +19,7 @@ show_notification() {
|
||||
# ==========================================
|
||||
API_URL="http://localhost:1337/api/v2/upload"
|
||||
API_KEY=""
|
||||
|
||||
# ==========================================
|
||||
|
||||
FILE="$1"
|
||||
@@ -42,6 +43,33 @@ fi
|
||||
MIME_TYPE=$(file --mime-type -b "$FILE")
|
||||
BASENAME=$(basename "$FILE")
|
||||
|
||||
# Get file size locally
|
||||
FILE_SIZE_BYTES=$(stat -c%s "$FILE" 2>/dev/null || echo "0")
|
||||
|
||||
human_readable_size() {
|
||||
local size=$1
|
||||
local units=('B' 'KB' 'MB' 'GB' 'TB')
|
||||
local unit=0
|
||||
while [ $size -ge 1024 ] && [ $unit -lt 4 ]; do
|
||||
size=$((size / 1024))
|
||||
unit=$((unit + 1))
|
||||
done
|
||||
echo "$size ${units[$unit]}"
|
||||
}
|
||||
TOTAL_SIZE=$(human_readable_size "$FILE_SIZE_BYTES")
|
||||
|
||||
# Helper to format centered HTML label with a fixed width
|
||||
format_label() {
|
||||
local filename="$1"
|
||||
local detail="$2"
|
||||
local wrapped_filename
|
||||
# Wrap the filename to 45 chars max, and join with <br>
|
||||
wrapped_filename=$(echo "$filename" | fold -w 45 | sed ':a;N;$!ba;s/\n/<br>/g')
|
||||
echo "<table width=\"400\"><tr><td align=\"center\">Uploading <b>$wrapped_filename</b><br><font color=\"#666666\">$detail</font></td></tr></table>"
|
||||
}
|
||||
|
||||
INIT_LABEL=$(format_label "$BASENAME" "(0 B / $TOTAL_SIZE) @ 0 B/s — --:--:-- remaining")
|
||||
|
||||
# ==========================================
|
||||
# Progress bar setup (kdialog + qdbus)
|
||||
# ==========================================
|
||||
@@ -59,7 +87,7 @@ PROGRESS_OBJECT=""
|
||||
|
||||
if command -v kdialog &>/dev/null && [ -n "$QDBUS_CMD" ]; then
|
||||
DBUS_REF=$(kdialog --title "f0ckm Uploader" \
|
||||
--progressbar "Uploading $BASENAME..." 100 2>/dev/null)
|
||||
--progressbar "$INIT_LABEL" 100 2>/dev/null)
|
||||
PROGRESS_SERVICE=$(echo "$DBUS_REF" | awk '{print $1}')
|
||||
PROGRESS_OBJECT=$(echo "$DBUS_REF" | awk '{print $2}')
|
||||
fi
|
||||
@@ -102,7 +130,7 @@ if [ -n "$PROGRESS_SERVICE" ] && [ -n "$PROGRESS_OBJECT" ]; then
|
||||
PCT="${fields[0]}"
|
||||
fi
|
||||
|
||||
TOTAL_SIZE="${fields[1]}"
|
||||
TOTAL_SIZE_CURL="${fields[1]}"
|
||||
XFERD="${fields[5]}"
|
||||
SPEED="${fields[11]}"
|
||||
TIME_LEFT="${fields[10]}"
|
||||
@@ -112,8 +140,13 @@ if [ -n "$PROGRESS_SERVICE" ] && [ -n "$PROGRESS_OBJECT" ]; then
|
||||
SPEED="${SPEED}/s"
|
||||
fi
|
||||
|
||||
LABEL="Uploading $BASENAME
|
||||
($XFERD / $TOTAL_SIZE) @ $SPEED — $TIME_LEFT remaining"
|
||||
# Prefer the local size calculation if curl total size is 0/empty/not computed yet
|
||||
if [ -z "$TOTAL_SIZE_CURL" ] || [ "$TOTAL_SIZE_CURL" = "0" ] || [ "$TOTAL_SIZE_CURL" = "0b" ]; then
|
||||
TOTAL_SIZE_CURL="$TOTAL_SIZE"
|
||||
fi
|
||||
|
||||
DETAIL="($XFERD / $TOTAL_SIZE_CURL) @ $SPEED — $TIME_LEFT remaining"
|
||||
LABEL=$(format_label "$BASENAME" "$DETAIL")
|
||||
|
||||
$QDBUS_CMD "$PROGRESS_SERVICE" "$PROGRESS_OBJECT" Set "" value "$PCT" 2>/dev/null || true
|
||||
$QDBUS_CMD "$PROGRESS_SERVICE" "$PROGRESS_OBJECT" setLabelText "$LABEL" 2>/dev/null || true
|
||||
|
||||
Reference in New Issue
Block a user