This program is a simple file manager. It's meant to be small and fast and have a lot of shortcuts. You can associate actions with files (using its extension or its type given by file(1)). A popup menu gives you the available commands and shortcuts. You can have multiple views talking between each others. The filenames are colored using the LS_COLORS variable. You can also use it as a directory traveller. It uses the gtk+ library. You have the ability to not use the mouse at all, using mnemonics and shortcuts. I really think something like kfm and xfm is too slow and not enough shortcut driven. This program is meant to minimize memory consumption and to be very fast. This is taken from Linux Gazette #30, written by Larry Ayers: > As the GTK GUI programming toolkit matures more developers have been inspired to use it for the visual presentation of their programs. Pascal Rigaux, a French programmer, has come up with a small file-manager he calls sfm. Sfm isn't quite as simple as the name and initial appearance imply; it has a remarkably full feature-set for such a small program. > There has been a long succession of X Windows file-managers which use various icons to represent different types of files. This approach can be useful for people accustomed to a Macintosh or Windows environment, where this type of file-manager is common. These icons do have drawbacks, though, as fewer files will fit into a single display window which results in much more scrolling to find a particular file. The impact on system resources is considerable as well, as the X server is called upon to constantly update the display, and memory usage is much greater than what is needed by a text-based manager. In the end it's just a matter of preference. > Sfm is unusual in that it is an X-only file-manager which is also text-based (FileRunner is another). It also goes against the general trend towards mouse-based applications in that the keyboard interface is well-developed. > Appearance and Features: The default window size is rather small; my first impression was that this was a trivial application, probably a first GTK programming exercise without much utility. As I explored further (and actually read the README file!) I found that sfm's uncluttered appearance conceals an interesting and useful approach to the perpetual effort to contrive a useful interface to the ls utility. The interesting part is the right-mouse-button menu which offers a plethora of actions which can be performed upon the highlighted file, along with a submenu offering less-used possibilities. Please send all bug reports by e-mail to: pixel_@geocities.com sfm is free software. See the file COPYING for copying conditions. Pixel. WARNING I'm not good at all at documenting. Moreover I'm french and my english is, well, not great. Also don't trust this file too much. The only doc up-to-date is the source code. .sfm FILE The .sfm is auto-generated and keeps the actions you've choosen associated with a file. It's powerfull. Instead of explaining the capabilities I prefer telling you to look at the .sfm file, it should be explicit enough. FEATURES * popup menu giving the commands available (pops when rigth-button is press) * launching programs from the file using its extension or the information given by file(1) * automatic configuration of the correspondance extension-program, filetype-program * possibility to have multiple program associated with one file type or extension (eg: lpr and gv for .ps). There is a default one (it is the first in the configuration file). * possibility to ignore some extension (eg: all ~ are ignored => .c~ is the same extension as .c) * possibility to give a program (eg: gzip) associated with every file. This program can't be the first program (when you press Return, it's not called) * the directory you're in is displayed * you can edit the directory displayed * directories are kept in a stack so that you have a history of the last directories (use arrow keys up/down to access to a older/newer directory) * directories are listed first * you can sort by name or by extension * you can use sfm to change directoy: create an alias that calls "cd `sfm --cdm`". When you'll quit sfm, your directory will be changed (example of an alias in csh: alias cdm 'cd `sfm --cdm \!*`', or even alias cdm 'cd `sfm --cdm \!* | tail -n1`' that works with multiple views). * file coloring: environment variable LS_COLORS is used to colorate files * Copy-Paste * Cut-Paste * Link-Paste * Create empty file * Create directory * Rename * Delete * Searching a file by typing letters * Pasting a file (or directory) which already exists, paste to another name ending by -#n. Not clear, well an example is worth thousands of words: select file "aaa", Control-c, and Control-v creates files "aaa-0". It seems to be a problem when wanting to merge directories. GLOSSARY * active_file: * selected_files: * to_be_paste_files: SHORTCUTS * Return: launch the default program associated with the active_file if it exists. Otherwise prompt for a program to associate the active_file with * Shift-Return: prompt a list of the programs associated with the active_file (including the programs associated with every file) * Control-Return: launch every selected_files using their default associated program (if it doesn't exist, the file is just skipped) * Control-Shift-Return: prompt for a program to associate the active_file with * Mod1-Control-Return: it is a bit like Control-Return, but quite different also. This one calls only one program with the selected_files as arguments. It's interesting for something like "tar cvfz default.tgz". It prompts a list of the program associated with the active_file * Down: move active_file down, selected_files = active_file * Up: move active_file up, selected_files = active_file * Home: active_file = first file, selected_files = active_file * End: active_file = last file, selected_files = active_file * Prior: move active_file up one window, selected_files = active_file * Next: move active_file down one window, selected_files = active_file * Control-Down: move active_file down, selected_files unchanged * Control-Up: move active_file up, selected_files unchanged * Control-Home: active_file = first file, selected_files unchanged * Control-End: active_file = last file, selected_files unchanged * Control-Prior: move active_file up one window, selected_files unchanged * Control-Next: move active_file down one window, selected_files unchanged * Shift-Down: move active_file down, add active_file to selected_files * Shift-Up: move active_file up, add active_file to selected_files * Shift-Home: active_file = first file, from old active_file to active_file are added to selected_files * Shift-End: active_file = last file, from old active_file to active_file are added to selected_files * Shift-Prior: move active_file up one window, from old active_file to active_file are added to selected_files * Shift-Next: move active_file down one window, from old active_file to active_file are added to selected_files * Control-Shift-Down: cf Shift-Down * Control-Shift-Up: cf Shift-Up * Control-Shift-Home: cf Shift-Home * Control-Shift-End: cf Shift-End * Control-Shift-Prior: cf Shift-Prior * Control-Shift-Next: cf Shift-Next * BackSpace: up_directory * Delete: delete selected_files * Tab: give the Dir entry the focus * Control-d: give the Dir entry the focus * Control-D: give the Dir entry the focus * Mod1-d: give the Dir entry the focus * Mod1-D: give the Dir entry the focus * F2: rename active_file * Control-r: rename active_file * Control-i: invert selected_files * Control-t: toggle sort type (name, extension) * Control-k: kill all children (aka all actions) * F5: update * Control-l: update * Left: up_directory * Right: action * Control-1: new view #1 * Control-2: new view #2 * Control-3: new view #3 * Control-4: new view #4 * Mod1-1: new view #1 * Mod1-2: new view #2 * Mod1-3: new view #3 * Mod1-4: new view #4 * Control-a: select all * Control-c: selected_files are put in the to_be_paste_files for copying * Control-Shift-c: selected_files are added in the to_be_paste_files for copying * Control-x: selected_files are put in the to_be_paste_files for moving * Control-Shift-x: selected_files are added in the to_be_paste_files for moving * Control-s: selected_files are put in the to_be_paste_files for symbolic linking * Control-Shift-s: selected_files are added in the to_be_paste_files for symbolic linking * Control-n: create new directory * Control-Shift-n: create new empty file * Control-v: paste the to_be_paste_files * Control-q: quit * Mod1-q: quit * Control-Shift-q: quit living children in background * Mod1-Shift-q: quit living children in background * Control-w: put the selected_files in the X selection * Mod1-w: put the selected_files in the X selection * any-key with no modifiers (except Shift): active_file change to the file starting with RENAMING ACTION * Return: do it (the renaming) * Control-y: yank the primary X selection While renaming, a lot of things cancels the renaming.