A couple of weeks ago Jeff Atwood of Coding Horror wrote about the paradox of large displays. He mentioned two tools that helped him manage the overlapped windows on his giant monitors, WinSplit Revolution and GridMove. I tried both and neither had the feature I wanted most – splitters I could drag to resize the windows relative to each other.
I too use a couple of 19″ monitors and although they are plain old 4×3, I still often have the feeling that I’m underutilizing my screen space. This issue has been on my mind for the longest time. There’s some code on my HD called TidyDesktop that I wrote about 4 years ago. The idea was to turn the desktop into something akin to modern IDE’s, with floating windows, dock points and most importantly splitters – those narrow bars you drag to change the relative size of windows. I was doing it in C at the time, playing around with windows hooks and message loops and it was going very slowly. I did get to a point where a single window could be dragged to the edge of the screen and it would dock there, but didn’t have the time to see it through.
I was thinking about this yesterday, and it suddenly dawned on me that I was going about this the wrong way. Instead of trying to bring the splitters to the desktop, I could try to put the windows within a large container window, a general purpose IDE if you’d like.
Turns out you can change the parent of an application’s window and attach it to another window. Not only that, but when you maximize the inner window, it stays within the borders of the container window.
Based on this idea I’ve build a wxPython application that can host other applications’ windows and it looks like this:
As you can see in the screenshot, I’ve arranged Firefox, Notepad and a command prompt in a nice way that allows me to use all of them at once. You can also use this technique when you watch online movies and want to jot down some notes or when you’re playing the guitar and need both the chords and the lyrics alongside on the screen.
This should really boost productivity, but don’t take my word for it,
try it out and let me know how it goes.