Quicksilver is a ubiquitous application. Everyone knows about it, and most people use it to bolster their productivity. The application is able to catalog portions of your hard drive to give you instant access to your documents and software. Various plugins extend Quicksilver’s functionality and add more actions (such as calculations, dictionary lookups or scaling images) as well as allow it to index a wider range of files. This system is so powerful, that in two keystrokes it is possible to locate almost any file buried in your hard drive, and two more to perform an action on it such as deleting, renaming, etc. However, due to limited documentation and the application only being a Beta release, writing a plugin remains a mystery to most developers. This article aims to illustrate the steps needed in order to write a working Quicksilver plugin in Xcode and Objective-C. (Python programmers may use PyObjC).
Setting up Xcode
Required Resources
Quicksilver Developer Release
Creating a Quicksilver plugin firstly requires having the developer release of the application installed. This is exactly the same as the normal release, but includes the headers in the Quicksilver frameworks which we’ll need to make extensive use of. The latest version of the developer release is always available at http://getqs.com/dev/, so download it and replace your existing copy of Quicksilver with this application.
Xcode Quicksilver Plugin Project Template
The second resource we’ll make use of is a project template for creating Quicksilver plugins. Although the official download is available from the Quicksilver website, it happens to be very old and neglected and doesn’t work with Xcode 2.1. For this reason, I’ve made available a revised edition that should prove sufficient for creating plugins. Download the plugin template and extract the contents to /Library/Application Support/Apple/Developer Tools/Project Templates/Bundle/.

Make sure you get the whole folder. The complete path to the Quicksilver Plug-in.xcodeproj file should be /Library/Application Support/Apple/Developer Tools/Project Templates/Bundle/Quicksilver Plug-in/Quicksilver Plug-in.xcodeproj.
- In Xcode 3.1+, the project template can go into ~/Library/Application Support/Developer/Shared/Xcode/Project Templates/Bundle/Quicksilver Plug-in.
- For interface development, download the Interface Project Template for Xcode.
Xcode Preferences
Adding Source Trees
We’ve got all the resources we need, but for Xcode to correctly parse the project template we just installed, we need to create a Source Tree that points to the Quicksilver Frameworks directory. In the Xcode Preferences, go to the Source Trees section.
Add a new entry with the setting name as QSFrameworks. Set the path for this item to /Applications/Quicksilver.app/Contents/Frameworks/ or the equivalent.
Now that Xcode is correctly configured, we can start exploring the plugin template and begin to engender amazing Quicksilver plugins.
Before you start writing Your Incredible Plugin™, take a few minutes to familiarize yourself with a some key aspects of Quicksilver plugin development. There are several steps you must take to ensure your plugin is fully compatible and usable by Quicksilver, but once you get these out of the way, it couldn’t be easier to write your plugin’s code.
Also in this series
Info.plist - QSPlugIn
The various sections of Quicksilver plugins, including the basics on how to properly configure your plugin, setup the correct options and settings, and how and where to write your plugin.
Quicksilver Actions
A quick look at QSActions in the Info.plist, followed by our first look at the code needed to get a plugin up and running.
Quicksilver Interface Creation
A thorough guide on the techniques to create a working Quicksilver interface. Includes an Xcode project template to minimize the effort required.
Stay tuned for the next installments in the series.
29 Comments so far
Leave a commentThe download link to the plugin template is something you still need to do.
posted by Leif on February 14, 2007 8:10 pm | Permalink
Thanks!
Really looking forward to next article.
determined by Hjalti on February 14, 2007 10:16 pm | Permalink
I’ve been looking for a tutorial like this for months! I can’t wait for the remaining installments.
voiced by Aaron on February 15, 2007 7:16 am | Permalink
Thanks. I’ve fixed the download link for the Quicksilver plugin template.
divulged by Ankur on February 15, 2007 3:34 pm | Permalink
I don’t really know how to fully program yet, I’ve just opened up XCode a couple of times, messed around with QUartz a bit. Basically Objective-C seemed so unintuitive that I figured it wasn’t worth the effort to figure out. HOWEVER, now that I use quicksilver all the time, and it’s so incredibly badass, I’m actually trying to figure out how to get it to do more of the things I’d like it to do!
SO, I am absolutely dying to see the rest of your tutorial! Thanks a million for taking the time to write it, it may actually get me into real mac programming, something I’ve been dabbling with since Mac OS 7!
published by GanjaManja on March 10, 2007 3:00 am | Permalink
Thanks, GunjaMunja. Objective-C does seem a little awkward, especially if you have a programming background, but it’s just one of those things you get used to.
Thanks a lot for the feedback, I’ll be sure to finish up the next few articles soon.
spoken by Ankur on March 10, 2007 8:07 am | Permalink
What’s the deal man? I’ve been checking this weekly for it to be updated! I want to learn how to make Quicksilver Plugins too.
recorded by Collin Ruffenach on April 5, 2007 6:19 am | Permalink
Sorry Colin, I will post up another few articles sometime soon, but creating interfaces and such requires quite a bit of explanation and planning.
If you’ve gone through the Info.plist setup and played around with writing actions for Quicksilver, you should be able to create any sort of action using regular Obj-C code.
Anyway, please do continue to post feedback, criticism and the like. It really helps. That next article is coming.
disclosed by Ankur on April 5, 2007 9:51 am | Permalink
Has anyone actually managed to create a working plugin using this tutorial? I’ve tried over and over again but it never works. This one does work though. Info.plist is vastly different and code changes are different but it worked 1st time.
Any comments Ankur?
By the way I’m on Tiger (10.4.9) using XCode 2.4.1 and with latest QS release (development)
Calvin.
revealed by Calvin on April 18, 2007 4:35 am | Permalink
Taking a further look at the two tutorials, Ankur you need to be clearer in telling people that the Templates are just that - Templates. Renaming them to the actual items required by QS does a world of good in getting a working plugin.
Calvin.
recorded by Calvin on April 18, 2007 5:16 am | Permalink
Sorry Calvin, adding it in now.
I did have
But I guess that’s too ambiguous.
The QSPlugIn key doesn’t start off as “QSPlugInTemplate”, but most of the registration keys are appended with “Template”.
All fixed!
uttered by Ankur on April 18, 2007 8:45 am | Permalink
/Library/Application Support/Developer/Shared/Xcode/Project Templates/Bundle/Quicksilver Plug-in
is the correct path for Leopard, btw.
voiced by Anonymous on June 4, 2008 8:19 am | Permalink
Thanks to Anonymous for helping point out that the Leopard (or rather Xcode 3.1+) path for Bundles has changed — but I don’t have a Developer folder under App Support, it’s only under App Support/Apple/Developer Tools. If I manually create this directory hierarchy it’s ignored by Xcode. Any ideas what the path should be in Leopard (Xcode 3.1) i /Library/Application Support/Developer/Shared/Xcode/Project Templates/Bundle/Quicksilver Plug-in isn’t working for me?
divulged by Charlie on July 28, 2008 3:11 am | Permalink
I have found that this path works:
~/Library/Application Support/Developer/Shared/Xcode/Project Templates/Quicksilver Plug-in
(create directories if they dont exist)
via: http://stackoverflow.com/questions/176373/specific-help-with-xcode-project-template-that-is-not-doing-substitution-in-fil
published by dr_bonzo on December 6, 2008 6:44 am | Permalink
Thanks a lot DR_BONZO. This works for me as well.
And finally I can start reading this howto in depth
Thanks a lot guys.
determined by Chris on March 15, 2009 3:56 am | Permalink
Where do I get a developer copy of Quicksilver?
The link provided is dead I believe.
Thanks
stated by Peter on February 25, 2010 2:36 pm | Permalink
In answer to my own question
http://github.com/andreberg/blacktree-alchemy/downloads
recorded by Peter on February 25, 2010 3:14 pm | Permalink
Leave a comment