diff --git a/.i3blocks/batterybar b/.i3blocks/batterybar index 406dcb4..fdd1d93 100755 --- a/.i3blocks/batterybar +++ b/.i3blocks/batterybar @@ -15,36 +15,51 @@ human_time() { # Récupération des infos de la batterie source /sys/class/power_supply/BAT1/uevent +time="$(date +%s)" + +# Min et max hardcodés (20 et 80 % ici) +MIN=1112600 +MAX=4452000 + +# Utiliser toute la plage de la batterie +#MIN=0 +#MAX="$POWER_SUPPLY_CHARGE_FULL" # %age réel #percentage="$POWER_SUPPLY_CAPACITY" -# %age relatif aux 80 % limités dans le BIOS -percentage=$(( POWER_SUPPLY_CHARGE_NOW * 100 / 4450400 )) +# %age relatif aux MIN/MAX +percentage=$(( (POWER_SUPPLY_CHARGE_NOW - MIN) * 100 / (MAX - MIN) )) + +# État de la batterie status="$POWER_SUPPLY_STATUS" -if [[ "$status" == "Charging" && "$percentage" -eq 80 ]] + +# Indiquer la limite mise dans le BIOS, si la batterie n’indique pas qu’elle +# est chargée d’elle-même +if [[ "$status" == "Charging" && "$POWER_SUPPLY_CAPACITY" -eq 80 ]] then status="Full" fi -time="$(date +%s)" - if [[ -f "${runtime}/bat" ]] then mapfile -t old < "${runtime}/bat" fi +# Estimation naïve du temps restant 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])) ))" + remaining_secs="$(( (POWER_SUPPLY_CHARGE_NOW - MIN) / ((old[2] - POWER_SUPPLY_CHARGE_NOW) / (time - old[1])) ))" +elif [[ "$status" == "Charging" ]] +then + remaining_secs="$(( (MAX - POWER_SUPPLY_CHARGE_NOW) / ((POWER_SUPPLY_CHARGE_NOW - old[2]) / (time - old[1])) ))" else - remaining_secs="$(( (4450400 - POWER_SUPPLY_CHARGE_NOW) / ((POWER_SUPPLY_CHARGE_NOW - old[2]) / (time - old[1])) ))" + remaining_secs=0 fi remaining="$(human_time "$remaining_secs")" @@ -57,18 +72,13 @@ full_color="#D3D0C8" # Création de la barre « graphique », 48 états affichables -## à partir du pourcentage de charge +## à partir du pourcentage de calculé plus tôt -#percents=$(( percentage / 2 )) -#(( percents > 48 )) && percents=48 +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 )) +# percents=$(( (POWER_SUPPLY_CHARGE_NOW - MIN) * 48 / (MAX - MIN) )) full_squares=$(( percents / 8 )) @@ -164,4 +174,4 @@ fi # Affichage echo "bat $message" -echo "bat ${percentage}%" \ No newline at end of file +echo "bat ${percentage}%"