# monitor batteria

## luna80

qualcuno conosce per caso un tool che monitora la batteria e che visualizza un messaggio quando la batteria è arrivata ad un certo livello?

al momento uso le gdesklets ma vorrei qualcosa che mi avverte (in primo piano) quando la batteria sta finendo.

grazie

(n.b.: se non cè in giro niente quasi quasi mi diverto e provo a farmi un toolino tutto mio, magari con python,...oppure altro?...anche consigli in questo senso mi vanno benissimo!)

----------

## mouser

Ciao luna80.

Se utilizzi gnome o xfce4 allora ci sono direttamente le utility per la barra. Quella di xfce4 ti permette di impostare una percentuale e di eseguire un comando (programma, script, ecc.) quando si raggiunge quella percentuale si esegue uno la scelta, e quando si raggiunge lo 0 ne esegue un'altro.   :Cool:   :Cool: 

Se vuoi domani ti posso postare due scrippettini che ho scritto in passato che quando si raggiunge la percentuale impostata ti avvisa che si sta scaricando la batteria e ti chiede se vuoi spegnere il pc, con una comoda finestrella; se non ti servono, almeno li puoi usare come spunto per i tuoi script   :Very Happy: 

My 2 eurocent

Ciriciao

mouser  :Wink: 

----------

## gutter

Puoi dare un'occhiata a:

```

*  app-admin/gkrellm

      Latest version available: 2.1.28-r1

      Latest version installed: 2.1.28-r1

      Size of downloaded files: 618 kB

      Homepage:    http://www.gkrellm.net/

      Description: Single process stack of various system monitors

      License:     GPL-2

```

----------

## fedeliallalinea

Oppure fai come me lo metti sil prompt bash che ce l'hai sempre sotto occhio  :Wink: 

----------

## inspiron

 *fedeliallalinea wrote:*   

> Oppure fai come me lo metti sil prompt bash che ce l'hai sempre sotto occhio 

 

come si fa a metterlo sul prompt?

P.S.:uso aterm come shell in X e bash fuori da x....

----------

## fedeliallalinea

https://forums.gentoo.org/viewtopic.php?t=195046

----------

## inspiron

 *fedeliallalinea wrote:*   

> https://forums.gentoo.org/viewtopic.php?t=195046

 

ma va bene anche x aterm?

----------

## luna80

per mouser: utilizzo fluxbox, cmq per quanto riguada i tuoi scriptini, li vedrei molto volentieri, grazie mille!

per gutter: si conosco gkrellm ma dato che uso già le gdesklet volevo evitarlo, cmq grazie anche a te

per fedeliallalinea: credo propio che farò così, ora guardo come si fa e stasera provo!

per tutti: grazie!

----------

## fedeliallalinea

 *inspiron wrote:*   

> ma va bene anche x aterm?

 

Io uso aterm. Comunque dipende penso dal tipo di shell usata

----------

## inspiron

 *fedeliallalinea wrote:*   

> https://forums.gentoo.org/viewtopic.php?t=195046

 

x fedliallalinea: ma il codice che hai ma a questo link e per bash o per aterm?

----------

## randomaze

 *inspiron wrote:*   

> ma il codice che hai ma a questo link e per bash o per aterm?

 

aterm non é una shell ma un emulatore di terminale.

All'interno di un emulatore di terminale funziona una shell, che nel tuo caso dovrebbe continuare ad essere bash.

----------

## inspiron

 *randomaze wrote:*   

>  *inspiron wrote:*   ma il codice che hai ma a questo link e per bash o per aterm? 
> 
> aterm non é una shell ma un emulatore di terminale.
> 
> All'interno di un emulatore di terminale funziona una shell, che nel tuo caso dovrebbe continuare ad essere bash.

 

ok grazie...

quindi per mettere la carica della batteria e altre cose come ha fatto fedeliallalinea devo modificare .bashrc?

----------

## randomaze

 *inspiron wrote:*   

> quindi per mettere la carica della batteria e altre cose come ha fatto fedeliallalinea devo modificare .bashrc?

 

.bashrc e/o .bash_profile

La differenza tra i due file la trovi nella man page della bash oppure facendo una ricerca nel forum  :Wink: 

----------

## inspiron

qui

```

normal='\[\033[0m\]'

white='\[\033[0;29m\]'

gray='\[\033[1;37m\]'

red='\[\033[1;31m\]'

green='\[\033[1;32m\]'

yellow='\[\033[0;33m\]'

blue='\[\033[0;34m\]'

magenta='\[\033[1;35m\]'

cyan='\[\033[0;36m\]'

purple='\[\033[1;0;35m\]'

lightgreen='\[\033[0;32m\]'

lightred='\[\033[0;31m\]'

MYL1="\033(0l\033(B"

MYL2="\033(0mq\033(B"

MYDATE="\$(/bin/date +'%d %B %Y - %H:%M')"

MYPTY="`tty | sed -e "s:/dev/::"`"

MYKERNEL="`uname -r`"

function mybattery {

  NO_AC_MESG="AC off"

  AC_MESG="AC on"

  APMD_RESPONSE=`apm`

  case $APMD_RESPONSE in

    *$AC_MESG*)

      ACstat="AC on"

      ;;

    *$NO_AC_MESG*)

      ACstat="AC off"

      ;;

  esac

  TOP="100%"

  BATT=`apm | tail -c 5`

  if [ $BATT = $TOP ]; then

    BATstat="top"

  else

    BATstat=`apm | tail -c 4`

  fi

  echo -n $ACstat, $BATstat

}

if [ `/usr/bin/whoami` = 'root' ]

then

    PS1="\n$gray$MYL1-($red\u $MYKERNEL$gray)-($yellow$MYDATE$gray)-($yellow\$(mybattery)$gray)-($yellow$MYPTY$gray)

$MYL2-($yellow\w$gray)->$normal "

else

    PS1="\n$gray$MYL1-($green\u $MYKERNEL$gray)-($yellow$MYDATE$gray)-($yellow\$(mybattery)$gray)-($yellow$MYPTY$gray)

$MYL2-($yellow\w$gray)->$normal "

fi

```

fedeliallalinea usa apm, mentre io uso acpi, come faccio a cambiare il codice in modo che usi acpi?

----------

## fedeliallalinea

 *inspiron wrote:*   

> fedeliallalinea usa apm, mentre io uso acpi, come faccio a cambiare il codice in modo che usi acpi?

 

Se leggevi la seconda pagina del thread https://forums.gentoo.org/viewtopic.php?p=1324340#1324340

----------

## inspiron

 *fedeliallalinea wrote:*   

>  *inspiron wrote:*   fedeliallalinea usa apm, mentre io uso acpi, come faccio a cambiare il codice in modo che usi acpi? 
> 
> Se leggevi la seconda pagina del thread https://forums.gentoo.org/viewtopic.php?p=1324340#1324340

 

chiedo scusa... :Very Happy: 

ho modificato .bashrc in questo modo:

```

# /etc/skel/.bashrc:

# $Header: /home/cvsroot/gentoo-src/rc-scripts/etc/skel/.bashrc,v 1.8 2003/02/28 15:45:35 azarah Exp $

# This file is sourced by all *interactive* bash shells on startup.  This

# file *should generate no output* or it will break the scp and rcp commands.

# colors for ls, etc.

eval `dircolors -b /etc/DIR_COLORS`

alias d="ls --color"

alias ls="ls --color=auto"

alias ll="ls --color -la"

normal='\[\033[0m\]'

white='\[\033[0;29m\]'

gray='\[\033[1;37m\]'

red='\[\033[1;31m\]'

green='\[\033[1;32m\]'

yellow='\[\033[0;33m\]'

blue='\[\033[0;34m\]'

magenta='\[\033[1;35m\]'

cyan='\[\033[0;36m\]'

purple='\[\033[1;0;35m\]'

lightgreen='\[\033[0;32m\]'

lightred='\[\033[0;31m\]'

MYL1="\033(0l\033(B"

MYL2="\033(0mq\033(B"

MYDATE="\$(/bin/date +'%d %B %Y - %H:%M')"

function mybattery {

 AC_MESG="charging"

 NO_AC_MESG=" discharging"

 ACPI_RESPONSE=`acpi |cut -d : -f 2 |cut -d , -f 1`

 case $ACPI_RESPONSE in

   *$NO_AC_MESG*)

     ACstat="dschg"

     ;;

   *$AC_MESG*)

     ACstat="chg"

     ;;

 esac

 TOP="100%"

 BATT=`acpi | cut -d , -f 2`

 if [ $BATT = $TOP ]; then

   BATstat="top"

 else

   BATstat=`acpi | cut -d , -f 2`

 fi

 echo -n $ACstat,$BATstat

}

if [ `/usr/bin/whoami` = 'root' ]

then

    PS1="\n$gray$MYL1-($red\u$gray)-($yellow$MYDATE$gray)-($yellow\$(mybattery)$gray)

$MYL2-($yellow\w$gray)->$normal "

else

    PS1="\n$gray$MYL1-($green\u$gray)-($yellow$MYDATE$gray)-($yellow\$(mybattery)$gray)

$MYL2-($yellow\w$gray)->$normal "

fi

# Change the window title of X terminals 

case $TERM in

   xterm*|rxvt|Eterm|eterm)

      

      PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'

      ;;

   screen)

      PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\033\\"'

      ;;

esac

##uncomment the following to activate bash-completion:

#[ -f /etc/profile.d/bash-completion ] && source /etc/profile.d/bash-completion

```

ma quando vado a d usare aterm ho questi problemi:

1)quando apro aterm da utente mi dice: -bash: [: =: unary operator expected 

   e non mi scrive se l'alimentatore e attaccato o no e la carica della batteria, ma stampa solo (,)

2)quando faccio su mi dice: bash: mybattery: commmand not found

edit: da utente mi scrive la carica della batteria solo se l'alimentatore e staccato....

----------

## neon

 *inspiron wrote:*   

> 
> 
> ```
> function mybattery {
> 
> ...

 

Addirittura una funzione...

io uso:

```
batterylev="\$(cat /proc/apm | egrep -o [0-9]+%)"
```

con apm. Non posso vedere l'output di acpi perchè uso apm, ma basta modificarlo un poco poco...

----------

## fedeliallalinea

 *neon_it wrote:*   

> Addirittura una funzione...
> 
> io uso:
> 
> ```
> ...

 

e poi ci sta anche bene

```
apm | awk -F\, '{print $1}'
```

per vedere se online o offline

EDIT: riguardando la mia funzione ora e'

```
function mybattery {

  ACstat=`apm | awk '{print $1}'`

  BATstat=`apm | awk '{print $5}'`

  echo -n $ACstat $BATstat

}
```

----------

## neon

 *fedeliallalinea wrote:*   

> 
> 
> e poi ci sta anche bene
> 
> ```
> ...

 

```
$ apm

32-bit APM interface not supported
```

Sarà perchè sono in emulazione, ma non posso usare apm, devo cattare il file a manina. Alla fine c'è un 0x01 al terzo posto del file se è attaccata la spina ed uno 0x00 se non lo è... Dite che cut è più veloce di egrep? Ora ho messo quello. (forse awk è ancora meglio...)

----------

## luna80

se a qualcuno interessa ho fatto una piccola aggiunta allo script per vedere anche il tempo di durata rimanente della batteria (ore e minuti).

chiaramente sono da conoscere il tempo di durata massimo della batteria e la percentuale masssima che raggiunge con la carica (di solito 100% ma a volte le batterie un pò vecchie o maltrattate raggiungono soltanto percentuali minori)

posto qui la funzione modificata (io uso acpi), premetto che l'ho fatto stanotte (  :Confused:  ) e che è il mio primo scriptino per la bash e non sono sicura che sia il metodo migliore per farlo, caso mai sono sempre ben accetti i consigli di chi ne sa di più!

```
function mybattery {

 AC_MESG="charging"

 NO_AC_MESG=" discharging"

 ACPI_RESPONSE=`acpi |cut -d : -f 2 |cut -d , -f 1`

 case $ACPI_RESPONSE in

   *$NO_AC_MESG*)

     ACstat="dschg"

     ;;

   *$AC_MESG*)

     ACstat="chg"

     ;;

    *)

     ACstat="charged"

     ;;

 esac

 

 TOPtime=200 #minuts(3h20m)

 TOP="100" #100%

 

 BATstat=`acpi | cut -d , -f 2 | cut -d % -f 1`

 let "BATtime=$TOPtime*$BATstat/$TOP"

   

 let "h=$BATtime/60"

 let "min=$BATtime%60"

   

 BATtime="$h h $min m"

 echo -n $ACstat,"$BATstat %",$BATtime

}

```

sostituite TOPtime con il tempo massimo di durata (in minuti) e TOP con la percentuale di carica massima della vostra batteria.

ciaoLast edited by luna80 on Sun Jan 09, 2005 8:09 am; edited 1 time in total

----------

## inspiron

 *inspiron wrote:*   

> ho modificato .bashrc in questo modo:
> 
> ...
> 
> 1)quando apro aterm da utente mi dice: -bash: [: =: unary operator expected 
> ...

 

scusate...

scusate ma che c'è di sbagliato nel mio .bashrc ?

randomaze: per favore quotiamo civilmente...

----------

## luna80

 *inspiron wrote:*   

> 
> 
> 2)quando faccio su mi dice: bash: mybattery: commmand not found
> 
> 

 

anche root deve avere la definizione della funzione mybattery,devi mettere la funzione anche nel file .bashrc di root

(io ho fatto così,...non so se sia il sistema giusto ma credo di si)

----------

## inspiron

 *luna80 wrote:*   

>  *inspiron wrote:*   
> 
> 2)quando faccio su mi dice: bash: mybattery: commmand not found
> 
>  
> ...

 

si..

questo gia l'avevo risolto infatti... :Very Happy: 

il problema e che mi dice:  

 -bash: [: =: unary operator expected

e non mi dice ne se l'alimentatore e attacccato ne quanto e carica la batteria.....

----------

## randomaze

 *inspiron wrote:*   

> 1)quando apro aterm da utente mi dice: -bash: [: =: unary operator expected e non mi scrive se l'alimentatore e attaccato o no e la carica della batteria, ma stampa solo (,)

 

Classicamente quell'errore lo da quando dentro le quadre dell'if usi due variabili vuote.

 *Quote:*   

> 2)quando faccio su mi dice: bash: mybattery: commmand not found

 

Perché facendo "su" e basta vengono mantenute le variabili ma, evidentemente, non le funzioni.

Sinceramente "su" senza parametri sarebbe meglio evitarlo in favore di "su -" che permette di evitare strani effetti collaterali relativi alle variabili. Ma fate come preferite.

----------

## inspiron

 *randomaze wrote:*   

>  *inspiron wrote:*   1)quando apro aterm da utente mi dice: -bash: [: =: unary operator expected e non mi scrive se l'alimentatore e attaccato o no e la carica della batteria, ma stampa solo (,) 
> 
> Classicamente quell'errore lo da quando dentro le quadre dell'if usi due variabili vuote.
> 
>  *Quote:*   2)quando faccio su mi dice: bash: mybattery: commmand not found 
> ...

 

```

if [ `/usr/bin/whoami` = 'root' ]
```

l'unico if che sta nel .bashrc e questo...

----------

## dboogieman

Ciao io utilizzo window Maker e vi ho instalato da emerge quanto segue.

Code:

#emerge search wmbattery

Searching...

[ Results for search key : wmbattery ]

[ Applications found : 1 ]

*  x11-plugins/wmbattery

         Size of downloaded files: 42 kB

         Homepage:    http://kitenet.net/programs/wmbattery

         Description: A dockable app to report APM battery stats.

         License:     GPL-2

visualizza percentuale di carica della batteria e riassume la percentuale con un semicerchio che perde colore al calare della carica della batteria, il mio portatile poi che un IBM ThinkPad fa anche un bip quando raggiungo il 5% di carica..direi ottmo.

Spero possa essere utile anche per te  :Wink: 

Ciao

dboogieman

----------

## inspiron

comunque ho notato che ogni tanto mette la carica della batteria e l'alimentatore attaccato o no sulla shell ogni tanto si e ogni tanto no...

in maniera del tutto casuale...

----------

## fedeliallalinea

 *inspiron wrote:*   

> comunque ho notato che ogni tanto mette la carica della batteria e l'alimentatore attaccato o no sulla shell ogni tanto si e ogni tanto no...

 

Non ho capito a cosa ti riferisci? Non riesco a capire

----------

## inspiron

x fedeliallalinea: ho modificato il mio prompt bash in maniera simle al quella tua di questo link:https://forums.gentoo.org/viewtopic.php?t=195046....

solo che ora ho due problemi:

1) ogni volta prima del promt mi da il seguente errore: -bash:[: =: unary operator expected;

2)la parte relativa alla carica della batteria e quella che dice se l'alimentatore e staccato o no di solito sono vuote e scrivono solo: (,)   , e solo ogni tanto,in maniera casuale, mi scrivono tuttto in maniers completa (es: (chg,10%) , oppure, (dschg,40%) )......

----------

## dboogieman

Ciao a me direi che funziona in maniera costante, lui e' un quadratino che mi sono "appiccicato" in alto a sinistra.

In basso a destra mi visualizza una batteria contenente una percentuale in basso a sinistra una "presa di corrente" (chiaramente visibile in presenza di cavo di alimentazione attaccato al portatile), di sopra semicerchio che perde colore, ed in mezzo al semicerchio il tempo disponibile di autonomia Power, senza essere attaccatto alla mia "ciabatta"  :Wink: 

Ciao

dboogieman

----------

## inspiron

 *dboogieman wrote:*   

> Ciao a me direi che funziona in maniera costante, lui e' un quadratino che mi sono "appiccicato" in alto a sinistra.
> 
> In basso a destra mi visualizza una batteria contenente una percentuale in basso a sinistra una "presa di corrente" (chiaramente visibile in presenza di cavo di alimentazione attaccato al portatile), di sopra semicerchio che perde colore, ed in mezzo al semicerchio il tempo disponibile di autonomia Power, senza essere attaccatto alla mia "ciabatta" 
> 
> Ciao
> ...

 

grazie...

uso gkrellm che fa praticamete le stesse cose...

volevo solo aveve queste info anche su shell...

cmq grazie mille....

----------

## wildancer

 *randomaze wrote:*   

>  *inspiron wrote:*   1)quando apro aterm da utente mi dice: -bash: [: =: unary operator expected e non mi scrive se l'alimentatore e attaccato o no e la carica della batteria, ma stampa solo (,) 
> 
> Classicamente quell'errore lo da quando dentro le quadre dell'if usi due variabili vuote.
> 
>  *Quote:*   2)quando faccio su mi dice: bash: mybattery: commmand not found 
> ...

 

```
alias su='su -'
```

non ho provato lo script, ma per me troppa roba nel prompt risulta scomoda, soprattutto se non uso x, non avendo framebuffer... In x uso gkrellm per flux e l'applet di gnome quando uso ques't ultimo.

----------

## luna80

a me funziona tutto perfettamente,  avevo un problemino con la scritta chrg e dischrg che quando la batteria era completamente carica ma ancora attaccata all'alimentazione non scriveva niente. (ho aggiunto un opzione al case).

non so se mi è possibile chiederlo qui ma non ho molto ben capito cosa fa il comando "su -" rispetto al "su"...se qualcuno mi può dare un piccolo chiarimento, già che siamo in tema mi farebbe un piacere (ho già fatto un man ma non è che spieghi molto bene)

----------

## wildancer

su - non mantiene le variabili dell'utente precedente (e nemmeno le funzioni, cosa che ho scoperto su questo 3d...) ma legge il tuo /root/.bashrc, /root/.bash_profile /root/.login e /etc/profile  :Smile:  azz scusa, no... su gentoo il .login non mi è mai funzionato...  :Razz: 

----------

## inspiron

 *luna80 wrote:*   

> a me funziona tutto perfettamente,  avevo un problemino con la scritta chrg e dischrg che quando la batteria era completamente carica ma ancora attaccata all'alimentazione non scriveva niente. (ho aggiunto un opzione al case).
> 
> non so se mi è possibile chiederlo qui ma non ho molto ben capito cosa fa il comando "su -" rispetto al "su"...se qualcuno mi può dare un piccolo chiarimento, già che siamo in tema mi farebbe un piacere (ho già fatto un man ma non è che spieghi molto bene)

 

che opzione hai aggiunto al case?

mi sa che ho il tuo stesso problema...

----------

## luna80

 *inspiron wrote:*   

> 
> 
> che opzione hai aggiunto al case?
> 
> mi sa che ho il tuo stesso problema...

 

```

case $ACPI_RESPONSE in

   *$NO_AC_MESG*)

     ACstat="dschg"

     ;;

   *$AC_MESG*)

     ACstat="chg"

     ;;

    *)

     ACstat="charged"

     ;;

 esac 

```

----------

## inspiron

intanto grazie mille a luna80..

ora ho dei problemi solo quando la batteria e al 100%...

intanto questo e la mia function mybattery:

```

function mybattery {

 AC_MESG="charging"

 NO_AC_MESG=" discharging"

 ACPI_RESPONSE=`acpi |cut -d : -f 2 |cut -d , -f 1`

 case $ACPI_RESPONSE in

   *$NO_AC_MESG*)

     ACstat="dschg"

     ;;

   *$AC_MESG*)

     ACstat="chg"

     ;;

     *)

     ACstat="charged"

     ;; 

 esac

 TOP="100%"

 BATT=`acpi | cut -d , -f 2`

 if [ $BATT = $TOP ]; then

   BATstat="top"

 else

   BATstat=`acpi | cut -d , -f 2`

 fi

 echo -n $ACstat,$BATstat

}

```

e penso che il problema sia in     TOP="100%"

infatti se la lascio cosi mi dice:

-bash: [: =: unary operator expected

se invece lo cambio in    TOP:="100%"

mi scrive correttamente che la batteria e al top, ma mi scrive anche il seguente errore:

-bash: TOP:="100%": command not found

come posso risolvere?

----------

## inspiron

ho notato che quando divento root non da piu alcun errore...

come mai?

considerate che /home/marco/.bashrc e idebntico a /root/.bashrc....

----------

