How To Make Your OSX Desktop Awesome With Geektool


geektool logo

Geektool is a program for the Mac that allows you to customize your desktop with far more than just a wallpaper change. With Geektool, you can display live, auto-updating information right on your desktop.

This information you can display ranges from small things like RAM used, CPU currently under load, and uptime since the last restart of the system to complex pieces of information like RSS feeds, twitter lists, and even graphical weather reports! All embedded right into your desktop and each refreshing at an interval you set.

For those of you familiar with using Terminal commands, that is all Geektool needs to work its magic. Any command you can enter into Terminal to return a bit of information can be used in Geektool. Even if you’ve never opened Terminal before, don’t worry. As long as you can copy/paste you can use Geektool.

Geektool does take a little getting used to, but once you do, the customization you can do to your desktop is almost limitless.

Getting Started

The first step is to install Geektool. Head over to the developers page and choose the version that is right for your OS. After the download is complete, unzip the file and drag Geektool into your Applications folder.

Geektool Install

Next, double-click the application and click Open to any warnings that OSX gives you. Geektool will open in a small and simple window. You should see three icons under Geeklets. These are the three different kinds of desktop modifications everything else will be based around.

Geektool Main Window

 

(Note: In earlier versions of Geektool, this is accessed in the System Preferences Pane)

A few housekeeping items to set up before moving forward are checking the launch at login box, the Show in menu bar box, and the Enable box. This will do what they say, and are all helpful to using Geektool long-term.

The most useful Geeklet type is Shell, so that is where we will begin.

So What Is A Geeklet?

Before going any farther, a Geeklet is simply any command added to Geektool, and we will be adding a variety of Geeklets in this post. Shell Geeklets (the ones we will be using in this post) get their information from running a Unix (shell) command and displaying the results on your desktop.

To activate your first Shell Geeklet, simply click and drag the Shell icon onto your desktop from the Geektool window. When you do this, you will see a shadowy-looking box appear and a tall Properties window. The shadow box is your Geeklet and the Properties window is where all the background magic happens. Here is a breakdown of the Properties window:

basics

With that out of the way, here is the first Geeklet for you to try out.

Your First Geeklet

A simple, yet useful Geeklet is uptime. This will show you how long since your last system restart. To use it, simply drag a Shell Geeklet to your desktop and in the Properties window under the Command section, enter the word “uptime” without the quotes and set the refresh rate at 60. (The refresh rate counts in seconds, so 2 minutes would be 120, etc.)

The shadow box will now show your system uptime.

shadow-box-geektool-uptime

 

As you can see, the box above looks a little plain. With Geektool you can adjust font, color, size and other items. For now, We’ll adjust the color, font, and size the make this look a little better.

Geektool Uptime

As you can see, it’s pretty easy to display information just as you want. With this Geeklet done, try creating this one just as you did above:

top -l 1 | awk '/PhysMem/ {print "RAM:\t\tUsed: " $8 " Free: " $10}'

This will show you the used and free RAM you currently have.  If you don’t quite understand what the command above means, that’s OK. Unix commands can be tough to learn. You just need to know for now that it shows your RAM.

Geektool Uptime Display

Once you get this working, set a refresh time of 60 seconds, and make it look a little nicer than it does now.

Geektool Pretty Uptime

Useful Geeklets

Now that you know the basics of how to use Geektool, here are some useful commands that will give you all the information you could want about your computer. Just copy and paste them into the Command field in the Properties window.

Calendar

This one shows a calendar on your desktop with the current day marked off. Make sure to use a fixed-width font with this one or else the days won’t line up correctly. Refresh on this should be high, since it only changes once per day.

cal | sed "s/^/ /;s/$/ /;s/ $(date +%e) / $(date +%e | sed 's/./#/g') /"

Time and Date

These Geeklets will list the day, date, month, and time. Set refresh rates accordingly.

Month

date +%B

Time

date +"%I:%M"

AM/PM

date +"%p"

Date

date +%d

Day

date +%A

Hard Drive

This Geeklet shows the current capacity of your HDD and what percentage you have left.

df -hl | grep 'disk0s2' | awk '{print ""$4"/"$2" free ("$5" used)"}'

 

These just scratch the surface of what Geektool can do, but are a great place to start. With these basic Geeklets, you can make a really integrated-looking desktop. Check out the screen shot below of a desktop only using these Geeklets listed above and a fitting wallpaper.

wallpaper-small

(Click for a larger view)

Wrap-Up

As you can see, Geektool is more than just listing information on your desktop. Geektool is all about showcasing data in a beautiful way. You can keep it simple as in this post, or go extreme and write custom scripts that Geektool can access. This can show iTunes information, daily weather, and even changing images.

Go out and find some inspiration by search for “Geektool” in Google and see what you find. A personal favorite of mine is the Back to the Future Desktop.


Kokou Adzo

Kokou Adzo is a stalwart in the tech journalism community, has been chronicling the ever-evolving world of Apple products and innovations for over a decade. As a Senior Author at Apple Gazette, Kokou combines a deep passion for technology with an innate ability to translate complex tech jargon into relatable insights for everyday users.

3 Comments

Your email address will not be published. Required fields are marked *