fiddyspence's blog

Hot Shell

I listen to a lot of music when I computer, which quite often means that I don’t hear it when the fans spin up because the shiny aluminium dumb terminal is having a cow because e.g. Spotify helper has gone into a tailspin. Because I spend most of my time in a terminal I thought it would be fun if my shell prompt told me when the thing got too hot. I realised subsequently that OS X has a built in say command, and made it shout that the thing was loud too, just in case red font wasn’t adequate.

Here. Have some bash and some ruby:

This goes into ~/bash_profile

trap 'for i in $(jobs -p); do kill $i; done' EXIT
export OURPORT=$(($RANDOM + 1025))
ruby ~/bin/cpucheck.rb 2> /dev/null &
cputemp ()
    echo $(curl --noproxy '*' -s$OURPORT/)
PS1='\e[31m$([[ $(cputemp) -gt 70 ]] && echo "WARNING: HOT CPU:" && say hot cpu)\e[0m\h:\W \u\$ '

I have a ~/bin directory - this into ~/bin/cpucheck.rb (oh - and install the iStats gem)

require 'sinatra/base'
require 'iStats'
require 'iStats/cpu'
include ::IStats
class CpuServer < Sinatra::Base
  set :port, ENV['OURPORT']
  set :logging, false
  set :traps  , false
  set :server, %w[webrick]
  get '/' do
  run! if app_file == $0

And then when the thing starts to take off:

WARNING: HOT CPU:spenceware:~ fids$