make progress window better

This commit is contained in:
2026-06-13 16:44:55 +02:00
parent 9ad90982cc
commit 32a55b6816

View File

@@ -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