Fact GeekTool 3 is applescriptable. You can tell any given shell or image "geeklet" to refresh using applescript. This reduces system load incurred by running GeekTool considerably
Suppose you have an geeklet displaying your unread email subjects. You'd also like to have a count of your unread email somewhere too. Previously, you'd have to have both refresh every x number of seconds. Now, the subjects (or count) geeklet refreshes every x seconds and in the script that is executed by GeekTool there's a line that tells the other geeklet to refresh. Just make sure the geeklet being told to refresh has a refresh time of 0 (previously, this would cause GeekTool to attempt to refresh at every instant but now it just disables automatic refresh).
I'm using this exact situation for both my email and remember the milk geeklets.
Fact iTunes posts track status changes to the distributed notification system. These changes include when the current track changes and when the playing status changes from/to playing/paused/stopped.
Fact crankd will listen for notifications and act upon them. crankd is a piece of software that was written to replace a piece of technology present in 10.4 but eliminated in 10.5.
Caveat crankd doesn't support the notifications iTunes posts out-of-the-box but I've written patches to support the proper notifications and have submitted them to the project (through the issues section).
Caveat this requires root privileges due to this issue. If you can, give yourself sudo with NOPASSWD for launchctl. If you can't, you won't be able to pull this off. I'm not describing or supporting this, there's documentation elsewhere.
Download crankd, then download the version of crankd here.
Install Run the crankd install package. Copy the version you downloaded from this (same as above) issue page into /usr/local/sbin/ replacing the existing crankd. Read comment 1 at the issue page. Do what it says. Read this issue and do what it says.
Now to write the script:
crankd drops title, artist, album, and several other attributes into the environment of a script that it executes. They are appropriately named NAME, ARTIST, ALBUM, etc. Use these to write a script that gets this information to GeekTool somehow. If you want the full list, put a call to env into the script, piping it to a file, then open that file once the script has been executed by crankd.
Sample Geeklet Refresh AppleScripts
refresh image geeklets using url location to choose which geeklets:
tell application "GeekTool"
tell (image geeklets whose image url contains "scheme://some/url") to refresh
end tell
refresh shell geeklets using command to choose which geeklets:
tell application "GeekTool"
tell (shell geeklets whose command contains "some command") to refresh
end tell
refresh image/shell geeklets using name (replace [type] with image or shell as required) to choose which geeklets:
tell application "GeekTool"
tell ([type] geeklets whose name contains "Some Name") to refresh
end tell
This post is just the starting point. I don't have time to provide support for this but I *did* want to get this out there.