From 125d53e50998915e17df5593f78955f0f7355278 Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 7 May 2013 14:24:53 +0100 Subject: move up one dir --- battery | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 battery (limited to 'battery') diff --git a/battery b/battery new file mode 100755 index 0000000..2348d6a --- /dev/null +++ b/battery @@ -0,0 +1,75 @@ +#!/home/dakkar/perl5/perlbrew/perls/perl-5.16.3/bin/perl +use strict; +use warnings; +use 5.016; +use Gtk2 -init; + +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'); + +my $bar = Gtk2::ProgressBar->new(); +$bar->set_orientation('left-to-right'); +$bar->set_name('dakkar-battery-bar'); + +$window->add($bar); + +$window->signal_connect(delete_event => \&quit); + +Glib::Timeout->add(1000,\&update); + +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 $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); + $bar->set_fraction($t/$tot); + } + else { + $bar->set_fraction($e); + } + $txt .= sprintf '%.0f%%', 100*$e; + + $bar->set_text($txt); + + return 1; +} + +$window->show_all; + +Gtk2->main; -- cgit v1.2.3