Summer 2012 in Desktop Shells
rabbit hole alert: I wrote far more about this than most sane people will want to read, feel free to skip it
“What’s a desktop shell?” I hear the non-Unix folks out there asking. Glad you asked! See, the thing you see when you boot up your computer is a “graphical shell”. On Windows, it’s Explorer.exe, and so on. And there are actually people who try to reimplement all those features and do one better. Or, more commonly, port over stuff that Unix folks have had for a long time (see the many and impossible to keep track of ports of Blackbox for Windows). Because the first one is hard.
Aside from being incredibly ambitious and challenging to complete, replacement shells haven’t been terribly popular lately because since it’s really hard for them to compete with the years of work that have gone into modern graphical shells. It’s pretty hard to get the hackiest Windows replacement shells running on Windows 7 (or at least, on a 64-bit OS) because they’re from the days of Windows XP. And the people who develop them seem to be XP holdouts as well, and so they don’t know what sorts of features they’re trying to compete with for Win7 users.
So where I’m headed for this is that I spent time over the summer crashing Explorer and replacing it with other things and then having to reboot my laptop when they didn’t work. SharpEnviro was okay, and pretty easy to get going, but it didn’t offer a whole lot over the default and had too many rounded corners and pointless chrome. I’ve read some claims that LiteStep works on Win7 x64, but I never really got it functioning properly.
Blackbox
Then there’s the grand mess of Blackbox clones, which allegedly work great - if you read some forum posts that no longer exist and download the right revision of the right code branch which is actually a mod three times removed from the original source. Or something. There’s a really difficult to follow list of forks on BB4Win’s SourceForge website, which is somehow one of the two main hubs for Blackbox. There’s also BB4Win.org, not to be confused with the former, which seems to actually have a community. Oh yeah, and then there’s boxshots.org and LostInTheBox has a forum for shells and sub-forums for BB4Win and its descendents (click the previous link, you'l see them).
Anyway, near as I can tell most plugins are compatible with every version. Unless you’re using an 64-bit build, but then it may just be better to stick with 32-bit builds. So! BBLean, xoblite, and Blackbox Zero seem to be the only modern-ish ones. The former, while old, has a 64-bit build and can be downloaded here. xoblite has a release candidate from 2005, but it also has a nightly build from 2011. I think it’s only 32-bit, though. If you try out xoblite, there’s a pretty comprehensive FAQ available. Finally, there’s Blackbox Zero, which seems to be the most recent of all. It has, I think anyway, builds for 64-bit. And, thankfully, it’s fairly well-documented (in the sense that there’s no hidden options that require you to ask the developer, like in xoblite). Anyway, this post on DeviantArt also recommends just using BBLean - there’s some useful stuff in the comments, too.
Emerge Desktop
So the moral of the story is that Emerge Desktop is the most functional option out of the box. Even though it has an intentionally bad first time user experience. To teach you how to make it not-ugly, I guess. Anyway, once I made all the icons small, minimized the chrome or made it invisible, I got this user interface that I really fell in love with. I had a 32 pixel tall border along the top of the screen for the “taskbar” replacement, and a 32 pixel wide border along the left side for app and folder launchers, and that was it. Nothing extraneous to waste precious pixels on my laptop’s screen. I just had to smile whenever anyone wanted to use my laptop and yelled about how they couldn’t find anything.
But I was always bumping into little annoyances. Things I missed from the Win7 version of Explorer. As you can see in that thread I linked to, I was considering contributing to Emerge. And I made myself a list of tasks to work on. I thought about how cool it would be to be the guy who merges Emerge’s “running programs” functionality with its “app launcher” functionality (something XP lacked, but Win7 makes you wonder how you lived without it). To write code and improve the software I was using right away.
It was, to be honest, an… ambitious list of things I wanted to improve. I probably couldn’t have found time for more than one of those features, since things are never as easy to implement as they are to think up. There were eleven items on the list, and maybe that doesn’t seem like a lot if you’ve never written a decent amount of C++ code. Granted, some of them are on the scale of small bugifxes - at the time, it was possible to scroll past objects placed at the corner of your screen, so that you wouldn’t be able to interact with them. There’s probably a better way to do it, but you could easily hack it together by resetting their cursor position whenever it goes outside their current resolution’s height/width. Then there were whole new features, like adding support for the Windows 7 jumplists, Aero Snap, and that cool progress bar thing you can get in the taskbar.
So, full of the confidence of the young, I figured I could guesstimate how to implement all those things in C++ by myself. If I had infinite time, sure; but as the summer progressed, I realized that I didn’t really want to be a C++ ninja. So I set these goals aside and never even looked at the code for Emerge.
Still, I’m posting this list of things for their sake. Just in case some C++ wizard decides to do the world a favour. I’ve submitted them as feature requests, too. So maybe someone will act on them.
The list
- Jumplists in Launchers for Win7
- Key to minimize/maximize current window
- Aero snap with win+arrow
- Default launcher keys for one launcher, ie, Win+#
- System tray that expands better - scrolling?
- System tray upper level hitbox - can’t mouse above it
- Notify on window title change (ie download compeleted)
- Flashing for notification (ie new message in Miranda)
- Download progress?
- Combined launcher and emergeTasks, or quick transfer of running program to launcher (this is a HUGE annoyance - in order to add an item to a launcher, you have to open up its configuration GUI, click through a few things, go browsing through your entire PC for the executable you want to add, and then a few more clicks to finish. Realizing that a program you’re currently running is one you’d like to have easy access to is a practice in weighing short term pain for long term benefits, and for me, laziness often won out)
- Bettery system tray hiding (see SysTray from the AutoHotKey forums on how to interact with the system tray)
- Something like Desktop Media
Comments
comments powered by Disqus