summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2013-05-06 18:04:16 +0100
committerdakkar <dakkar@thenautilus.net>2013-05-06 18:04:16 +0100
commit8e1679b00825aee0f208ce363734769dd93c5ac1 (patch)
tree73439709f56ae05a848ce346efb285087b184897
parentget values (diff)
downloadbattery-8e1679b00825aee0f208ce363734769dd93c5ac1.tar.gz
battery-8e1679b00825aee0f208ce363734769dd93c5ac1.tar.bz2
battery-8e1679b00825aee0f208ce363734769dd93c5ac1.zip
gui
-rw-r--r--.gitignore5
-rw-r--r--battery.pl20
-rw-r--r--lib/Battery.pm81
-rw-r--r--script/battery10
4 files changed, 96 insertions, 20 deletions
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;