From 8e1679b00825aee0f208ce363734769dd93c5ac1 Mon Sep 17 00:00:00 2001 From: dakkar Date: Mon, 6 May 2013 18:04:16 +0100 Subject: gui --- .gitignore | 5 ++++ battery.pl | 20 --------------- lib/Battery.pm | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ script/battery | 10 ++++++++ 4 files changed, 96 insertions(+), 20 deletions(-) create mode 100644 .gitignore delete mode 100644 battery.pl create mode 100644 lib/Battery.pm create mode 100644 script/battery diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..10d10d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*~ +/Makefile +/blib/ +/pm_to_blib + diff --git a/battery.pl b/battery.pl deleted file mode 100644 index e14fe80..0000000 --- a/battery.pl +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; -use 5.016; - -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; -} - -my $bs=get_battery_stats; -printf "Energy: %.2f%%\n",100*$bs->{energy_now}/$bs->{energy_full}; -printf "Time: %.2f / %.2f\n",$bs->{energy_now}/$bs->{power_now}, - $bs->{energy_full}/$bs->{power_now}; diff --git a/lib/Battery.pm b/lib/Battery.pm new file mode 100644 index 0000000..3936b9b --- /dev/null +++ b/lib/Battery.pm @@ -0,0 +1,81 @@ +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); + + $self->{w}=$window; + + my $bar = Gtk2::ProgressBar->new(); + $bar->set_orientation('left-to-right'); + $bar->set_pulse_step(0.01); + $self->{b}=$bar; + + $window->add($bar); + + $window->signal_connect(delete_event => \&quit); + + Glib::Timeout->add(1,\&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%d},$h,$m; +} + +sub update { + my ($self) = @_; + + my $bs=get_battery_stats; + my $e=$bs->{energy_now}/$bs->{energy_full}; + my $t=$bs->{energy_now}/$bs->{power_now}; + my $tot=$bs->{energy_full}/$bs->{power_now}; + + $self->{b}->set_text( + sprintf '%s/%s %.0f%%', + _format_time($t), + _format_time($tot), + 100*$e + ); + $self->{b}->set_fraction($t/$tot); +} + +1; diff --git a/script/battery b/script/battery new file mode 100644 index 0000000..cddea55 --- /dev/null +++ b/script/battery @@ -0,0 +1,10 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.016; +use Gtk2 -init; +use Battery; + +my $w=Battery->new(); +$w->show; +Gtk2->main; -- cgit v1.2.3