GeekTool updated for Panther


I've mentioned before that I'm an avid user of GeekTool, so I was disappointed to find that it was broken in Panther. I sorely missed the little bits of information that got written to my desktop, though my desktop is already pretty rich in information. I'm glad to say that GeekTool has now been updated for Panther and works fine.

I had a nice GeekTool entry which ran an Applescript written by Pete, which listed the mailboxes in Mailsmith with unread messages, and gave the unread message count. This was very handy as Mailsmith doesn't have a message count on the Dock icon like Mail. The only problem I had was that I would forget to disable the script when I wanted to logout or shutdown. As GeekTool runs the script at intervals, it would start up Mailsmith again, and therefore prevent me from logging out. Relying on me to remember to do anything is fraught with danger and disappointment, so I wanted to alter the script to check if Mailsmith was running before it did anything. That turned out to be inexplicably hard1, but I've managed to get it working now.

As Pete has taken down the page on which the original script used to reside, I've reproduced it below (with his permission and my additions) in case anyone else is interested. I'm sure that it would be reasonably easy to adapt it for other email clients, if they have decent scripting support.

global c
on run
  set c to “ “
  set okflag to false
  tell application “System Events”
    if (get name of every process) contains “Mailsmith” ¬
           then set okflag to true
  end tell

if okflag then tell application “Mailsmith” repeat with i from 1 to (count mailboxes) set obj to mailbox i my process_mailbox(obj) end repeat end tell else quit end if return c end run on process_mailbox(mbox) tell application “Mailsmith” set n to name of mbox if n is not “(spam)” then set mcount to (count (messages of mbox ¬ whose seen is false)) if mcount > 0 then set c to c & (n & “ ” & mcount) & (ASCII character 10) end if end if repeat with i from 1 to (count mailboxes of mbox) set obj to mailbox i of mbox my process_mailbox(obj) end repeat end tell end process_mailbox

Note: this character (¬) indicates a soft line wrap. That is, there should be no carriage return between the current and following line.

1 Perhaps not inexplicably — I'm not very good at Applescript.