diff --git a/uploader.sh b/uploader.sh
index f6f1324..e82a3df 100755
--- a/uploader.sh
+++ b/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
+ wrapped_filename=$(echo "$filename" | fold -w 45 | sed ':a;N;$!ba;s/\n/
/g')
+ echo "
Uploading $wrapped_filename $detail |
"
+}
+
+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