Move to Apache License
[amazing.git] / lib / amazing / widgets / battery.rb
blobd7a755f60b3a5ea0ee519a2d07bf0d7ebd956ba1
1 # Copyright 2008 Dag Odenhall <dag.odenhall@gmail.com>
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 #    http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 require 'amazing/widget'
16 require 'amazing/proc_file'
18 module Amazing
19   module Widgets
20     class Battery < Widget
21       description "Remaining battery power in percentage"
22       option :battery, "Battery number", 1
23       field :state, "Charging state, :charged, :charging or :discharging"
24       field :percentage, "Power percentage"
25       default { @percentage.to_i }
27       init do
28         batinfo = ProcFile.parse_file("acpi/battery/BAT#@battery/info")[0]
29         batstate = ProcFile.parse_file("acpi/battery/BAT#@battery/state")[0]
30         remaining = batstate["remaining capacity"].to_i
31         lastfull = batinfo["last full capacity"].to_i
32         @state = batstate["charging state"].to_sym
33         @percentage = (remaining * 100) / lastfull.to_f
34       end
35     end
37     private
39     def charged?
40       @state == :charged
41     end
43     def charging?
44       @state == :charging
45     end
47     def discharging?
48       @state == :discharging
49     end
50   end
51 end