On Desktop GUI Minimalism

Over my now decade-plus-spanning Linux-using career (career in name only, I'm forced to use Windows at work), I've bounced back and forth between several different environments spanning several different UI paradigms, as any nerdy Linux user is wont to do. When I first stuck Mandrake Linux cluelessly onto my computer with a Winmodem, overwriting the Windows XP installation that was on it and thusly making the computer by all means internetless, I was at the very least pleased with the stock KDE 3 it came with. It had what was in effect a start button, there were windows with their close/maximize/minimize buttons in the usual places, the file browser was familiarly web browser-like. There wasn't anything impeding my ability to use the computer on a superficial level.

Shortly thereafter my family gained access to broadband internet and I was able to delve into Linux again, this time thankfully without obliterating my computer's access to the outside world. So again off went Windows XP and on went a Linux distribution, if not Mandrake then perhaps the now-also-defunct Xandros, whose reason for being was to provide a replica of the Windows XP UI for a Linux environment, again using KDE 3. I got along with it just fine, it did more or less what I needed to do, which at the time was just surf the web. The thing about KDE 3 is that it was very customizable, notoriously so, even. Each preferences dialog of every conceivable thing had tabs upon tabs containing long pages of checkboxes and dropdown menus that you had to scroll to see all of. And so, I acquired the very Linuxy habit of customizing every last detail of my environment.

Then I learned that there were other desktop environments, and that even some Linux users don't use a full desktop environment at all, but just a window manager, and from there only pull in the things that they want, typically opting to do most day-to-day stuff in terminal windows. This awakened, irrevocably, the interface minimalist in impressionable young me. Over the years I've tried using minimalist window managers in which I would simply launch applications and manage files with several xterm windows, then once I got tired of not being able to, say, configure Bluetooth without consulting a manual's worth of documentation, retreat to some desktop environment. There I would eventually be annoyed by the UI clutter and supposed inefficiency of an environment where I'm not typing things at it to make it do stuff, and go back to the minimal WM and xterms. I even briefly used a tiling window manager before very quickly returning to the floating ones; the appeal of such utterly inflexible window management I will simply never understand.

Ultimately a couple of years ago I had resigned myself to using "Default Linux", i.e. a mainstream distro with its default environment, in the interest of not giving myself too much freedom of choice, maximizing my ability to receive support from the millions of other users who are normal people and don't futz with all this crap all of the time like I do, and getting down to the business of just using my damn computer. For both Debian and Fedora this means stock GNOME, which from the 3 series forward was actually quite appealing to my minimalist sensibilities. More on that later.

I had also maintained a peripheral interest in classic Mac OS; chiefly its interface, and the history and attitudes that went into its creation. All computing up to the point of its introduction, at least from the "shell" standpoint of launching programs and managing files, was done exclusively through typing commands at the computer; you effectively had to program it, to a degree. The creators of the first Macintosh had the mouse, the desktop metaphor, and the menubar, and did their damnedest to make sure the user of their new paradigm-shifting computer could do all of the application launching and file management they could do at a command line without ever having to touch the keyboard. Similarly they urged developers to not simply copy their command line interfaces when porting their applications to the Macintosh, indicating that the menubar should be a well-organized and static location for all of the functionality of a program. There was a relentless dedication to conceptualizing a computer interface as objects in space (the very first thing we must grasp as human beings before going on to learn anything else) being viewed through a screen, and through sheer consistency making the interface disappear into the background. Instead of telling the computer what to do with typed commands, you did stuff on the computer. The "world of the computer" was entirely viewable through your screen, and the hope was that it would make as much immediate sense as the world of a physical workspace on a desk, once one masters the mouse of course.

The spirit of the Macintosh spread throughout all of computing; the GUI was inexorably the future. However, at some point, the developers of these environments lost their way. Apple, with its clean-slate Mac OS X, tore down its classic shell functionality expressed in discrete features and threw it all into the dock. The dock is pretty and easy to understand for novices, but its singlemindedness gets in the way for anyone who demands more flexibility from their environment. Windows 95 was a pretty good shot at a Mac-like environment from a different angle, but the immediate next version began the process of interface bloating with its integration of Internet Explorer into the shell, and gradually continued into the monstrosity that is modern Windows. Most Linux desktop environments' dedication to eliminating the command line entirely have been scattershot and half-hearted at best, mostly opting to blindly copy features from Windows and Mac OS X. Oddly enough, only GNOME has had any kind of distinct vision, though again, we'll get to that in a bit. And of course, the smartphone has left an impact on the overall PC GUI landscape as well; the simple interface paradigm that works so well for small screens operated exclusively by imprecise fingers has made mediocre many modern PC interfaces that reside on increasingly large screens and perfectly precise mice. My dream is of an environment much like the original Macintosh, in a modern era. One committed to not requiring the use of the command line at all outside of, perhaps, development, but without the decades of inconsistent and pasted-on cruft that a ready-made desktop environment brings. I want to bring the attitude of of window manager+xterms minimalism to a pure GUI environment. To bring forth maximum usability and flexibility with the absolute minimum of components.

So let's tear it all down and start from first principles. Conceptually, anyway. The underlying system can be as complex as it needs to be, as long as to the user the world of the computer remains stable, coherent and unaffected by egregious overhead from said potential internal complexities. The light skeuomorphism of the original Macintosh system software with its desktop metaphor is as good a starting place as any; people still use and arrange things on desks in definite useful ways, why not conceptualize a computer with a mouse the same way? This is the simulacrum of the world of the computer in its entirety: there is a desktop, and there are things on the desktop. Objectively, there are two types of thing on our desktop: closed things and open things. Closed things take the form of freely movable icons, open things take the form of windows, mostly freely movable and resizeable, and of course closeable. Logically, there are three types of thing on our desktop: Files, folders, and applications. Folders are in a kind of special class here, however, as in a conceptual system in which the desktop is the bedrock of our interface, the top level of the computer, folders are subordinate to the desktop, but not to applications or files. There is a visual hierarchy: Our file manager here isn't really so much just another file manager as it is one half of the entire interface. The other half is the window manager. All user action occurs through these two things. And to get it out of the way, the file manager half of this duo should be unwaveringly spatial; read John Siracusa's excellent article all about that to understand what that is and why it's valuable in this particular exercise. To keep a long essay short, let's just say our spatial file manager should at least achieve feature parity with the Mac OS 9 Finder.

So why a desktop as the linchpin of our interface instead of, say, GNOME's Activities screen? Well, if we want to strip the GUI down to the absolute basics while remaining purely GUI, we again want maximum flexibility. GNOME's Activities, while I think it's generally fine, is massively inflexible. You get all your windows in expose fashion, a giant statically laid out grid of your installed applications, a list of workspaces, and a dock; it's all on a screen separate from your actual workspace, and that's just the way it is. Any modification to this paradigm is necessarily minor in nature and requires the usage of third-party extensions of wildly varying quality. It's a touch interface with concessions for window management, and in trying to please two masters it is utterly mediocre in its functionality; you're scarcely better off than you are running something like Fluxbox while also consuming way more resources. With an interface that utilizes a desktop and folders with freely movable icons and windows as its fulcrum, anything goes wherever you want it. Can't get much more flexible than that.

Ok, so what about application launcher menus, panel applets, and taskbars? Let's take these one at a time: An application launcher menu would simply be a folder you open like any other, containing launchers. Open the folder, size and shape it how you want, put it in whatever view style you want, and stick it somewhere on your screen. With a proper spatial file management paradigm, that folder will retain all of those changes you've made so you can close and open it all you want and it will remain exactly as you set it up. A panel applet would be a small application that you would open from such a folder and, again, keep wherever you want on the screen. A window manager with an "Always on top" feature makes these elements omnipresent like a panel, though admittedly target precision is lacking unless we also have some way to hide window decorations (and an easy way to bring them back).

And for taskbars and the like, let's step back and examine the problem we're trying to solve. If you're like me, you like to keep lots of stuff open at the same time, stuff you're working on, or were working on but haven't quite gotten back to, stuff that runs passively most of the time like a music player, several Firefox windows each dedicated to a particular task (so as to not have to fish through a grotesquely long list of tabs all in one window), stuff you're reading, stuff you haven't read but will eventually, a paused video, a Discord window, so on and so forth. With the multiple gigs of RAM most of us have, we might as well use it, right? But if these are all just open windows, then without some way to make them take up less space at a stroke things are going to get very crowded. The most familiar way to handle this problem is minimization into a taskbar, popularized by Windows 95; the window disappears into a button on an omnipresent bar. Not bad. There's also the dock on Mac OS X, where, again, the window disappears into a list of minimized windows along with everything else. Both of those as well as GNOME have expose functionality that temporarily shrinks each window in place so that none overlap and then you select the one you want, an excellent feature to be sure. Mac OS's MultiFinder, while not allowing exactly for minimization in the sense that the windows completely disappear and reappear, at least gave the user an application list menu in the top right corner of the screen that in later releases could be detached into a resizeable palette window. Now that's flexibility!

But none of these are suitable for our min-maxed conception of the GUI interface to your computer. These are all extra contrivances requiring functionality beyond the purview of a paired file manager and window manager, first of all, and secondly, the non-expose functions that express windows as a linear list require a small modicum of mental effort in order to restore your minimized windows; with enough windows, a taskbar either becomes unreadably cluttered with tiny buttons, or if you group by application, the window must be fished out of an additional menu, again having only an indirect representation of the window at your disposal. Expose fares better here, especially if it will show your minimized windows in the same space relative to your other windows it was before minimization, but not everyone can conveniently, or might not even want to, run a compositor. Secondly with expose alone we don't have any way to see at a glance if there are any minimized windows at all.

So here we've come to a bit of a fork in the road. One path is the GNOME path, in which we simply supply the user with an indefinite number of virtual desktops and disable minimization entirely. I don't have any particularly strong philosophical objections to this model, mine is more of a personal preference: I don't like the context switching involved in virtual desktops. It's not as if I have one infinitely large workspace so much as I have an infinite number of separate workspaces, each arranged in their own way. I like being able to see and have at-hand everything at once on one screen, which is an illusion best maintained, for me, by a single desktop. Even more than one monitor is more of an "immersion-breaker" than I care to mentally deal with. So in lieu of any other way to comfortably manage potentially dozens of windows all at once, I will opt again for a Mac OS classic standard: in-place minimization, or windowshading. With windowshading, the window stays where it is and signposts its size by maintaining its width while also retaining its titlebar, giving the user another clue as to what it was before it was shaded. There is no indirection: the window minimizes but stays exactly where I put it, which takes good advantage of spatial memory. The more we offload the tasks of organizing our files and folders and windows to the computer, the more mental effort we have to expend finding and re-finding the things we need.

I want to reiterate that these are what I'm specifying should be the bare-minimum for a desktop environment, not necessarily the entirety of it. This is the base on which the user builds. Go hog-wild and add panels, taskbars, multiple desktops, file browsers and whatever else if you so desire, as the whole idea of this is that everything is up to you, but the features I'm pointing out here should always exist at a minimum. And as was pretty obvious from the beginning, I'm more or less describing the state of classic Mac OS by the end of its life, minus the menubar and its functionality. Apple had some really good UI people back then! Unfortunately if you want to do anything modern web related and also don't want your entire OS to crash at least once every single day, it's not exactly practical to daily drive Mac OS 9 these days. Is there any way to replicate this in a modern computing context? Well, barely. The developers of the GNOME 2 series were greatly influenced by John Siracusa's article linked above and set out to spatial-ize Nautilus, doing an admirable job of cloning the classic Finder, though ultimately they left out the incredibly useful pop-up folders feature, and list view doesn't properly maintain the state of expanded and collapsed folders when closing and re-opening the parent. But spatial it was, and to boot they were able to include a pure browser mode without either of the two ever interfering, something Apple was never able to do in OS X before they abandoned the pretense of having a spatial mode entirely. And after GNOME settled for mediocrity with the 3 series revamp forward, the fine developers of the MATE project picked up the 2 series codebase, leaving well enough alone the UI as that's kind of the whole point, while doing its best to port stuff to modern toolkits and keep up with the times as far as the internals go.

Really you could just take stock MATE, turn on "Open folders in a new window" in the Caja (née Nautilus) preferences and set the double-click titlebar action to Shade and you've got that bare minimum with a bunch of other stuff on top of it. However the defaults are honestly a bit too much for me (two panels?) so I've stripped it down to the essentials while adding various hacks to facilitate the closest thing to a "world of the computer" whose origin is the desktop as I can muster get without having to program something brand new. What I have now is a reasonable facsimile of the classic Mac OS UI functionality in Linux, minus little niceties like the aforementioned popup folders, and I've found that I need basically nothing beyond that to work incredibly efficiently. Just a little wmclock sitting atop the screen wedged between a couple of other windows as far as panel-like stuff goes, and all folders I use on a regular basis are set to a view style suiting their contents; music and video libraries are in a tall narrow list view, my Pictures folder is a large window with large thumbnails, I have launchers to commonly used programs in a folder with manually arranged icons that basically amounts to a second desktop for icons inside a window, a couple of stacks of shaded windows in different regions of my screen along with unshaded ones. Any regular tasks I once opened a terminal to do I'll either find a decent GUI application for or write a shell script that I can use in an Open With right click menu. I can assign any arbitrary image to any icon to give it extra visual distinction. Most of the time when I open a file it's either by double clicking an icon or dragging and dropping that icon from an already open folder to an already open application, very little futzing with open/save as dialogs. Everything's arranged like a physical workspace, everything is within arm's (mouse's?) reach and can be thrown back and forth and in and out with impunity, and no logical thought is required to get at anything because everything is how I've left it. My hands hit the keyboard only when I'm editing text, very nearly.

And you can have this too! I've cobbled together a collection of scripts that, at least on a stock MATE configuration on Debian, flips all the switches necessary to get such a bare minimum environment that is immediately incredibly useful out of the box without being overwhelming, and that you can further shape to your will. You will get a desktop displaying the contents of your home folder and some icons pointing to all your installed applications, the root filesystem, and a script that will log you out, as well as some additional packages for GUI system administration. Download the following file, unzip it somewhere, and double-click "MATE Spatial Setup". Note that this script assumes you have sudo privileges and will also log you out at the end of it. It's a pretty simple sequence of commands so don't be afraid to inspect it before running. Also be sure to pick a non-hideous theme afterwards if you're doing this on a fresh MATE install.

Download here

Unfortunately by its very nature the MATE project is conservative and isn't likely to ever build upon its spatial features, especially considering in later GNOME 2 versions the browser mode took over by default, which of course was maintained over the transition to MATE. I just hope to God they don't decide it's too much trouble in the Wayland transition (with its persnickitiness concerning where programs can put their windows) and remove it entirely. And beyond that there is literally no other spatial file manager currently maintained aside from the incredibly obscure and incredibly unfinished Filer from the equally obscure and unfinished helloSystem project, a more straightahead Mac OS clone that's far more ambitious than what I've outlined and partially achieved here. This is why I've had to base this entirely on MATE rather than mix-and-match the plentiful window managers that would obviously fit the bill with a suitable file manager, as on the latter point there isn't one besides Caja, which is more tightly integrated with the rest of MATE than I can reasonably work around. Plus, MATE is good and comes with a lot of useful stuff I wouldn't necessarily want to get rid of, as in my investigation of these things I've come to find that it's quite difficult to assemble a sufficiently robust set of applications that allows a user to manage their computer without forcing them to dig into config files. In the end I would like to code up my own spatial file manager with my own cool futuristic spatial file management features (I have ideas) but for the time being I just don't have it in me to let perfect be the enemy of good. May someone else be inspired by my writings and others like it and carry the torch.

P.S. I have little to say about the interface design of individual applications that hasn't been said in Carl Svensson's excellent article on the subject, so definitely go read that. But as a brief summary of my feelings: Your application should do its best to have native-looking widgets, and if your application does more than one simple thing, it should have a well-organized menubar (NOT a "Ribbon" or "Hamburger menu")

Discuss this article