https://mycophobia.org/desktop_gui_minimalism.html
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 (formerly 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.
[mate_screenshot]
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")