packages icon
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.