Before anyone yells at me "no! not more", I'd like to explain that these are not UI proposals. I think we have enough UIs for now. These are two separate ideas that can be applied to any file-selection dialog I know (GTK2.0, GTK2.4, windows, wmaker...) to improve usability. Both ideas sparked from recent discussions about using DB-like filesystems to simplify selection, but trying to get closer to current widely-available technology. 1) Directory filtering When selecting files of specific types, hiding directories that don't contain (recursively) files of that type. Suppose you're using the file open dialog to select audio files, and all your audio files are in places like /home/dmoisset/media/sounds/*.wav /home/dmoisset/programming/project/sound/test.wav /usr/share/sounds/foo.wav /usr/share/sounds/gaim/bar.wav /usr/lib/baz/quux.wav and you go to the root directory, the file selector should show [home] [usr] hiding /boot, /var, /etc. Let's suppose I select [home]. Now my only choice is [dmoisset] Perhaps there are some audio files in /home/someoneelse/, but I have no read access to them, so as a user, I couldn't care less. When I finally get to /home/dmoisset/media/sounds/ only .wav files should be shown (that is current behaviour, I think) The rationale for all this, is that if I say "I want to select a WAV file", the system should expose to me all choices to get to a WAV file, and shouldn't show me a lot of possible choices that won't help me get the WAV file I'm looking for. The idea is that there are a lot of dead-ends in the directory structure, and the dialog could help to hide them so I can get where I want. Hiding directories has the potential drawback (some tests should be made) that some guy could see the file open dialog with most of their home folder directories missing and say "hey! where is all my data!". I'd like to have some feedback about other bad points of this. 2) Path compacting Note that this idea is independent of the previous one, but they could work quite well together. While browsing the directory structure to find a file, there are lots of times when there is only one possible option to move forward. That step could be skipped. Let's use the previous file structure as an example. Suppose you don't have any extra files besides the one I've showed. The file dialog should show as initial options [home/dmoisset] [usr] Note that there is only one subfolder under /home, so asking the user where to go after he selected home is forcing him to do an extra step. With this proposal, he skips that intermediate step. If he selects [usr], he should be shown: [lib/baz] [share/sounds] This works quite well with directory filtering. Also note that if all my media files are in ~/Media, and a FO dialog opens in ~, it should go immediately to ~/Media being consistent with all this. In this way we get some kind of automatic positioning of the File Open dialog if the user uses this kind of structure (~/Media, ~/Documents, etc.), but he is no forced to use it and is given the choices if he puts media files somewhere else. Both things are only for the file open dialog, and make no sense in a file save dialog (they could make impossible to get to a folder). A variant to this would be hide folders with no write permission, and no writable subfolders. I'd like to know what do you think about them from an usability standpoint, and if it's possible to implement them I know there are some difficulties for implementing this, specially (1) ((2) is actually quite trivial). Some kind of file database should be implemented, something like the slocate(1) DB, a little more mimetype-aware. But I think it's quite closer to reality than a databased filesystem. I've written a small prototype to show these idea. You can get it from http://www.grulic.org.ar/~dmoisset/filesel.py you can run something like ./filesel.py *.doc, or ./filesel.py HOWTO and it uses the locate command to get the file lists, and shows the output as a tree, supposedly the tree that the file selector should show. You can change the line "compaction=1" to enable or disable idea (2). It's just a 1-afternoon prototype trying to be simple, not fast or small in memory. For the above directories, it should show something like /home/dmoisset media/sounds a.wav b.wav ... programming/project/sound test.wav /usr share/sounds foo.wav gaim bar.wav lib/baz quux.wav I really would like to know what do you think about the usability of this, and the applicability to GTK/GNOME file selectors thanks for your time, Daniel -- Must it be assumed that because we are engineers beauty is not our concern, and that while we make our constructions robust and durable we do not also strive to make them elegant? Is it not true that the genuine conditions of strength always comply with the secret conditions of harmony? -- Gustave Eiffel, 1887
Attachment:
signature.asc
Description: This is a digitally signed message part