April 23, 2001
spatialBrowser is a file browser offering a dual view of files: a traditional tree list view, with expandable/collapsible nodes, and a 2D spatial view, where files can be freely arranged. The 2D spatial view shows the contents of the currently selected folder, and can be panned and zoomed with the mouse. The spatial layout of files within each folder is persistent across sessions. For some of the rationale behind the design, and references to relevant literature, go here .
You can download the source code  (about 9k, or 1200 lines of code). The software was developed on Redhat 7, but should be easy to port to other GNU/Linux platforms, or even to Windows with a little more effort. Required libraries are Qt  (for most of the UI), STL (for templated lists), OpenGL (for the spatial view), and GLUT  (for the scaled fonts in the spatial view). I used Qt 2.2, however an older version may suffice. Mesa  can of course be used in lieu of OpenGL.
To unpackage the source, compile and run, try
gzip -d spatialBrowser-0.1.tar.gz tar -xf spatialBrowser-0.1.tar cd spatialBrowser-0.1 ln -s Makefile.linux Makefile make ./spatialBrowser [directory]
The argument to the executable is optional. If none is provided, the browser will start up with the current directory loaded by default.
In the spatial view, use the left-mouse-button (LMB) to move files, middle-mouse-button (MMB) to pan, and the LMB+MMB together to zoom. Folders are drawn in cyan, and regular files are drawn in white.
Note that if you arrange any of the files in the 2D spatial view
of the browser, a hidden
._ (dot underscore) file will be
saved containing the layout.
._ file will be saved in each directory that is given a
spatial layout by the user.
Directories that initially contain no
._ file are given
a default layout by the browser, and the layout is only saved if
the user modifies it.
spatialBrowser was implemented during March and April of 2001 as part of CSC 2537, a computer science graduate course on hypermedia given at the University of Toronto. In the interest of rapidly generating a first prototype, the source code for v0.1 was based on a Qt example program called dirview which demonstrates how to use Qt list views. (As such, the source code for v0.1 is rather messy and should probably be rewritten from scratch.)
Things left to do:
Possible future enhancements:
It would also be useful for users to have access to snap-to grids or tools for cleaning up spatial arrangements. A user could approximately arrange a set of files, and then select them as a group and apply a "grid-ize" or "circle-ize" tool. Below are depictions of these two operations:
It would be interesting to study whether there is any difference in the ability of users of graphical and non-graphical systems to remember and type in pathnames. Perhaps users of UNIX shells, being forced to always type in pathnames, are much better at remembering them, and perhaps users of graphical browsers would not be able to remember or enter pathnames as quickly. Would users of a hybrid system eventually learn to type in pathnames very quickly, or would they be discouraged by the initial learning curve and fall back on the slower but easier graphical UI ?
File browsers such as those in Microsoft Windows or Mac OS represent files as icons or thumbnails to help distinguish them. However, unless icons are carefully chosen or are familiar to the user, having a multitude of different icon images or automatically-generated thumbnails can result in visual noise that is meaningless to the user.
To reduce the uniform look of the spatial layouts, it would be worthwhile to experiment with having different colour schemes, landmarks (such as 2D or 3D icons, images, or textures), or other visual cues for each directory. Ideally, the visual cues should be noticeable enough to be remembered by the user, but not so obtrusive as to distract or displease. If the visual cues are generated automatically, they should be easy to change by the user on demand.
(It is instructive to contrast the spatial views of spatialBrowser with webpages on the web: the latter have a very un-uniform look, and thus are more easily distinguished and remembered visually.)
It is possible that, by using annotations and by grouping files at different scales, users would be able to manage a larger number of files in each folder, and would have less need to fragment subgroups of files into subfolders.
Rather than representing the parent folder
Stuff like this:
It could be more usefully shown like this, after the
user has expanded the
Having subfolders expanded like this allows children and parent files to occupy a common 2D space, and changes the subfolders into explicit visual groupings. The subfolders essentially become light-weight windows, requiring very little management by the user since they are only visible when the user is browsing the corresponding parent folder.
Another possibility, rather than having documents expanded into small windows, would be to have rollover browsing: a cursor that dwells over a file would cause a popup window to appear containing the first few lines (or a summary) of the document, and perhaps by hitting a modifier key, the user would switch into a scrolling mode where mouse motion would scroll the popped-up document up and down.
In current traditional systems, the only way for users to organize electronic documents is to group them into explicitly named subfolders, and/or arrange them on a virtual desktop of limited size. The principle goals in the above suggestions are to provide the user with means for rapid and visual browsing of folders, files, and their contents, and to ease the organization of information (ephemeral or otherwise) by enabling the use of large, spatial layouts that can be as informal or as explicitly hierarchical as the user wishes.
This document is available online at
The links in the online document are lost when printed, and are hence repeated here:
 http://www.dgp.utoronto.ca/~mjmcguff/csc2537/proposal/  http://www.dgp.utoronto.ca/~mjmcguff/csc2537/project/spatialBrowser-0.1.tar.gz  http://www.dgp.utoronto.ca/~mjmcguff/csc2537/project/spatialBrowser  http://www.trolltech.com/products/qt.html  http://reality.sgi.com/mjk/#glut  http://mesa3d.sourceforge.net
Michael McGuffin, April 23, 2001