X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=bin%2Fbattery.pl;h=d5aced9064668c417d6cce92ff379a7ecc9a2747;hb=8f24a1138ad378038239e8d0cb9619864f7ca026;hp=6a9ce2cbb21f55c1799cf6bbfc7cfee04fa0d4aa;hpb=ebdf67298438e5c29550f6e3020b0b313ad50777;p=config%2Fdotfiles.git
diff --git a/bin/battery.pl b/bin/battery.pl
index 6a9ce2c..d5aced9 100755
--- a/bin/battery.pl
+++ b/bin/battery.pl
@@ -1,28 +1,60 @@
#!/usr/bin/perl
+# Copyright (C) 2011-2013 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) {
- exit;
+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;
-open my $file, '<', $path;
+open my $file, '<', $path or die $!;
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";
}