Earlier today, I had a short twitter conversation with Lauren Herda (she illustrated my first three Mac app icons).
I tweeted about symlinking my Mac's Desktop folder into Dropbox to work around some iCloud Drive problems that had been plaguing me. It was a quick, off the cuff conversation, but for some reason it kept bouncing around in my head. A little while later when I was washing dishes, I jotted down the following note into Drafts...
Could we sync desktop icon positions over CloudKit??
Here's the thing.
For me, my Mac's Desktop is my staging ground, my active workspace, the digital representation of my mental RAM. I'll typically have all of the files related to the task I'm currently working on stored on my Desktop. Once it's complete, I'll either file them away or delete them and move on to the next thing.
Having the Desktop on my iMac at home stay in-sync with my work laptop eases the transition and context switching as I move between locations. Dropbox has been doing this for years, but actually getting into the correct folder in Dropbox always has just enough friction to keep me from using it with active files the way I do my Desktop. When Apple added the option to sync your Documents and Desktop folders into iCloud Drive a number of years ago, it was a perfect fit for me...
I'm a visual learner, and that way of thinking translates to how I work, too. That means, not only do I keep my active files on my Desktop, but I also arrange them visually in meaningful ways.
I'll often shuffle files around into little groups to denote that they're related to each other. Sometimes I'll line a queue of files up on the left side of my Desktop and then move each one to the other side as I process them. My point is, in my workflow, the position of those Desktop items is a special bit of metadata that is often just as important as the contents of the files themselves.
So, it's always seemed to me like a missed opportunity to not sync that metadata, too. And I realize that keeping the visual positions of files in sync comes with all sorts of thorny problems around different sized screens, multiple monitors, etc. But it seemed like a fun problem to think about on a rainy Saturday evening.
As you might guess, I did more than think about it.
The video above shows a macOS Mojave and Catalina virtual machine side-by-side, signed into my iCloud account. I wrote a small helper app that runs in the background and watches your Desktop for changes, which are then synced over CloudKit. The Mac on the other end, subscribes to those updates and repositions your Desktop icons accordingly.
For no particular reason other than I had to pick a name of some kind, this ridiculous little app is called Jigsaw.
When arranging your icons, Jigsaw has two modes of operation.
- It will sync the literal pixel coordinates of your Desktop icons from one machine to the next. This is mostly fine until you get into a scenario where one Mac has vastly more (or less) screen space than the other. In that situation, an icon can get accidentally repositioned offscreen. When that happens, the Finder steps in and moves it back onto the visible portion of your Desktop.
- Another way that I briefly toyed with was instead of syncing actual coordinates, I kept all of the icons synced proportionally / relative to each other and the screen. If you have an 800px by 600px monitor, with a folder at (400px, 300px) - that translates to 50% on each axis. When Jigsaw repositions the icon on your 1200px by 900px monitor, it will be placed at (600px, 450px).
I'm not sure which method is better. (Honestly, this whole idea is dumb ????) But that's Jigsaw. Likely nothing more than an experiment but a fun, nerdy way to spend a Saturday evening.
If anyone is interested in trying it, you can download Jigsaw here.