diff --git a/.i3blocks/batterybar b/.i3blocks/batterybar old mode 100755 new mode 100644 index 7e75649..e74dca8 --- a/.i3blocks/batterybar +++ b/.i3blocks/batterybar @@ -1,196 +1,116 @@ -#!/usr/bin/env bash -# batterybar; displays battery percentage as a bar on i3blocks -# -# Copyright 2015 Keftaa -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301, USA. -# -# -readarray -t output <<< $(acpi battery) -battery_count=${#output[@]} +#!/bin/bash -for line in "${output[@]}"; -do - percentages+=($(echo "$line" | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%')) - statuses+=($(echo "$line" | egrep -o -m1 'Not|Discharging|Charging|AC|Full|Unknown')) - remaining=$(echo "$line" | egrep -o -m1 '[0-9][0-9]:[0-9][0-9]') - if [[ -n $remaining ]]; then - remainings+=(" ($remaining)") - else - remainings+=("") - fi -done +# Récupération des infos de la batterie +readarray -t batteries <<< $(acpi battery) +battery=${batteries[${BLOCK_INSTANCE:-0}]} -echo $statuses >&2 +# 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}') -#There are 8 colors that reflect the current battery percentage when -#discharging -dis_colors=("#F2777A" "#F2777A" "#F99157" "#F99157" "#FFCC66" "#FFCC66" - "#99CC99" "#99CC99") +# Définition des couleurs +dis_colors=("#F2777A" "#F2777A" "#F99157" "#F99157" "#FFCC66" "#FFCC66" "#99CC99" "#99CC99") charging_color="#66CCCC" -full_color="#D3D0C8" ac_color="#6699CC" +full_color="#D3D0C8" +# Création de la barre « graphique » +percents=$(( percentage / 2 )) +(( percents > 48 )) && percents=48 -while getopts 1:2:3:4:5:6:7:8:c:f:a:h opt; do - case "$opt" in - 1) dis_colors[0]="$OPTARG";; - 2) dis_colors[1]="$OPTARG";; - 3) dis_colors[2]="$OPTARG";; - 4) dis_colors[3]="$OPTARG";; - 5) dis_colors[4]="$OPTARG";; - 6) dis_colors[5]="$OPTARG";; - 7) dis_colors[6]="$OPTARG";; - 8) dis_colors[7]="$OPTARG";; - c) charging_color="$OPTARG";; - f) full_color="$OPTARG";; - a) ac_color="$OPTARG";; - h) printf "Usage: batterybar [OPTION] color - When discharging, there are 8 [1-8] levels colors. - You can specify custom colors, for example: - - batterybar -1 red -2 \"#F6F6F6\" -8 green - - You can also specify the colors for the charging, AC and - charged states: - - batterybar -c green -f white -a \"#EEEEEE\"\n"; - exit 0; - esac -done - -squares="" - -end=$(($battery_count - 1)) -for i in $(seq 0 $end); +full_squares=$(( percents / 8 )) +for t in $(seq 1 $full_squares) do -# if (( percentages[$i] > 0 && percentages[$i] < 20 )); then -# squares="█" -# elif (( percentages[$i] >= 20 && percentages[$i] < 40 )); then -# squares="██" -# elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then -# squares="███" -# elif (( percentages[$i] >= 60 && percentages[$i] < 80 )); then -# squares="████" -# elif (( percentages[$i] >=80 )); then -# squares="█████" -# fi - percents[$i]=$(( percentages[$i] / 2 )) - (( percents > 48 )) && percents=48 - _full_squares=$(( percents[$i] /8 )) - for t in $(seq 1 $_full_squares) - do - squares+="█" - done - - if [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 7 ]] - then - #squares+="▉" - squares+="▇" - shortsquares+="▇" - elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 6 ]] - then - #squares+="▊" - squares+="▆" - shortsquares+="▆" - elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 5 ]] - then - #squares+="▋" - squares+="▅" - shortsquares+="▅" - elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 4 ]] - then - #squares+="▌" - squares+="▄" - shortsquares+="▄" - elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 3 ]] - then - #squares+="▍" - squares+="▃" - shortsquares+="▃" - elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 2 ]] - then - #squares+="▎" - squares+="▂" - shortsquares+="▂" - elif [[ $(( percents[$i] - ( _full_squares * 8 ) )) -eq 1 ]] - then - #squares+="▏" - squares+="▁" - shortsquares+="▁" - fi - - if [[ "${statuses[$i]}" = "Unknown" ]]; then - squares="? $squares" - fi - - case "${statuses[$i]}" in - "Charging") - color="$charging_color" - if (( percentages[$i] <= 10 )) - then echo 0 on > /proc/acpi/ibm/led - fi - ;; - "Full") - color="$full_color" - ;; - "AC"|"Not") - color="$ac_color" - ;; - "Discharging"|"Unknown") - if (( percentages[$i] >= 0 && percentages[$i] < 10 )); then - color="${dis_colors[0]}" - echo 0 blink > /proc/acpi/ibm/led - elif (( percentages[$i] >= 10 && percentages[$i] < 20 )); then - color="${dis_colors[1]}" - elif (( percentages[$i] >= 20 && percentages[$i] < 30 )); then - color="${dis_colors[2]}" - elif (( percentages[$i] >= 30 && percentages[$i] < 40 )); then - color="${dis_colors[3]}" - elif (( percentages[$i] >= 40 && percentages[$i] < 60 )); then - color="${dis_colors[4]}" - elif (( percentages[$i] >= 60 && percentages[$i] < 70 )); then - color="${dis_colors[5]}" - elif (( percentages[$i] >= 70 && percentages[$i] < 80 )); then - color="${dis_colors[6]}" - elif (( percentages[$i] >= 80 )); then - color="${dis_colors[7]}" - fi - ;; - esac - - _blanks=$(( 6 - ${#squares} )) - for t in $(seq 1 $_blanks) - do - squares+="█" - done - # Print Battery number if there is more than one - if (( $end > 0 )) ; then - message="$message$(($i + 1)): " - fi - - shortmessage="$message" - - if [[ "$BLOCK_BUTTON" -eq 1 ]]; then - message="$message${statuses[$i]/Not/Not charging} ${percentages[$i]}%${remainings[$i]} " - shortmessage="$shortmessage${statuses[$i]/Not/Not charging} ${remainings[$i]} " - fi - message="bat $message$squares" - shortmessage="bat $shortmessage${percentages[$i]}%" + squares+="█" done -echo "$message" -echo "$shortmessage" +if [[ $(( percents - ( full_squares * 8 ) )) -eq 7 ]] +then + #squares+="█" + squares+="▉" + #squares+="▇" +elif [[ $(( percents - ( full_squares * 8 ) )) -eq 6 ]] +then + #squares+="▓" + squares+="▊" + #squares+="▆" +elif [[ $(( percents - ( full_squares * 8 ) )) -eq 5 ]] +then + #squares+="▓" + squares+="▋" + #squares+="▅" +elif [[ $(( percents - ( full_squares * 8 ) )) -eq 4 ]] +then + #squares+="▒" + squares+="▌" + #squares+="▄" +elif [[ $(( percents - ( full_squares * 8 ) )) -eq 3 ]] +then + #squares+="▒" + squares+="▍" + #squares+="▃" +elif [[ $(( percents - ( full_squares * 8 ) )) -eq 2 ]] +then + #squares+="░" + squares+="▎" + #squares+="▂" +elif [[ $(( percents - ( full_squares * 8 ) )) -eq 1 ]] +then + #squares+="░" + squares+="▏" + #squares+="▁" +fi + +# Complétion de la barre afin d'avoir une taille fixe +blanks=$(( 6 - ${#squares} )) +for t in $(seq 1 $blanks) +do + squares+=" " +done + +# Choix de la couleur +case "${status}" in +"Charging") + color="$charging_color" +;; +"Full") + color="$full_color" +;; +"AC") + color="$ac_color" +;; +"Discharging"|"Unknown") + if (( percentage >= 0 && percentage < 10 )); then + color="${dis_colors[0]}" + elif (( percentage >= 10 && percentage < 20 )); then + color="${dis_colors[1]}" + elif (( percentage >= 20 && percentage < 30 )); then + color="${dis_colors[2]}" + elif (( percentage >= 30 && percentage < 40 )); then + color="${dis_colors[3]}" + elif (( percentage >= 40 && percentage < 60 )); then + color="${dis_colors[4]}" + elif (( percentage >= 60 && percentage < 70 )); then + color="${dis_colors[5]}" + elif (( percentage >= 70 && percentage < 80 )); then + color="${dis_colors[6]}" + elif (( percentage >= 80 )); then + color="${dis_colors[7]}" + fi +;; +esac + +# Format détaillé en cas de clic +if [[ -n "$BLOCK_BUTTON" ]] +then + message="${status} ${percentage}% ${remaining}" + message=${message% } +else + message="$squares" +fi + +# Affichage +echo "bat $message" +echo "bat ${percentage}%" +