]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
bin/temperature.pl: Add.
authorSimon Ruderich <simon@ruderich.org>
Wed, 15 Jun 2011 18:20:57 +0000 (20:20 +0200)
committerSimon Ruderich <simon@ruderich.org>
Wed, 15 Jun 2011 18:20:57 +0000 (20:20 +0200)
bin/temperature.pl [new file with mode: 0755]

diff --git a/bin/temperature.pl b/bin/temperature.pl
new file mode 100755 (executable)
index 0000000..e342dfd
--- /dev/null
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+
+
+use strict;
+use warnings;
+
+
+my $temperature_path = '/sys/devices/virtual/hwmon/hwmon0/temp1_input';
+my $critical_path    = '/sys/devices/virtual/hwmon/hwmon0/temp1_crit';
+
+# No temperature information available.
+if (! -e $temperature_path || ! -e $critical_path) {
+    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 $temperature;
+my $critical;
+
+my $file;
+open $file, '<', $temperature_path or die $!;
+$temperature = <$file>;
+close $file;
+open $file, '<', $critical_path or die $!;
+$critical = <$file>;
+close $file;
+
+my $value = int($temperature / 1000);
+my $risk  = ($critical - $temperature)/$critical;
+
+# GNU screen mode with colors.
+if ($screen_mode) {
+    my $color;
+    if ($risk < 0) {
+        $color = 'br r'; # bold reverse
+    } elsif ($risk < 0.1) {
+        $color = 'b r';
+    } elsif ($risk < 0.2) {
+        $color = 'b y';
+    } else {
+        $color = 'b g';
+    }
+
+    print "\005{+$color}$value\005{-}\n";
+
+# Same in tmux mode.
+} elsif ($tmux_mode) {
+    my $color;
+    my $style = 'bold';
+    if ($risk < 0) {
+        $color = 'red';
+        $style = 'reverse'; # blink doesn't work for me
+    } elsif ($risk < 0.1) {
+        $color = 'red';
+    } elsif ($risk < 0.2) {
+        $color = 'yellow';
+    } else {
+        $color = 'green';
+    }
+
+    print "#[fg=$color,$style]$value#[default]\n";
+
+# Plain text output.
+} else {
+    print "$value\n";
+}