Battery icon with awesome vicious widget

May 18, 2010 by Tomás Solar Castro   comments (0) - Visitas: 3302

vicious, widget, icon, battery, awesome

El código no es de los mejores, pero se ve bonito en la pantalla... hahaha

agreguen algo así en su rc.lua, y por supuesto, elijan uds mismos sus íconos :)

--iconos para baticon widget
beautiful.widget_baticon_bat1 = "/home/tom/.config/awesome/icons/battery/bat1.png"
beautiful.widget_baticon_bat2 = "/home/tom/.config/awesome/icons/battery/bat2.png"
beautiful.widget_baticon_bat3 = "/home/tom/.config/awesome/icons/battery/bat3.png"
beautiful.widget_baticon_bat4 = "/home/tom/.config/awesome/icons/battery/bat4.png"
beautiful.widget_baticon_bat5 = "/home/tom/.config/awesome/icons/battery/bat5.png"
beautiful.widget_baticon_bat6 = "/home/tom/.config/awesome/icons/battery/bat6.png"
beautiful.widget_baticon_bat7 = "/home/tom/.config/awesome/icons/battery/bat7.png"
beautiful.widget_baticon_bat8 = "/home/tom/.config/awesome/icons/battery/bat8.png"
beautiful.widget_baticon_bat9 = "/home/tom/.config/awesome/icons/battery/bat9.png"
beautiful.widget_baticon_bat10 = "/home/tom/.config/awesome/icons/battery/bat10.png"
beautiful.widget_baticon_bat11 = "/home/tom/.config/awesome/icons/battery/bat11.png"

beautiful.widget_baticon_char1 = "/home/tom/.config/awesome/icons/battery/char1.png"
beautiful.widget_baticon_char2 = "/home/tom/.config/awesome/icons/battery/char2.png"
beautiful.widget_baticon_char3 = "/home/tom/.config/awesome/icons/battery/char3.png"
beautiful.widget_baticon_char4 = "/home/tom/.config/awesome/icons/battery/char4.png"
beautiful.widget_baticon_char5 = "/home/tom/.config/awesome/icons/battery/char5.png"
beautiful.widget_baticon_char6 = "/home/tom/.config/awesome/icons/battery/char6.png"
beautiful.widget_baticon_char7 = "/home/tom/.config/awesome/icons/battery/char7.png"
beautiful.widget_baticon_char8 = "/home/tom/.config/awesome/icons/battery/char8.png"
beautiful.widget_baticon_char9 = "/home/tom/.config/awesome/icons/battery/char9.png"
beautiful.widget_baticon_char10 = "/home/tom/.config/awesome/icons/battery/char10.png"

beautiful.widget_baticon_ac = "/home/tom/.config/awesome/icons/battery/ac.png"

--iconos para baticon widget \o/
baticon = widget({ type = "imagebox" })
--baticon.image = image(beautiful.baticon_bat1)
vicious.register(baticon, vicious.widgets.bat, function (widget, args)
                                                  local battery_presentf = io.popen('cat /sys/class/power_supply/BAT0/present ')
                                                  local battery_present = battery_presentf:read("*all")
                                                  battery_presentf :close()

                                                  local rv = { }
                                                  local fd = io.popen( "acpi -b")
                                                  if not fd then return end

                                                  local line = fd:read("*l")
                                                  while line do
                                                     local data = line:match("Battery #?[0-9] *: ([^\n]*)")

                                                     rv.state = data:match("([%a]*),.*"):lower()
                                                     rv.charge = tonumber(data:match(".*, ([%d]?[%d]?[%d]%.?[%d]?[%d]?)%%"))
                                                     rv.time = data:match(".*, ([%d]?[%d]?:?[%d][%d]:[%d][%d])")

                                                     if not rv.state:match("unknown") then break end
                                                     line = fd:read("*l")
                                                  end

                                                  fd:close()

                                                  local battery_status = ""
                                                  battery_status = rv.state
                                                  if battery_status == "discharging" then

                                                     if rv.charge > 95 and rv.charge <= 100 then
                                                        baticon.image = image(beautiful.widget_baticon_bat1)
                                                     elseif rv.charge > 90 and rv.charge < 95 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat2)
                                                     elseif rv.charge >= 80 and rv.charge < 90 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat3)
                                                     elseif rv.charge >= 70 and rv.charge < 80 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat3)
                                                     elseif rv.charge >= 60 and rv.charge < 70 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat4)
                                                     elseif rv.charge >= 50 and rv.charge < 60 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat5)
                                                     elseif rv.charge >= 40 and rv.charge < 50 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat6)
                                                     elseif rv.charge >= 30 and rv.charge < 40 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat7)
                                                     elseif rv.charge >= 20 and rv.charge < 30 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat8)
                                                     elseif rv.charge >= 10 and rv.charge < 20 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat9)
                                                     elseif rv.charge > 5 and rv.charge < 10 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat10)

                                                     elseif rv.charge <= 5 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_bat11)
                                                     end

                                                  elseif battery_status == "charging" then
                                                     if rv.charge > 95 and rv.charge <= 100 then
                                                        baticon.image = image(beautiful.widget_baticon_char1)
                                                     elseif rv.charge > 90 and rv.charge < 95 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char2)
                                                     elseif rv.charge >= 80 and rv.charge < 90 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char3)
                                                     elseif rv.charge >= 70 and rv.charge < 80 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char3)
                                                     elseif rv.charge >= 60 and rv.charge < 70 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char4)
                                                     elseif rv.charge >= 50 and rv.charge < 60 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char5)
                                                     elseif rv.charge >= 40 and rv.charge < 50 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char6)
                                                     elseif rv.charge >= 30 and rv.charge < 40 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char7)
                                                     elseif rv.charge >= 20 and rv.charge < 30 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char8)
                                                     elseif rv.charge >= 10 and rv.charge < 20 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char9)
                                                     elseif rv.charge > 5 and rv.charge < 10 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char10)

                                                     elseif rv.charge <= 5 then
                                                    
                                                        baticon.image = image(beautiful.widget_baticon_char10)
                                                     end

                                                  end

                                                    if battery_present == '0' then
                                                       baticon.image = image(beautiful.widget_baticon_ac)
                                                    end
                                                   
                                                   

                                                 end,
                 1, "BAT0")

y así se ve: (abajo, lo primero que está a la derecha)

Happy Hacking!