Desktop Manager

I love using Desktop Manager for Mac OS X because it lets me
separate my tools into separate workspaces. I have a separate desktop
for communication (email and IM), local development (editors and
terminals), remote development (vnc), and miscelaneous (temporary
windows or apps like iTunes). With a simple keystroke I can rotate
between the different desktops, even using dual monitors.

Unfortunately, it looks like the recent update to OS X broke the
ability to move a window between desktops. I can still minimize, change
desktops, and then expand the window. But moving the window without
switching desktops doesn’t seem to work. Oh, well, I didn’t use that
feature much anyway.

The last release of Desktop Manager was in 2005. Maybe it is time to
take another look at Virtue Desktops.


Wow, VirtueDesktops has come a long way since the last time I used
it. I’ve made the switch from the older Desktop Manager, and aside from
not having the desktop pager available in the menu bar I am having no
trouble adjusting. Moving windows between desktops works as advertised.


We have an Exchange-like mail server at work, but it doesn’t support
iCal subscriptions. Since I use a Mac, and don’t have any interest in
Outlook, that makes calendar access a pain.

After some poking around, I discovered that the server stores the
calendar information in IMAP folders, with each event in a separate ICS
file attached to a fake message. So I put together a small script read
the IMAP messages and merge the ICS files into a single output file. By
writing the output file to a folder on the web server, it is easy to set
up a subscription in iCal.

The result only works one way, of course, though it should be possible
to push fake messages into the IMAP server. I have not tried that,
because I just use the server’s web interface for adding new events to
the calendar.

The script depends on the icalendar package from, and
the Python standard library packages for IMAP and email parsing.

I have posted the script to my server: mailbox2ics.

Email Archives

Speaking of email, I’ve been working on an AppleScript to organize my
email boxes.

I use under OS X, so searching is easy and quick. I can use
smart mailboxes as needed for subject-based organization, so I wanted to
move away from my existing subject-based organization scheme (a folder
for each person, job, client, etc.). But since I have about 7 years of
email on my machine, I still wanted to do better than one big mailbox.
Grouping the messages based on the date sent seemed to give me
manageable chunks, but I didn’t want to have to do that manually. So, I
came up with this script:

on archiveByDate(parentMailboxName)
tell application "Mail"
 set archiveMessages to the selection

 repeat with currentMessage in archiveMessages
  set receivedon to (date received of currentMessage)
  set archiveYear to (year of receivedon as string)
  if ((month of receivedon as number)

This automatically maintains a folder hierarchy like:

  • parentMailboxName
    • 2006
      • 01
      • 02

I use that script as a library, and have another script which I run
via a MailActOn action to file selected messages. The reason for
having a separate script is so I can separate personal messages from
work messages in the archive. For example,

set scriptDirectory to ((path to
 scripts folder as string) & "Mail Scripts")
set scriptPath to (scriptDirectory & ":MailArchiveByDate.scpt")
set theScript to (load script alias scriptPath)

tell theScript to archiveByDate("Personal")

saves my personal messages to a folder called “Personal”, while

set scriptDirectory to ((path to
 scripts folder as string) & "Mail Scripts")
set scriptPath to (scriptDirectory & ":MailArchiveByDate.scpt")
set theScript to (load script alias scriptPath)

tell theScript to archiveByDate("Work")

saves work messages to a separate set of folders.