art with code


Filezoo plans hodgepodge

Okay, so I have this quite nifty, if unpolished memory hog of a file manager. Where to go from here? What are my goals?

The goals I have for Filezoo are: 1) taking care of casual file management and 2) looking good.

Putting the second part aside, since it's just a matter of putting in months of back-breaking, err, finger-callousing graphics work and design innovation, let's focus on casual file management.

Casual file management

Casual file management is about having an always-on non-intrusive file manager at your beck and call in a place where you can summon it from with the flick of a wrist.

How I've been doing casual file management is roughly:
  1. Hit F1 to bring up a terminal window
  2. Move mouse cursor to the window
  3. cd whateverdir
  4. lr (ls -rt) or ll (ls -l)
  5. Shift-PgUp/PgDn to find whatever it is that I'm interested in
  6. Type command and tab-complete
  7. Hit enter
  8. Ctrl-D the terminal

The problem with using the shell for casual file management is that the shell does a pretty dreadful job at visualizing the filesystem and it's difficult to select files while reading ls output. The shell doesn't really do file system monitoring either. And it isn't pretty.

The shell does some things very well though. For one, it has a complete language and set of tools for operating on lists of files. Using the shell doesn't require moving your hands off the keyboard either[1]. And it has command history and tab-completion and loops and variables. Maybe it would be a good idea to have an embedded terminal like Dolphin et al., except put command output in a some sort of non-intrusive log window.

Random UI plans

Drag'n'drop and copy-paste both work by sending a source to a target with some action. possible_actions : source -> target -> (source -> target) list. When doing common interactions, pick the first action without asking and have the first action be the same regardless of target type. Dragging the selection to a directory would move it there, for instance. Use possible_actions to build the context menus.

Build a consistent vocabulary for doing things. Prune the menus of things that are better accomplished with drag'n'drop / copy-paste (you still have the shell for the non-dnd/copypaste-ways.)

Go hunting. Use different file managers and find out their good things and what makes them tick, then create a synthesis of the best features. Old programs still in active use might be a good source: you have to be doing something right to survive the vagaries of time. Perhaps clones of old programs would be an even better source, less prone to "this is what I've always used and always will, doggonit."

Profile the UI[2][3] and build the rest of the program to maximize UI effectiveness (including error recovery times.) Find the top-level tasks, decompose them into primitive operations and rebuild them.


The first month was about staking out a vision. The second month will be about achieving feature parity and a consistent user interface. The third month will be about optimizing the user interface with the power of Science into the fastest thing there ever was. And the fourth month will be pure art. Right. I give this plan a 7% chance of survival.

[1] In terms of navigation speed to known places, touch-typing and point'n'click are roughly equal, so the winner is the one that requires fewer context switches. If you have the mouse in your hand, point'n'click. If you're on the keyboard, type.

[2] Some empiric results (using the ghetto method of time read, do stuff, hit enter, deduct one mouse-kb-context switch time):
  • Moving hand from kb to mouse and back: 1.5 s
  • Hitting Ctrl-AnyKey: 1.5 s
  • Hitting a F-key: 1 s
  • Flicking mouse to screen corner: 0.5 s
  • Typing code/repos/filezoo: 3 s
  • Clicking code->repos->filezoo: 3 s
  • Typing /usr/lib/OpenGL- with tab-complete: 4.4 s
  • Clicking to /usr/lib/OpenGL- from home dir: Filezoo: 7 s, Konqueror: 11-14 s, Nautilus: 11 s, PCManFM: 10 s, Xfe: 9 s, Dolphin: 10 s. The difference in times comes from the the time it takes to search for OpenGL- in /usr/lib and the time it takes to open /usr/lib. A more specific UI profiler would help.
  • Selecting downloads/Doug Engelbart 1968 demo.avi: Filezoo: 4.2 s, Nautilus: 3.8 s, downloads/TL58.mp4: Filezoo: 4.3 s, Nautilus: 4.4 s.

[3] The CogTool project - tools for cognitive performance modeling for interactive devices
Post a Comment

Blog Archive

About Me

My photo

Built art installations, web sites, graphics libraries, web browsers, mobile apps, desktop apps, media player themes, many nutty prototypes