GeekTool is a great app for customizing your Desktop and making your workspace your own, and we’ve already covered some of the ways you can put GeekTool to work. Today we’re going to look at how to put a calendar on your Desktop with GeekTool, and because GeekTool is all about customization, we’ll talk about how to get just the calendar you want.

What You'll Need

First we’ll create a really simple calendar on your Desktop. Not only is this a useful little calendar to have, but creating this very basic calendar will introduce you to the steps involved in adding more complicated geeklets to your Desktop. After we’re comfortable creating a geeklet, we’ll customize the calendar and then learn how to add events from the Calendar app to the Desktop with GeekTool.

The Simple Calendar

This little calendar won’t pull any of your events or anything like that; instead, this one is just going to give you the days of the month as a quick reference. This is useful if you need to quickly find out what day of the week April 22 falls on or what’s the date next Friday without popping open your main calendar.

You’ll start by dragging a new shell geeklet to your desktop, and you’ll see this is how we’re going to begin all of our calendar geeklets. (If you have any trouble getting a new geeklet onto your Desktop, skip ahead to the troubleshooting section at the end.)



Grab the Shell icon and drag it to your desktop, creating a new geeklet. Grab the Shell icon and drag it to your desktop, creating a new geeklet.

There’s a lot going on inside your new geeklet, but to start, we’re only interested in the Command field. Type cal into the Command field and hit ENTER. The calendar for the current month will magically appear on your Desktop.



Lookout for the Command field. This is where you tell your geeklet what to do. Lookout for the Command field. This is where you tell your geeklet what to do.

The calendar won’t look just right, yet, though. You’re going to need to adjust the font to something monospace, and this will be the case for all of our grid calendars. I'm using Menlo for all of my preview screen shots, but there are several other monospace fonts that come standard in Mac OS. You can scroll through your own and find something that looks good, or try searching for free monospace or fixed-width fonts.



Your calendar won't look great to start, but we can fix that. Your calendar won't look great to start, but we can fix that.

The default color for your calendar is black, but you can change this in your geeklet’s font and color properties. If your wallpaper is textured, your calendar may not be visible no matter what color you use, so change your geeklet’s background color and adjust the opacity to get it looking just right.



Now we're starting to change the visual properties of the calendar. Now we're starting to change the visual properties of the calendar.

Also remember to set a reasonable refresh rate, as you probably don’t want GeekTool constantly updating and refreshing itself. Geektool works in seconds, which may be a bit awkward if you’re thinking in minutes, but if you want your calendar to refresh every fifteen minutes, enter 900 seconds. Every five minutes is only 300 seconds.

Step 1. Highlighting the Date

That calendar’s great and all, but suppose you want to know the date, two. Sure, you’ve probably got your date and time up in your menu bar, but who wants to look all the way up there? More practically, highlighting the date in your calendar helps you to orient yourself in the week and month.

To create a calendar with the current day of the month highlighted, drag a new shell geeklet to your desktop and enter the code below into the Command field.

Again, you’ll need to select a monospace font and adjust your font color and geeklet background to suit your wallpaper. You won’t be able to adjust the highlight color using the font and color tools, though, and maybe you just don’t jam with the default green the geeklet uses to highlight the date. That’s okay, because we can change that, too.

Find the spot in the code that looks like this:

That 32 is what’s telling GeekTool to give you a green highlight color, and that’s the number you’re going to have to change. You don’t have a lot of options for your highlight color, but here they are:

Black, 30

Red, 31

Green, 32

Yellow, 33

Blue, 34

Pink, 35

Cyan, 36

White, 37

There’s not a lot of nuance there, but at least you’re not stuck with LED green. Be careful when you’re updating the color because a misplaced 35 for pink will leave you with a broken geeklet. If that happens, just delete your geeklet and start over, making sure you place your color code in the right spot this time.

Highlight the current date. Highlight the current date. Step 2. Next Month’s Calendar You’ve got your calendar and the today's date is highlighted. Suppose that it’s the last day of the month and you want to see what’s happening in two weeks. Bummer, because that cal command only shows you the calendar for the current month. Well, let’s add next month’s calendar, too, then. Drag a new shell geeklet to the Desktop and enter the code below into the Command field.

Say you want the calendar for two months out, too. Just edit the spot in the code where it says “+1m” to get another month. It will look like this:

Each month will have to be its own geeklet, but you can keep adding onto your calendar to get the subsequent months. Remember to set the font to a monospace font and change all your other font and color preferences accordingly.



Line up two geeklets to get the current and next months' calendars. Line up two geeklets to get the current and next months' calendars.

Step 3. Current Year Calendar

You’ve gotten up to “+11m” on that last calendar, and you’re thinking, there’s got to be a better way. If you want a full year on your Desktop, there is. Here’s the code.

This calendar will highlight the date as we did in the monthly calendar above. It’s the same method for changing the highlight color here, too. Just refer to the list of colors we used before.



Adjust the size of your geeklet as necessary to fit your year calendar. Adjust the size of your geeklet as necessary to fit your year calendar.

Your calendar probably doesn’t fit inside the borders of your shell geeklet, and that won’t change unless you do something. Grab the resize tool at the corner of your geeklet and drag it around until it’s the correct size and shape to hold the entire year. You may need to resize again after you update your font.

GeekTool and the Mac Calendar App

Now you’ve got a calendar (or many calendars) on your Desktop but what you really want is your own calendar with your scheduled events. We’ll look at how to put your calendar from the Mac OS X Calendar app on your Desktop.

To use Calendar with GeekTool, you''ll first need to install icalBuddy. Download and unzip icalBuddy, and locate the icalBuddy folder. Double-click on the install.command script to get started. There is a readme file and FAQ inside the icalBuddy folder if you run into any trouble or have any questions. Once the install is completed, you’re ready to go.



icalBuddy will open Terminal and install from there. Just follow the prompts. icalBuddy will open Terminal and install from there. Just follow the prompts.

Back inside GeekTool, drag a new shell geeklet to the Desktop and paste the following code into the Command field:

That’s sort of the base unit of icalBuddy and what we’ll be building on. If you don’t have any events today, though, you won’t see anything. Try adding “+NUM” where NUM is an integer, so your code for a full week would look like this:



Your calendar will look like this. Nice to have, but not great. Yet. Your calendar will look like this. Nice to have, but not great. Yet.

Which is nice and all, but now you’ve just got a big pile of events cluttering up your desktop. We can organize those with some modifiers.

Step 1. Sort by Calendar

If you have a lot of different calendars, you may want to split those up, especially if you have work calendars mingling with your home calendars. To give them all some breathing space, you’ll use the separateByCalendar option.



Sort your events by which calendar they fall into. Sort your events by which calendar they fall into.

Step 2. Sort by Date

Perhaps you don’t mind your calendars getting a bit jumbled up or you only have one calendar anyway, but you really would like all of your calendar events sorted out by date. In that case, use the separateByDate option. (Note: These two commands will not stack; you can use one or the other but not both.)



Or sort your events by date. Or sort your events by date.

Step 3. Format Your Events

Now that you’ve got everything organized how you like it, it’s time to start making those entries look the way you want. Try noCalendarNames (-nc) to remove the name of the calendar from the end of each event, giving a much cleaner look. Remove any events that have already occurred today with -n. I don’t like the relative dates, like tomorrow and the day after, so I’m going to add -nrd, and I want to see empty days, so I’ll use -sed. So far, our code looks like this:



Change how your events are presented. Change how your events are presented.

I’m not a huge fan of how the dates are formatted, but I can change that with the -df option. Once I’ve gotten my dates how I want them, I just need to paste the below into my geeklet Command field:



Use the icalBuddy options to customize the date. Use the icalBuddy options to customize the date.

There are a lot more options for using icalBuddy with GeekTool, and you can check out all the further customizations at the icalBuddy Manual.

Step 4. Finishing Up

You’re still not done, though. Unless you jumped ahead on your own, your new geeklet is still constantly refreshing, and that’s not great. As before, set your geeklet’s refresh rate to something reasonable, and remember that GeekTool works in seconds.

Unlike the previous calendars that relied on a grid format, this is really just a list of your upcoming events. That means there’s no reason you have to stick to a monospace font here. Go crazy, put everything in 18pt Curlz, whatever you want to do. Set your colors, and you’re done.

Troubleshooting

Don’t try to combine these geeklets. It takes more than slapping the code from one geeklet into another to get them to work together. If you like two or more of our calendar geeklets and want them on your Desktop, create separate geeklets for each. You can then arrange them on your Desktop to look like a single, cohesive whole. When you’re done and exit GeekTool, all of the borders around your geeklets, which can admittedly make everything seem like a mess, will disappear.

If you find that GeekTool is causing your computer to run slow, check the refresh rate of your geeklets. Too many geeklets refreshing too often may cause problems. Setting a longer time between refreshes may reduce the strain on your computer’s resources.



Enter a refresh rate here. Enter a refresh rate here.

Geektool and Mountain Lion

It’s possible that GeekTool just doesn’t seem to work at all for you. It didn’t work for me. I did a complete uninstall and then downloaded it again from the Mac App Store. Nothing doing.

For some Mountain Lion and even a few Lion users, GeekTool acts up. Some (though not all users) will be unable to drag a new geeklet of any type to the Desktop. The geeklet box just snaps back to the GeekTool window. Importing a geeklet presents similar problems as they’ll get errors that GeekTool can’t open that type of file.

Mountain Lion and Lion users who have trouble with GeekTool can try the Experimental GeekTool Build for Lion. It should solve the drag-and-drop issue. You may still run into errors when attempting to import a downloaded geeklet, though. If so, right-click on the geeklet file and select Get Info. Under Open With, select GeekTool Helper (not GeekTool itself) and click the Change All button to set that as the default.



If you have problems opening and importing geeklets, change how they're opened. If you have problems opening and importing geeklets, change how they're opened.

Final Thoughts

There are many ways in which GeekTool can make your Desktop look great and create a really nice environment in which to work. What I love most about GeekTool, though, is how well it can aid in productivity. With a few tricks, you can have the events of your day or week laid out for you using GeekTool. Placing everything you need so close at hand saves time and keeps you focused on your most important projects.

Do you have any favorite productivity GeekTool scripts? There are certainly lots of fun clocks, calendars, and monitoring tools to customize your workspace. Or maybe you prefer to use something other than Geektool. Let us know in the comments!