Here's an update to my APM version of this. It incoprorates some of Fabio's changes to his ACPI version. It also reads directly from /proc/apm rather than using the apm command because it is faster and easier to parse, but may break for other kernel versions (I'm using 2.4.20).

if [ -f /proc/apm ]; then

  function apm_read
  {
    APM_STRING=(`cat /proc/apm`)
    APM_DRIVER_VERSION=${APM_STRING[0]}
    APM_BIOS_VERSION=${APM_STRING[1]}
    APM_TIME=${APM_STRING[7]}
    if [ $APM_TIME -lt 0 ]; then
      APM_NO_BATT=1
      APM_PERCENT=0
    else
      AMP_NO_BATT=0
      APM_PERCENT=${APM_STRING[6]%%%*}
    fi

    if [ "${APM_STRING[3]}" == "0x00" ]; then
      APM_AC=-
      case $APM_PERCENT in
        10?)  APM_COLOR="1;37"  ;;
         9?)  APM_COLOR="0;34"  ;;
         8?)  APM_COLOR="0;34"  ;;
         7?)  APM_COLOR="0;34"  ;;
         6?)  APM_COLOR="0;34"  ;;
         5?)  APM_COLOR="0;32"  ;;
         4?)  APM_COLOR="0;32"  ;;
         3?)  APM_COLOR="1;33"  ;;
         2?)  APM_COLOR="1;33"  ;;
         1?)  APM_COLOR="0;31"  ;;
          ?)  APM_COLOR="0;31;5";;
          *)  APM_COLOR="0;35"  ;;
      esac
    else
      APM_AC=+
      APM_COLOR="1;37"
    fi
  }

  function apm_dump
  {
    apm_read
    echo "DRIVER_VERSION = $APM_DRIVER_VERSION"
    echo "BIOS_VERSION = $APM_BIOS_VERSION"
    echo "AC = $APM_AC"
    echo "PERCENT = $APM_PERCENT"
    echo "TIME = $APM_TIME"
    echo "NO_BATT = $AMP_NO_BATT"
    echo "COLOR = $APM_COLOR"
  }

  PROMPT_COMMAND=amp_read
  if [ "$TERM" == "linux"]; then
    PS1="\[\e[\${APM_COLOR}m\]\h\$\[\e[0m\] "
  else
    PS1="\[\e[1m\](\$APM_AC\$APM_PERCENT%)\h\$\[\e[0m\] "
  fi

fi



Fabio Sirna wrote:
I do some change on the bash script that I've posted few days ago. This
works better. It must be in the .bashrc.


.,-''-,..,-''-,..,-''-,..,-''-,..,-''-,..,-''-,..,-''-,..,-''-,. # Color the bash prompt in function of the percentage of battery
# with acpi subsystem.
# Based on the originally apm based script that has been posted
# on debian-laptop by Jason Kraftcheck <[EMAIL PROTECTED]>.
#
# This script is licensed under the GNU GPL version 2 or later,
# see /usr/share/common-licences/GPL on a Debian system or
# http://www.gnu.org/copyleft/gpl.html on the web.
# (c) 2003 Fabio 'farnis' Sirna <[EMAIL PROTECTED]>

function acpi_percent()
{
 if [ `cat /proc/acpi/battery/BAT0/state | grep present: |cut -d\  -f18` = 
"yes" ]; then
  {
   CAPACITY=`cat /proc/acpi/battery/BAT0/info |grep "design capacity:"|cut -d\  
-f11`
   LEVEL=`cat /proc/acpi/battery/BAT0/state | grep remaining|cut -d\  -f8`
   ACPI_PERCENT=`echo $(( $LEVEL * 100 / $CAPACITY ))`
   if [ "$LEVEL" = "$CAPACITY" ]; then
    echo FULL
   else
    echo $ACPI_PERCENT%
   fi
  }
 else echo "NO BATTERY"
 fi
}

function acpi_charge()
{
 ACPI_CHARGE=`cat /proc/acpi/ac_adapter/AC/state | cut -d\  -f20`
 case $ACPI_CHARGE in
       *on-line*)
         ACPI_CHARGE="+" ;;
       *off-line*)
         ACPI_CHARGE="-" ;;
     esac
     echo $ACPI_CHARGE
}

function acpi_color()
   {
     if  [  "$(acpi_charge)"  =  "+"  ];  then
      {
       if [ `cat /proc/acpi/battery/BAT0/state | grep present: |cut -d\  -f18` = 
"no" ]; then
        echo  "0;31"
       else echo  "1;32"
      fi
     }
     else
       case  $(acpi_percent)  in
          10?%)  echo  "0;32"  ;;
           9?%)  echo  "0;32"  ;;
           8?%)  echo  "0;32"  ;;
           7?%)  echo  "0;32"  ;;
           6?%)  echo  "0;32"  ;;
           5?%)  echo  "0;32"  ;;
           4?%)  echo  "0;33"  ;;
           3?%)  echo  "0;33"  ;;
           2?%)  echo  "0;33"  ;;
1?%) echo "0;31" ;; ?%) echo "0;31;5" ;;
             *)  echo  "0;35"  ;;
esac
     fi
   }

function  acpi_color_prompt
   {
     PS1='\[\e[$(acpi_color)m\][$(acpi_charge)$(acpi_percent)][\t] 
\u:\w\$>\[\e[0;37m\] '
     #PS1="\[\e[$(acpi_color)m\]\h\$\[\e[0m\]  "
   }

   #  linux  console
   if  [  "$TERM"  =  "linux"  ];  then
     PROMPT_COMMAND=acpi_color_prompt
   fi

   function  echo_acpi
   {
     echo -n "($(acpi_charge)$(acpi_percent)) "
   }
.,-''-,..,-''-,..,-''-,..,-''-,..,-''-,..,-''-,..,-''-,..,-''-,.


Reply via email to