From 705c4fe91473507d6c89e4e63123c7b6b30a9048 Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Wed, 15 Jun 2011 20:20:57 +0200 Subject: [PATCH] bin/temperature.pl: Add. --- bin/temperature.pl | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100755 bin/temperature.pl diff --git a/bin/temperature.pl b/bin/temperature.pl new file mode 100755 index 0000000..e342dfd --- /dev/null +++ b/bin/temperature.pl @@ -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"; +} -- 2.44.1