]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - bin/battery.pl
bin/battery.pl: display charging status
[config/dotfiles.git] / bin / battery.pl
index 0bdaae04c1d8829a33a0edaf2e8a4fb709ae5289..c7e812ea505798b07702cd6e5567be56c58b8991 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# Copyright (C) 2011-2012  Simon Ruderich
+# 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
@@ -20,15 +20,26 @@ 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] <path/to/device>\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;
 
@@ -46,6 +57,10 @@ if (defined $battery{ENERGY_NOW}) {
 }
 
 my $charge = int($battery{CHARGE_NOW} / $battery{CHARGE_FULL} * 100);
+my $charging = '';
+if ($battery{STATUS} eq 'Charging' or $battery{STATUS} eq 'Full') {
+    $charging = '^';
+}
 
 # GNU screen mode with colors: 0-20 red, 20-40 yellow, 40-100 green.
 if ($screen_mode) {
@@ -58,7 +73,7 @@ if ($screen_mode) {
         $color = 'b g';
     }
 
-    print "\005{+$color}$charge%\005{-}\n";
+    print "\005{+$color}$charge%\005{-}$charging\n";
 
 # Same in tmux mode.
 } elsif ($tmux_mode) {
@@ -71,9 +86,9 @@ if ($screen_mode) {
         $color = 'green';
     }
 
-    print "#[fg=$color,bold]$charge%#[default]\n";
+    print "#[fg=$color,bold]$charge%#[default]$charging\n";
 
 # Plain text output.
 } else {
-    print "$charge%\n";
+    print "$charge%$charging\n";
 }