### sfm-1.6 README file

    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.