X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;ds=sidebyside;f=bin%2Fbattery.pl;h=0a802e8f31a7605dc37a2dbcfe28408c2dfe9f47;hb=489ef4f059c7315dccca529e279fb15205636e47;hp=407e0bcd178c7c27c465db9a22b3a152320f594c;hpb=2c0bac75e124fe1497b5718abf5b2a13a5de0a00;p=config%2Fdotfiles.git
diff --git a/bin/battery.pl b/bin/battery.pl
index 407e0bc..0a802e8 100755
--- a/bin/battery.pl
+++ b/bin/battery.pl
@@ -1,19 +1,45 @@
#!/usr/bin/perl
+# Copyright (C) 2011-2012 Simon Ruderich
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
use strict;
use warnings;
-my $path = '/sys/class/power_supply/BAT0/uevent';
+if (scalar @ARGV != 1 and (scalar @ARGV != 2 or not $ARGV[0] =~ /-[st]/)) {
+ print STDERR "Usage: $0 [-s | -t] \n";
+ print STDERR "\n";
+ print STDERR "Normally this is /sys/class/power_supply/BAT*.\n";
+ exit 1;
+}
+if (scalar @ARGV == 1) {
+ @ARGV = ('', $ARGV[0]);
+}
+
+my $path = "$ARGV[1]/uevent";
# No battery available.
-if (! -e $path) {
+if (not -e $path) {
+ print STDERR "'$path' not found.\n";
exit 1;
}
-my $screen_mode = (defined $ARGV[0] and $ARGV[0] eq '-s');
-my $tmux_mode = (defined $ARGV[0] and $ARGV[0] eq '-t');
+my $screen_mode = ($ARGV[0] eq '-s');
+my $tmux_mode = ($ARGV[0] eq '-t');
my %battery;
@@ -22,7 +48,13 @@ while (<$file>) {
/^POWER_SUPPLY_([A-Z_]+)=(.+)$/;
$battery{$1} = $2;
}
-close $file;
+close $file or die $!;
+
+# New names ...
+if (defined $battery{ENERGY_NOW}) {
+ $battery{CHARGE_NOW} = $battery{ENERGY_NOW};
+ $battery{CHARGE_FULL} = $battery{ENERGY_FULL};
+}
my $charge = int($battery{CHARGE_NOW} / $battery{CHARGE_FULL} * 100);
@@ -38,6 +70,7 @@ if ($screen_mode) {
}
print "\005{+$color}$charge%\005{-}\n";
+
# Same in tmux mode.
} elsif ($tmux_mode) {
my $color;
@@ -51,7 +84,7 @@ if ($screen_mode) {
print "#[fg=$color,bold]$charge%#[default]\n";
-# Just text output.
+# Plain text output.
} else {
print "$charge%\n";
}