Nerd post alert. As if you were expecting anything else.

Since posting my latest desktop, I’ve received a few questions about how I keep my Mac’s Desktop icons under control. I thought I’d answer that question before I got around to posting my whole GeekTool setup. Beyond hiding disk icons and making the icons smaller in Finder’s Desktop view settings, I have a “system.” My filing system is simple to use, but a little complicated to explain (and set up), so it gets a whole post to itself. I doubt many will follow directly in my footsteps, but you asked…

Like any so-called system…

The basic idea is that my Desktop is an inbox. During the day, I save just about everything I work on to my Desktop. Like any system I’ve ever used, the secret is actually doing the “reviews”. At the end of each day I do a scan and file what obviously has a place (I have some neat tricks for speeding that part up, but I’ll get there in a bit). Things that represent new projects or that don’t fit into an existing folder/tag setup take further action; if there are enough related items to represent a project or topic, they get collected into a new Desktop folder which is descriptively named. The new folders will generally stay on the Desktop until the weekend, when I do a Weekly Review. If a file is singular and has no context, it stays on the Desktop and waits for company. If a file sits alone for a few days, it usually ends up being tossed into a “pile” of similar filetypes. Let Spotlight sort ‘em out.

In the Weekly Review, I go through the new folders on the Desktop and determine what type of information they represent. Is it a project? A client? Reference material? I have a folder hierarchy based on these types, the top levels being Work, Code, Reference and File Cabinet. Each breaks down a couple more levels. If a Desktop folder can be filed into one of these categories, it’s moved there. Not before it’s tagged, though.

Tags, tags, tags

I use OpenMeta tags to sort and search all of my data. I primarily use Tags from Case Apps, Default Folder X and Spotlight, but make frequent use of HoudahSpot and the command line openmeta utility as well (among many other OpenMeta-compatible apps). I don’t stake the life of my data on the continued availability or stability of the OpenMeta system, but in combination with a consistent, shallow folder hierarchy, I know where things are, even without the convenience of tags. Tags make it easy to group files and work with those groups, but there’s more than enough metadata in the filesystem to make any information easy to locate with Spotlight or other mdfind tools.

The beauty of tagging, as you may know, is that you can easily assign multiple categorizations and topics to each item, rather than just having them exist at one location which defines it as a type or part of a static collection. I still use the shallow hierarchy of folders that drill down to individual projects and topics, so it’s not a “one pile” deal. I couldn’t function like that; it’s difficult to weed, and if metadata is lost, so is the file, essentially. I use folders to maintain filesystem sanity. I use tags and other metadata to maintain my sanity.

I also use tags on iCal events, emails, web sites and other elements of my system. They’re easy to filter in searches and allow me to make a project “folder” that contains more types of data than Finder would normally make convenient.

Tags, to me, are like mind maps, in that they work the way my brain does. Each tag creates a “nodal connection” to other items sharing the tag, and neural networks are formed by related tags. Things aren’t always directly connected, but the nodes make it possible to track things down after you’ve forgotten about them. They’re useful in the short term for gathering projects together and categorizing, but even more useful after you’ve forgotten you ever had a file and then suddenly need it.

What’s in a (tag) name?

The secret, which I’ve learned from a few years of doing this, is to tag intelligently, sparingly and consistently. Being liberal with tags like “important” or “flagged” just means more upkeep and reviews that have to be done to keep the tags relevant. While tags like “neat” or “supercool” seem silly to me, I use one “inspiration” tag on anything that I’m saving just because it’s, well, inspirational. I have a Smart Folder in Finder that pulls up everything with that tag, and then I can filter the files based on date, type, etc. If I add additional tags, they are pretty general, such as “color,” “webdesign,” or “productivity.” These are big buckets I can dive into when I need an idea, or a kick in the pants. The tags on project and research files tend to be more specific, and I can drill down to precise sets of files by typing a few words in Tags or HoudahSpot.

To keep the cruft down, I use tags which aren’t already defined by other metadata like the creation or modified date, the filetype, the filename, etc. I do tag files with the name of their parent project or topic, even though it’s often redundant to the folder hierarchy. This allows me to tie projects together across multiple folders, disks or even servers. Sometimes a file is more strongly tied to a topic than it is to an individual project. Say it’s a general reference item or a stock photo that I gathered while working on a specific project, but that I know I’ll need again. I put it into a reference folder or photo collection, and tag it with the related project. It’s easy to view it in the context of the project with a tag search, but part of a larger collection of similar items at the same time.

When in doubt, I usually choose tags based on the first thought that pops into my head. Chances are, when I’m looking for it again in a year, I’ll have the same thought. It doesn’t always work, but I’ve had a pretty good success rate over the last couple of years. As often as possible I try to reuse tags; a tag that reveals one or two files is a useless tag. My “Yearly Review” includes weeding out tags that have very few associated files, or that could be merged into more common tags.

Is this future-proof?

I know I started by saying I don’t depend solely on tags, and then went on to describe a system that sounds pretty tag-heavy. Given the somewhat unorthodox nature of OpenMeta tags, and Apple’s power to pull the rug out from under them at any time, it kind of seems like a disaster waiting to happen, right? The fact of the matter is that OpenMeta tags are well preserved by design, backed up1, and can be re-associated with their files through various means, should the system ever fail. It’s really pretty solid.

The tags don’t translate to iOS, though, so that’s taken some extra thought in some cases. The tags I use in Simplenote/Notational Velocity, for example, are inline in the file as a special character followed by the tag name. I can set up Spotlight searches to search for a keyword with and without that prefix, so it doesn’t really add complexity to the system. Searching in Simplenote on my iPhone/iPad is then much easier. Spotlight and apps like Simplenote also search text content and filenames, and iOS apps don’t “talk” to each other very well anyway, so it’s not a huge deal at this point.

The cool part

Tagging files with a project name has an added benefit for me. I’ve built a system using some Ruby scripts, the CLI tool for OpenMeta, the mdfind command, Dropzone, Hazel and Tags.app. This is the truly “complicated” part. The system took a while to set up, and there was some tweaking early on, but it’s solid now and I rarely have to think about it. It just works.

When I file those Desktop folders each week, I add a special supertag to define them as “targets.” They get a unique project name or combination of names, and the target tag. Then they’re filed in parent folders which are also targets with unique names. The second level of target can have one more child level of targets to separate sub-projects or file types. These tag names do not have to be unique system-wide, only within their parent target tag. Within any of those folders, the files are tagged and finding them rarely actually requires going into the folders.

Now, during the daily review, I just use Tags.app to quickly tag files on the Desktop with whatever is appropriate, plus the name of the project or topic they’re associated with, and any subfolders I want them to reach. Then I can let Hazel pick them up, or drag them straight to my Filer destination in Dropzone. Both run a script which gathers all of the target folders on the system and starts drilling down to find the best matching tag or series of tags. Then, it moves the tagged file into the best-match folder, logs the action to a text file, and gives me a quick Growl notification letting me know what it decided.

That’s the system. I’m sure I left some questions unanswered, so feel free to ask again in the comments. As I said in the beginning, I don’t know if this kind of setup makes sense to other Mac users, but it’s served me well for years. I don’t lose files, I keep my filesystem tidy, and I stay relatively sane.

Here’s a mind map of the elements that went into this article. It seemed to make a nice summary of my long-winded diatribe.

  1. The Mac App Store has an issue with the backups, actually, because OpenMeta-compatible apps all back tags up to a universal cache folder. MAS doesn’t allow an app to write anything outside of its own Application Support folder. I like that in general, but I think there needs to be a concession in cases where synchronicity between multiple apps is of essence.