For those who don't use a status bar, I have a perl
script that does a similar thing but it prints the AC
and battery status directly onto the screen for 3
seconds using the xosd libraries.  I have the scipt
hot-keyed to Ctrl-Alt-Shift-P for power.

I also have a script that shows network status, ie.
ping time for all interfaces and link-quality  for
wireless ones.  A third script shows date and time. 
these are hot-keyed to N and D for network and date.

All the scripts are in 
http://www.cs.berkeley.edu/~kamin/scripts/ 



--- Jason Green <[EMAIL PROTECTED]> wrote:

> Bas Kok wrote:
> 
> >Hello ion-users,
> >
> >I added a 'meter' to the statusbar of ion3 for
> displaying my laptop's
> >battery status. I'm sending it to the list, maybe
> it's actually useful
> >for others as well.
> >
> >At the moment it displays:
> >
> >  * percentage of battery remaining
> >  * an estimation of the remaining time until the
> battery is fully
> >    (dis)charged (depending on the current state,
> e.g. if it's charging or
> >    not)
> >  * a 'graphical' bar showing the battery capacity
> >
> >The output looks like this:
> >
> >  battery: 43% [>>>>------] 01:23
> >  
> >
> 
> Aah well done, I've been wanting one of those...
> 
> I've made a few changes though, there where a couple
> of issues.
> 
> firstly you didn't register_meter properly, the last
> parameter is meant 
> to be a string that shows the template.
> 
> Secondly, when the batter is fully charged ion was
> freezing due to a 
> divide by 0 error. So I added a check to see if the
> batter is "charged", 
> which also updates the bar to look like 
> [=========], since it is 
> neither < nor >.
> 
> j
> 
> 
> > --
> -- Ion statusbar extension configuration file
> -- 
> 
> -- Bas Kok <[EMAIL PROTECTED]> 20041018 
> -- battery information displayed in statusbar
> 
> -- reads contents of a file in /proc and returns a
> hash containing
> -- values
> --
> local function get_proc(proc_file)
>     local proc_info = {}
> 
>     -- parse /proc information for the first battery
> managed by acpi
>     local f = io.open(proc_file, 'r')
>     for l in f:lines() do
>       local _, _, field, value = string.find(l,
> '^([^:]*):%s*(.*)')
>       if field then
>           proc_info[field] = value
>       end
>     end
> 
>     return proc_info
> end
> 
> --
> -- return a string containing battery information
> --
> local function get_battery_info()
> 
>     -- put battery proc information in the batt hash
>     local batt =
> get_proc('/proc/acpi/battery/BAT1/info')
>     for key,value in
> get_proc('/proc/acpi/battery/BAT1/state') do
>         batt[key] = value
>     end
> 
>     -- determine if laptop is charging or
> discharging
>     local charging = batt["charging state"]
> 
>     -- compute the percentage of battery power
> remaining
>     local _, _, current =
> string.find(batt["remaining capacity"], '^(%d*)')
>     local _, _, max = string.find(batt["design
> capacity"], '^(%d*)')
>     -- local _, _, max = string.find(batt["last full
> capacity"], '^(%d*)')
>     local percentage = 100*current/max
> 
>     -- create a bar picturing the battery state
>     local bar = "["
>     if charging == "charging" then
>       ch=">"
>     elseif charging == "charged" then
>       ch="="
>     else
>       ch="<"
>     end
>     for i = 1, percentage/10 do bar = bar .. ch end
>     for i = percentage/10, 10 do bar = bar .. "-"
> end
>     bar = bar .. "]"
> 
>     -- compute the remaining time until battery is
> empty
>     local _, _, rate = string.find(batt["present
> rate"], '^(%d*)')
>     local minutes = 0
>     local hours = 0
>     if charging == "charged" or rate == 0 then
>       minutes = 0
>     elseif charging == "charging" then
>         minutes = 60*(max-current)/rate
>     else
>         minutes = 60*current/rate
>     end
>     while minutes >= 60 do
>         hours = hours + 1
>       minutes = minutes - 60
>     end        
> 
>     return string.format("%d%% %s %.2d:%.2d",
> percentage, bar, hours, minutes)
> end
> 
> ext_statusbar.register_meter('battery',
> get_battery_info, '100% [==========] 00:00')
> 
> -- Configure format and updating
> ext_statusbar.set{
>     -- ISO-8601 date format
>     --date_format='%Y-%m-%d %H:%M',
>     -- Finnish date format
>     --date_format='%d.%m.%Y %H:%M'
>     -- Locale date format (usually shows seconds,
> which would require
>     -- updating rather often and can be distracting)
>     --date_format='%c',
> 
>     -- Update interval in seconds
>     --update_interval=10,
>     
>     -- Mail checking interval
>     --mail_interval=60,
>     
>     -- Template. Tokens %string are replaced with
> the value of the 
>     -- corresponding meter. Currently supported
> meters are:
>     --   %date     date
>     --   %load     load average
>     --   %mail_new    new mail count
>     --   %mail_unread unread mail count
>     --   %mail_total  total mail count
>     template="[ %date || load: %load || battery:
> %battery ]",
> }
> 
> 
> -- Create a statusbar
> ext_statusbar.create{
>     -- First screen, bottom left corner
>     screen=0,
>     pos='bl',
> }
> 



                
_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
http://vote.yahoo.com

Reply via email to