Tuesday, March 17, 2009

GeekTool

I just found GeekTool on Saturday and I can't believe it's real! There are just so many cool things you can do with it from displaying the date all the way through to rtm todos and system stats.

First of all, credit where credit is due: the wallpaper at DeviantArt from ~eonik, the basic idea from rprathap, and the (currently free) United Stencil font from House Industries(thanks for the free font guys, it really made my desktop that much better. It would've been nice to get Warehouse though.).
~eonik: I hope you don't mind but I did some amateur editing of the wallpaper so my iTunes information would fit(I cut the window frame out between the words "Of" and "The" in the track info section).

Anyway, here's the screenshot:

(white lines, if present at a number, point to where the element actually is except *23)

And the breakdown:
*1=Space name(Hyperspaces: let me put this whereever and not just the corners or centre!)
*2=Day
*3=Month
*4=Todo list(more on that below)
*5=Outdoor temperature(Cached if I'm not on the internet. Sourced from NOAA.)
*6=Unreal mail count(see below. Sourced from Gmail.)
*7=External IP(Sourced from dyndns.org)
*8=Internal IP(prefixed with type: E for ethernet, A for airport. Includes both E and A if both are connected)
*9=Free space on internal drive|external drive
*10=Process using the most CPU and it's CPU usage
*11=Process using the most RAM and it's RAM usage(as percent of total)
*12=CPU usage
*13=Adium contact list(I've left "me" in there so you can see the style)
*14=Left fan speed
*15=Right fan speed
*16=RAM usage
*17=Whether Time Machine is backing up or not(it just shows up as a period and isn't working right now EDIT: it works!)
*18=Uptime(and it's properly parsed too :). It'll show days+hours+minutes or just hours+minutes)
*19=Time(12 hour, no AM/PM shown)
*20=Current Volume(expands to the left+right)
*21=Current CPU temp in C
*22=iTunes track information(Title/Album/Artist)
I saved the nicest looking one for last
*23=iTunes track progress meter(points to maximum width of element, see below)

TODO list:
My script will display all items from todotxt first(if they exist) and then it will grab all my todos from Remember The Milk and display those if they exist(I don't have any yet. Also, it caches them if I'm offline) and then it will display all iCal events from now until the end of the day. See EDIT3 below.

Unread mail count:
I also use the script that generates this item as a Growl Gmail notifier. The script *always* outputs how many unread mail messages I have and it'll also send to Growl how many new messages are in the inbox *since the last check*. That last point is key. If I don't do that check I'll get a Growl popup every 10 seconds. On top of that, the value is cached so if I'm offline, it'll still work.

iTunes track progress meter:
This one is simple and beautiful. All it is is an applescript that displays "x" number of underscores to a maximum of "y" as related to the percentage currentTrackTime/totalTrackTime. I determined "y" through trial and error. The really nice thing about this one is how subtle it is. It sits nestled in the groove between the wall panel and the window frame. Unless you know what to look for, you're not going to see it. See that red circle on the screenshow? Inside that circle there's a light gray line just above the window. That line extends all the way to the left arrow of the thin white line underneath it. It's maximum is at the right end of that arrowed line.


My hope is that the productivity portions of this desktop will make me a more efficent person and make it easier for me to GTD.

EDIT: If anyone wants any of the scripts I used to get the information, just comment on this post and I'll comment the contents of the scripts. Some of the tougher ones were RTM, weather, fan speeds, and cpu temp. I used smc(modded the source a bit to make parsing easier. it comes with many fanspeed/temp monitoring apps so if you have something like smcFanControl you already have it and the source.), perl, python, bash, curl, xml_pp(from xmltwig), sed, awk, head, tail, grep, and probably a few other utils.
EDIT2: I just integrated twitter into quicksilver with growl notifications. Now I can manage RTM without ever having to open a web page.
EDIT3: On a related note, I just removed todotxt from the todo list because everything is managed my RTM now.