diff --git a/.i3blocks/batterybar b/.i3blocks/batterybar
index e74dca8..406dcb4 100755
--- a/.i3blocks/batterybar
+++ b/.i3blocks/batterybar
@@ -1,13 +1,53 @@
#!/bin/bash
-# Récupération des infos de la batterie
-readarray -t batteries <<< $(acpi battery)
-battery=${batteries[${BLOCK_INSTANCE:-0}]}
+runtime="${XDG_RUNTIME_DIR}/i3blocks"
+[[ ! -d "$runtime" ]] && mkdir -p "$runtime"
-# Stockage en variables
-percentage=$(echo $battery | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%')
-status=$(echo $battery | grep -E -o -m1 ': [[:alpha:]]*,' | tr -cd '[:alpha:]')
-remaining=$(echo $battery | grep -E -o -m1 '[0-9]{2}:[0-9]{2}')
+human_time() {
+ local seconds="${1}"
+ local minutes=$(( seconds / 60 ))
+ local hours=$(( minutes / 60 ))
+ minutes=$(( minutes % 60 ))
+ printf "%d:%02d\n" "$hours" "$minutes"
+ return
+}
+
+# Récupération des infos de la batterie
+
+source /sys/class/power_supply/BAT1/uevent
+
+# %age réel
+#percentage="$POWER_SUPPLY_CAPACITY"
+# %age relatif aux 80 % limités dans le BIOS
+percentage=$(( POWER_SUPPLY_CHARGE_NOW * 100 / 4450400 ))
+
+status="$POWER_SUPPLY_STATUS"
+if [[ "$status" == "Charging" && "$percentage" -eq 80 ]]
+then
+ status="Full"
+fi
+
+time="$(date +%s)"
+
+if [[ -f "${runtime}/bat" ]]
+then
+ mapfile -t old < "${runtime}/bat"
+fi
+
+if [[ "${old[0]}" != "$status" ]]
+then
+ printf "%s\n" "$status" "$time" "$POWER_SUPPLY_CHARGE_NOW" > "${runtime}/bat"
+fi
+
+
+if [[ "$status" == "Discharging" ]]
+then
+ remaining_secs="$(( POWER_SUPPLY_CHARGE_NOW / ((old[2] - POWER_SUPPLY_CHARGE_NOW) / (time - old[1])) ))"
+else
+ remaining_secs="$(( (4450400 - POWER_SUPPLY_CHARGE_NOW) / ((POWER_SUPPLY_CHARGE_NOW - old[2]) / (time - old[1])) ))"
+fi
+
+remaining="$(human_time "$remaining_secs")"
# Définition des couleurs
dis_colors=("#F2777A" "#F2777A" "#F99157" "#F99157" "#FFCC66" "#FFCC66" "#99CC99" "#99CC99")
@@ -15,9 +55,21 @@ charging_color="#66CCCC"
ac_color="#6699CC"
full_color="#D3D0C8"
-# Création de la barre « graphique »
-percents=$(( percentage / 2 ))
-(( percents > 48 )) && percents=48
+# Création de la barre « graphique », 48 états affichables
+
+## à partir du pourcentage de charge
+
+#percents=$(( percentage / 2 ))
+#(( percents > 48 )) && percents=48
+
+## à partir des données brutes
+
+### Relatif à 100 %
+#percents=$(( POWER_SUPPLY_CHARGE_NOW * 48 / POWER_SUPPLY_CHARGE_FULL ))
+
+### Relatif à 80 % (limite de charge du BIOS)
+percents=$(( POWER_SUPPLY_CHARGE_NOW * 48 / 4450400 ))
+
full_squares=$(( percents / 8 ))
for t in $(seq 1 $full_squares)
@@ -107,10 +159,9 @@ then
message="${status} ${percentage}% ${remaining}"
message=${message% }
else
- message="$squares"
+ message="$squares ${remaining}"
fi
# Affichage
echo "bat $message"
-echo "bat ${percentage}%"
-
+echo "bat ${percentage}%"
\ No newline at end of file