diff options
Diffstat (limited to 'lib/Battery.pm')
-rw-r--r-- | lib/Battery.pm | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/lib/Battery.pm b/lib/Battery.pm deleted file mode 100644 index 57de267..0000000 --- a/lib/Battery.pm +++ /dev/null @@ -1,90 +0,0 @@ -package Battery; -use strict; -use warnings; -use 5.016; -use Gtk2; - -sub new { - my ($class)=@_; - - my $self = bless {},$class; - - my $window = Gtk2::Window->new('toplevel'); - $window->set_accept_focus(0); - $window->set_decorated(0); - $window->set_has_frame(0); - $window->set_skip_pager_hint(1); - $window->set_skip_taskbar_hint(1); - $window->set_type_hint('utility'); - $window->set_default_size(300,25); - $window->set_resizable(1); - $window->set_name('dakkar-battery'); - $window->set_wmclass('dakkar-battery','dakkar-battery'); - - $self->{w}=$window; - - my $bar = Gtk2::ProgressBar->new(); - $bar->set_orientation('left-to-right'); - $bar->set_name('dakkar-battery-bar'); - $self->{b}=$bar; - - $window->add($bar); - - $window->signal_connect(delete_event => \&quit); - - Glib::Timeout->add(1000,\&update,$self); - - return $self; -} - -sub show { - $_[0]->{w}->show_all; -} - -sub quit { - Gtk2->main_quit; -} - -sub get_battery_stats { - open my $fh,'<','/sys/class/power_supply/BAT1/uevent'; - my %ret; - while (my $line=<$fh>) { - chomp $line; - my ($name,$value) = $line =~ m{\A POWER_SUPPLY_(.*?) = (.*) \z}x; - $ret{lc($name)}=$value; - } - return \%ret; -} - -sub _format_time { - my ($t) = @_; - my $h=int($t); - my $m=int(($t-$h)*60); - return sprintf q{%dh%02d},$h,$m; -} - -sub update { - my ($self) = @_; - - my $bs=get_battery_stats; - my $e=$bs->{energy_now}/$bs->{energy_full}; - my $txt=''; - if ($bs->{power_now}) { - my $t=$bs->{energy_now}/$bs->{power_now}; - my $tot=$bs->{energy_full}/$bs->{power_now}; - $txt = sprintf '%s/%s ', - _format_time($t), - _format_time($tot); - $self->{b}->set_fraction($t/$tot); - } - else { - $self->{b}->set_fraction($e); - } - $txt .= sprintf '%.0f%%', 100*$e; - - $self->{b}->set_text($txt); - - return 1; -} - -1; |