Orthodox File Managers Standard 2004 (OFM2004) -- advanced OFM requirements

The Orthodox File Managers Standard is undated periodically (usually once in five years) to reflect progress in OFM implementations.

The Orthodox File Managers Standard 2004 specified 4 areas of compliance: basic, command line (including user and extension menu), viewer/editor, and VFS.  

The compliance in OFM2004 is measured a way similar to TCP/IP addresses i.e. 100.45.0.0 means that particular OFM has a score 100% on part 1 (basic compatibility), score 60% out  on the part 2  and zeroes on the part three and four of the standard (see below).  In this case the average score would be 40% and it does not tell the whole truth as this implementation perfectly implement all basic features. 

The score is determined separately for each section of the standard. Each section consists of  subsections that  specified measurable requirements that need to be met.  Each subsection has a Weight that determine its weight in the total score.

Important notes:

The OFM2004 standard consists of 3 parts

Part 1: Basic Compatibility

Part 2: Shell Execution compatibility ( Command Line, user menu and extension menu)

Part 3: Built-in Editor and Viewer  (Built-in Editor is optional for GUI based implementations)

Part 4: Virtual file systems support compatibility

Generally for the inclusion into one of the sections of the standard the feature needs to be present either in MC (as a leading Unix-based implementation), FAR or NCW 2.0 or be consistently implemented in at least two other major OFM implementations (for example XTree virtual file system is consistently implemented in Total Commander and Northern Captain with the hotkey binding Ctrl-B) and have stable semantics. 

Hotkey assignments listed below can be different from recommended, if key remapping capability is implemented in a particular OFM, otherwise 0.66 coefficient is used if semantically operation in implemented correctly. For simplicity all numbered requirements have an equal weight.

All features are assigned weight on the scale 1-3. It is used in calculation of compliance with the standard. 

If the weight is not stated it should be assumed to be 3

Part 1. Basic compatibility

  1. Panel navigation and basic hot keys compatibility:
  2. Compatibility of  F1..F8 operations:
  3. Panel Tree View and Directory Search panel compatibility:
  4. Tree Panel Hotkeys Compatibility
    1. Tree View panel
      1. In tree panel usual keys can be using for moving the directories to the opposite panel.
      2. Regular copy/move keys should also work from the regular panel if tree panel is the target. In this case the target directory is the current directory on the tree panel.
      3. Delete operation should work on tree panel.
      4. Movement of the cursor on the panel with tree representation should not lead to change of the directory on the current panel unless Ctrl-Q was additionally pressed (quick mode activated). 
      5. Ctrl-enter should paste the current directory in the command line
    2. Quick search in Tree View panel:
      1. Ctrl-Q on tree panel should switch the panel into "quick search mode" like normal panel. In this mode changing the directory on the active panel should lead to display of the content of this directory on the passive panel. In quick search mode Ctrl-Enter should  jump to the next directory with the same prefix (If no prefix is specified it find the next directory with the same name, if any)  In normal mode it should paste the current directory into the command line.
      2. Ctrl-Enter should  jump to the next directory with the same prefix. If there is no text in the quick search window quick search mode should find the next directory with the same name, if any.
      3. Rescanning of the directory tree should be available via Ctrl-R and/or F2. Pressing Alt-F10 should not produce rescanning of the disk without reason.
    3. Both panels
      1. Backspace should move to the previous level of the directory tree.
      2. Gray+ (or spacebar), Gray- (backspace) should move up and down the tree to the next branch on the same level  (left arrow and right arrow can be used in Unix).
      3. Quick search should be activated for Directory Search panel on invocation .
      4. Ctrl-PgUp/Ctrl-PgDn should work as usual on both Tree panel and Directory search panel.
         
  5. Selection/deselection compatibility:
    1. Ins should select a single file (cursor may move one line down if such option is set);
    2. Gray+ and Gray- should select and deselect file using a regular expression or mask;
    3. Gray * should invert the selection;
    4. Special keys (Ctrl-Gray+ and Ctrl-Gray- are recommended) for selecting deselecting all files regardless of current selection;
    5. Selection and deselection operations should be persistent (second selection operation should add to existing selection, deselection should remove some or all files).
    6. Restore Selection operation (no standard key exist). It should restore highlighting of files selected for last copying operation.
    7. UNIX-style regular expressions should be supported  in selections (expression *a*.* should select files like my_bak.tmp and my_bat.txt, not all files)
    8. Ability to select all file with the extension equal to the extension of the current file or the last part of the filename in UNIX (Ctrl-Enter for the extension).
    9. Selections history should be available with the ability to open history with Ctrl-ArrowDn, or browse it in the input line ( C-shell style) with ArrowUp and ArrowDn keys.
    10. Option "Process multiple names" should be provided and if activated should permit specified several regular expressions (or DOS masks) separated with ";" (semicolon), for example
      *.html; *.htm
  6. Quick view compatibility:
    1. The viewer should be invokes according to the extension menu (file association list) information.
    2. For archive content of the information files should be shown (list of information files should be customizable, but default should include  File_id.diz, read.me, readme.1st). In case no description is available the content of the archive should be should.
    3. Pressing F3 or Alt-F3 in quick view should lead to switching to regular (wide screen ) view.
    4. Pressing F4 should invoke the editor in the panel (no full screen)
       
  7. Quick search compatibility:
    1. Alt-letter (or Ctrl-Alt for GUI-based versions) quick search option should be available for both regular and tree views of the panel.
    2. Ctrl-Enter during quick search should move to the next item with given initial letters.
       
  8. FindFile(Ctrl-F7) compatibility
  9. Sorting directories compatibility:
  10. User menu script invocation compatibility (GUI implementations can provide alternative methods to run custom scripts with parameters taken from the panel):
    1. The ability to specify the hotkey and the label for each script
    2. Multiple commands can be written without need to create a separate batch file
    3. Include files are permitted in the user menu
    4. The ability to use symbols from both passive and active panels in user menu commands
       
  11. Additional file commands compatibility:
    1. File attribute command (no hot key specified, should be available via menu) should permit changing of attributes and file stamps of a  single file or group of files, or subtree (if applied to the directory) as well as ownership (in Unix);
    2. File case conversion command should permit changing of the case of the file or group of files (not applicable to DOS 6 and lower)
       
  12. Association management compatibility:
    1. The ability to specify one or several associations for the same extension
    2. The ability to use macrosymbols in the association table
       
  13. Dialog box extensions:
  14. Working with attributes
     
  15. Compare directories
  16. Compare files operation
  17. Favorite directories list. Basic functionality should be close to provided by Netscape:
  18. Command line history
     
  19. Keyboard macro support (DN, FAR, JC).

Part 2: Shell Execution compatibility

  1. Shell windows compatibility
    1. The command line at the bottom of the screen actually is a minimized to one line shell windows and there should be at least two capabilities to expand them
    2. Ctrl-O should  maximize shell screen to the whole terminal window (hide panels). In the resulting screen standard shell functionality should be present as if this is a telnet session to localhost. For example, if the shell for a particular OS provides browsing of shell history with arrow keys this should work.  (for COFMs only, GOFMs can extend active panel to the full screen, if they do not support OS shell screen view);
    3. Ctrl-F1/Ctrl-F2 should provide a view of the shell screen with overlaid one panel. If this panel contains minimized editor it should remain functional.
    4. There should be either the ability to expand/shrink shell screen one line at a time (like in Far) or provide one step expansion to half screen (like in classic NC implementation since NC 2.0) with a hotkey.
       
  2. Command line (minimized shell window) compatibility:

    1. Cursor movement keys should work like in OS shell when panels are hidden
    2. Command history  availability:
      1. Should be available  both via hotkey (Alt-F8)  and C-shell-style browsing mode. 
      2. In C-shell style browsing mode  the retrieval of a command from the history into the command line should be possible with the hotkeys, for example (for example, Alt-E, Alt-X like in NC5).
      3. The possibility of  sorting command history in history window and eliminating duplicates.
    3. Command completion feature: Alt-Tab or Ctrl-End at the end of the command line complete the command starting with these symbols from the command history. In case several variant of completion are possible they should either displayed or it should be possible to press Ctrl-End several times to find the next command in the history that has the same prefix;
    4. Change of the current directory via command or script execution changes the directory on the active panel;
    5. The ability to execute arbitrary command or script for selected files (DN, VC, FAR, WinCmd) ;
       
  3. The "special paste" operation compatibility. The following operation should be supported for command line (minimized shell window) mode:
    1. Inserting current path from left and right panels (Ctrl-[ and Ctrl-])
    2. Inserting the  current file Ctrl-Enter  (if one or several files are selected they should be inserted into the command line instead of the current)
    3. Inserting the current file with the full path Ctrl-Shift-Enter
    4. Optional
      • Inserting the current file from the passive panel
      • Inserting the  current file with abs path from the passive panel
         
  4. User menu (usually bound to F2). Also called Start menu. Should provide the possibility to run user shell scripts with substitution of macro variables that represent information extracted prom active or passive panel.  The menu may contain submenus. Each item of the menu should be activated by its own letter (hotkey).
     
    1. You can create three types of user menu: global (or main), user-based and directory based.
      1. The main user menu is called if no local menu for the current folder is available.
      2. User is called if user defined its own menu in his home directory
      3. The local menu may be placed in any folder.
         
    2. You may switch between the main menu and the user menu by pressing Shift-F2 instead of F2.
       
    3. If local (directory-based)  menu is present then it overrides both user menu and main menu
       
    4. Format of the macro variable is not defined in this standard but following Midnight Commander conventions is recommended. 
       
    5. To execute a user menu command, select it with cursor keys and press Enter.
      You may also press the hot key assigned to the required menu item. It is possible to use digits, letters and function keys (F1..F12) as hot keys in user menu. If F1 or F4 is used, its original function in user menu is overridden. However, you still may use Shift-F4 to edit the menu.
       
    6. User should be able to edit user menu using regular built-in editor.
       
    7. Two styles of macro substitution symbols are acceptable (MC-style or NC-style). MC style is recommended and NC style is deprecated. 
       
      1. The MC-style naming system for macro substitution symbols for active panel (see nelow the set for passive panel)
         
        • "%f" The current file name.
        • "%F" The current file in the unselected panel.
        • "%d" The current directory name.
        • "%D" The directory name of the unselected panel.
        • "%t" The currently tagged files.
        • "%T" The tagged files in the unselected panel.
        • "%u" and "%U" Similar to the %t and %T macros, but after the operation all selected files are untagged. That means that this macro can be used only once per menu entry (or extension entry), because on the second and subsequent invocations there will be no tagged files.
        • "%s" and "%S"  The tagged files if there are any. Otherwise the current file.
        • "%cd" This is a special macro that is used to change the current directory to the directory specified in front of it. This is used primarily as an interface to the VFS.
        • "%view"  the invocation of the internal viewer. An argument to force the viewer in a particular mode can be passed: ASCII to force the viewer into ASCII mode; hex to force the viewer into hex mode;
        • "%%" The % character
        • "%{some text}" Popup an input box and prompts for the substitution.   The user should be able to cancel input ( ESC or F10 recommended).
           
      2. There should also be a special prefix of suffix that turns macro symbols for active panel to macro symbols to passive panel, if applicable, for example %f is the current file name on active panel but %-f is the current name on the passive panel.
         
      3. NC-style naming system for macro substitution symbols in OFMs (not recommended for Unix implementations, they should use mc-style symbols, see above). At least the following macro symbols should be defined:

          !           The current file name without extension
          !.!         The current file name with extension
          ^!          The current filename of the passive panel without extension
          ^!.!        The current filename of the passive panel
          !&        List of names of selected files
          !:          The current drive
          !\  or !/   The current path

        Some prefix or suffix (for example ^) can be used to define the same macros for the passive panel to refer to the passive panel.

        NC style is deprecated and should be avoided in new implementations of OFMs
         
    8. Optional: MC-style system of hiding menu elements using "visibility predicates".
       
  5. Extension menu (file association list)
    1. should allow regular expressions in defining associations (like in mc)
      Should allow the following  commands to be associated with a particular file type, defined by regular expression  or DOS-style wildcard mask or shell script:
      1. Execute command:    Performed if Enter is pressed
      2. Alternative execute   Performed when GreyEnter or Ctrl-PgDn is pressed
      3. View command:          Performed if F3 is pressed
      4. Alternative view         Performed when Alt-F3 is pressed
      5. Edit command:            Performed if F4 is pressed
      6. Alternative Edit:         Performed when Alt-F4 is pressed
         
    2. In case multiple association are trigged by the file a menu should be displayed and the user should be able to select the best association manually.
    3. The user should be able to add new associations with the Edit associations command in the Commands menu.
    4. There should be a possibility to block switching  the panels off during the execution of the command (implementation dependent, for example using special prefix)

Part 3: Built-in Editor and Viewer
(optional for GUI-based OFMs):

  1. Built-in viewer:
    1. Should be able to work in full screen mode and in the panel mode both in quick view and in regular mode (via some hotkey (for example Alt-F3). This mode should be configurable in Options menu as an alternative for external viewer invocation. This is very useful if 132 symbol mode is used.  
    2. The ability to expand shell windows described in Part 2 should be preserved. For example Ctrl-O should maximize shell windows to the whole screen.
    3. Special hot key to go to a line number (Ctrl-G or Ctrl-F8). The ability to go to the absolute or relative (+5, -5) line number as well as the percentage of the file (FAR). A mouse click on the current line number should open panel to specify line number to go. 
    4. End should go to the end of the file; Home to the beginning of the file;
    5. Wrap/unwrap long lines feature should be available via F2;
    6. The ability to view file in hex should be provided (via F4)
      Optional: The ability to jump to hex offset and/or line number;
    7. Search compatibility
      1. The ability to search for both text strings (case sensitive or not) and regular expression (F7). Default for F7 search is text string or configurable. Default hotkey for RegEx search is "/" or "?".
      2. The hotkey for repeat search (F17, Shift-F7)
      3. The ability to search in reverse direction (Alt-F7 or Ctrl-Alt-F7);
      4. "/" and "?" keys should serve as additional hotkeys for regular expressions search forwards/backwards as in many unix tools (FC).
    8. F3 exit the viewer -- very convenient key assignment for quick exit from the viewer (MC,FAR);
    9. Autodetection of UNIX-style text files (in Windows) and DOS-style in Unix;
    10. Bottom menu changes when Ctrl and/or Alt is pressed.
    11. Optional: Bookmarks mechanism should be provided
       
  2. Built-in Editor
    1. Autodetection of Unix/Dos style text files and preservation of the style in save.
    2. A user should be able to invoke the editor in the panel mode via some hotkey (for example Alt-F4). This is very useful if 132 symbol mode is used. In panel mode all command line insertion hotkeys should be redirected to the current position of the cursor in editor (Ctrl-[, Ctrl-], etc) 
    3. Special hot key to go to a line number (Ctrl-G or Ctrl-F8). The ability to go to the absolute or relative (+5, -5) line number as well as the percentage of the file (FAR). A mouse click on the current line number should open panel to specify line number to go. 
    4. Hotkey for finding matching bracket should be provided.
    5. Cursor movement. Please note that Ctrl-Home/Ctrl-End  go to top line/bottom line of the file;

         Left                    Character left
         Right                   Character right
         Up                      Line up
         Down                    Line down
         Ctrl-Left               Word left
         Ctrl-Right              Word right
         Ctrl-Up                 Scroll screen up (Weight 1)
         Ctrl-Down               Scroll screen down (Weight 1)
         PgUp                    Page up
         PgDn                    Page down
         Home                    Start of line
         End                     End of line
         Ctrl-Home               Start of file
         Ctrl-End                End of file
         Ctrl-N                  Start of screen  (Weight 1)
         Ctrl-E                  End of screen (Weight 1)
       
    6. Delete operations. It's mandatory to support standard block selection operations Shift-left/right/up/down and Ctrl-C, Ctrl-X and Ctrl-V as copy cut and paste. Please note that Ctrl-Delete (and/or Ctrl-T- delete word right of the cursor and  Ctrl-Backspace to the left of the cursor

         Del                     Delete char (also may delete block,
                                    depending upon Editor settings
         BS                      Delete char left
         Ctrl-Y                  Delete line
         Ctrl-K                  Delete to end of line
         Ctrl-BS                 Delete word left
         Ctrl-T, Ctrl-Del        Delete word right
       
    7. Block operations:

         Shift-Cursor keys       Select block
         Ctrl-Shift-Cursor keys  Select block
         Alt-gray cursor keys    Select vertical block
         Alt-Shift-Cursor keys   Select vertical block
         Ctrl-Alt-gray keys      Select vertical block
         Ctrl-A                  Select all text
         Ctrl-U                  Deselect block
         Shift-Ins, Ctrl-V       Paste block from clipboard
         Shift-Del, Ctrl-X       Cut block
         Ctrl-Ins, Ctrl-C        Copy block to clipboard
         Ctrl-           Append block to clipboard
         Ctrl-D                  Delete block
         Ctrl-P                  Copy block to current cursor position
                                 (in persistent blocks mode only)
         Ctrl-M                  Move block to current cursor position
                                 (in persistent blocks mode only)
         Alt-U                   Shift block left
         Alt-I                   Shift block right
       
    8. Search (regex support should be implemented)
         F7                      Search
         Ctrl-F7                 Replace
         Shift-F7                Continue search
      Optional:
      Alt-F7 - Search for same text in reverse direction;

    9. The ability to view hex representation of the current symbol in the upper menu;
    10. For Windows only: Bottom menu should change when Ctrl or Alt keys are pressed;
    11. Shift-F4 creates a new file (prompts for the name) instead of editing current;
    12. Ctrl-Q -- Quote character (insertion of special characters)
    13. Ctrl-Y -- delete  current line; Ctrl-T (or Ctrl-backspace) -- delete current word; Ctrl-Z or Alt-Backspace undo (at least the current line).
    14. Insert - Toggle Insert/Overstrike mode;
      Optional: hot key for Auto-indent mode;
    15. F2 - Save changes without exiting; Shift-F2 save with new name (SaveAs);
    16. ESC,F10 - Exit (should produce save prompt if changes were made); Shift-F10 - save and exit.
    17. Ctrl-[ Ctrl-] and Ctrl-Enter (or Shift-Enter) should paste left panel path, right panel path and the current file name at the cursor location.
    18. F6 -- if in viewer, switch from the viewing the file to editing it and vise versa, if in editing mode switch to viewing mode. 

Part 3. Virtual file systems support compatibility

  1. FTP virtual file system:
  2. Network "client server" mode: via TCP/IP (like in MC) and/or parallel cable (Total Commander).
     
  3. Archive virtual file system:
  4. Search VFS (optional if Script VFS is implemented)
  5. Xtree VFS  (also called "flat" VFS, recommended key assignment Ctrl-B)
    The ability to view all files in the subtree (current directory and all its subdirectories) as a double-width panel (like in Xtree) with all file operations available. This is a very important feature for system administration.  Filters on subtree should be available (Total Commander, Northern Capitan)
     
  6. Script VFS -- the ability run an arbitrary script that produce a list of names of files and view the result in the panel (MC panelize command).
  7. Briefcase VFS (panelizing history of visited directories and browsed files)
    • The ability to view the history of visited directories it in a virtual panel and be able to perform reasonable subset of operations on this list;
    • Hotkeys  and/or buttons to navigate history (like back and forward buttons in Netscape);
    • Ability to add directories from the favorite list to history
    • Ability to search history;