Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

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

Dr. Nikolai Bezroukov

Version 2.01 (Revised November 2012)

The Orthodox File Managers Standard is undated periodically (based on progress of leading OFM implementations) to provide common framework for OFM developers and minimize "reinventing the bicycle" effect.

The features defined in the standard are considered to be the most productivity enhancing. 

  1. Multiple tabs and restorable tab sets for each panel,  editor and viewer
  2. Built-in macro support and keys redefinition capability (extends part 1 or OFM1999)

  3. Tiling window manager based shell terminal implementation (extends part ? of OFM1999)
  4. Additional Features in Built-in Viewer
  5. Additional Features of Built-in Editor

  6. Virtual file systems support compatibility
  7. Perl-style regular expressions compatibility
  8. Plug-ins API

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. 

Notes:


Multiple tabs and restorable tab sets for each panel,  editor and viewer

Unlimited number of panels was pioneered in Dos Navigator in 1991. Total Commander can serve as a reference implementation of this feature. It has multiple tabs only for panels, but not for viewer and editor. Midnight Commander pioneered multiple tabs for editor.

There should be a possibility to save and restore predefined sets of tabs (workplaces).   Right this capability is implemented in Total Commander, and muCommander,

Here is how multiple tabs are implemented in Total Commander:

Tabs allow to switch quickly between multiple directories, separately for the left and right panel. Settings like the sort order, brief/full details, and the selections are preserved. You can save tabs to a file or load from a file. That means that preset configurations of tabs are fully supported.

In addition you have two options

There is a folder tab menu in Configuration menu.  It allows to configure several elements of  the behavior of folder tabs.

There are several ways to open a new tab:

  1. Ctrl+T opens a new tab, keeping the current directory.
  2. Ctrl+Up arrow opens the folder or archive under the cursor in a new tab.
  3. Shift +Drive selection opens the drive in a new tab.
  4. Shift pressed when using the function "Directory Hotlist" (Ctrl+D) also opens the directory in a new tab.
  5. In the right click menu of a tab, you can duplicate the tab, or copy it to the opposite file panel.
  6. Doubleclick or Middle Click on the free space in the tab header opens a new tab.
  7. Drag multiple folders with the mouse to an empty space in the tab header. When you see a mouse cursor with a little arrow in the file symbol, the folders will be added as additional tabs! This way you can also copy or move to these tabs.

To switch between tabs, you can either click them with the mouse, or press Ctrl+Tab. Ctrl+Shift+Tab switches to the previous tab.

Right clicking on the tabs will open a context menu with the following commands:

Opening, closing and rearranging:

Saving and restoring tab configurations

You can save tabs to file and after then restore(load) this configuration from the  file. This operation is available  via the right click menu. Useful e.g. for project-oriented working.

Note: To change the tabs in both windows, you need to combine two tab files by hand, and then rename one of the sections from [activetabs] to [inactivetabs] .

Built-in macro support and keys redefinition capability

This feature with varying degree of success is implemented in DN, FAR, and several other OFMs. 

Tiling window manager based shell terminal implementation

At the heart of Orthodox interface lies tiling windows manager implementation.  That mean that OFM implementation can reuse tiling windows manager already written as a base. A tiling window manager is simply a software that organize the screen into non-overlapping frames. OFM operated with three frames.

This simple three tiles interface proved to be more flexible and powerful that original creators of Norton Commander suspected. It is a really flexible powerful paradigm for performing complex file operations and at the same type way to integrate the shell and file manager in a really unique way. Actually this feature was even in NC 1.0 with its 50% mode when panels were only half of the screen and command window was occupied bottom half. Independently the idea of tiling shell terminal windows was developed by GNU screen and then by ratpoison windows manager both of which should serve as a source of inspiration for advanced OFMs.  

There are multiple tiling windows managers for X. Among them  is Ion and its derivatives:

Ion is a tiling and tabbing window manager for the X Window System. It is designed such that it is possible to manage windows using only a keyboard, without needing a mouse. It is the successor of PWM and is written by the same author, Tuomo Valkonen.[1] Since the first release of Ion in the summer 2000, similar alternative window management ideas have begun to show in other new window managers: Larswm, ratpoison, StumpWM, wmii, xmonad and awesome. First versions of Ion were released under the Artistic License, Ion2 and the development versions of Ion3 were released under the GNU Lesser General Public License (LGPL). However, the first release candidate of Ion3 included a license change to a custom license based on the LGPL (specifically modified versions must not use the name ion).[2] Since version 2, Ion has been scriptable in Lua.[1]

As of September 17, 2009, Valkonen states he is unlikely to continue development of Ion by himself. However, changes are still accepted through a review.[3]

The official home page went off-line early 2010. A mirror of the source (including the darcs repository) is available among other places here

A fork called notion has some ongoing activity as of June 2012.

For example Windows GUI-based OFMs can use Python-windows-tiler - Very basic tiler (LGPL). Here are some highlights:

A small simple tiler for Windows written in Python, using the pywin32 modules.

NEW VERSION 1.0 is out now, it introduces a config file which should be pretty self explanatory. It allows you to configure your hotkeys and set basic window rules based on the window's classname.

Please file any issues you have in the issues tracker with the corresponding error and errors.log(found in the directory PWT is running from)

Featuring:

Tiling window management
Workspaces
Per monitor tiling
Low use of resources
Ergonomic VI-based hotkeys

Visibility Predicates and Dymanmic User Menu

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. Dynamic user menu capability ("visibility predicates"): the set of extension that is displayed to user should be dynamic and depends of the context that exist in left and right panels. Here is an example taken from Midnight Commander User menu: 
    = t r
    + ! t t
    y       Gzip or gunzip current file
            unset DECOMP
    	case %f in
    	    *.gz) DECOMP=-d;;
    	    *.[zZ]) DECOMP=-d;;
    	esac
            gzip $DECOMP -v %f
    
    + t t
    Y       Gzip or gunzip tagged files
            for i in %t
            do
              unset DECOMP
    	  case "$i" in
    	    *.gz) DECOMP=-d;;
    	    *.[zZ]) DECOMP=-d;;
    	  esac
              gzip $DECOMP -v "$i"
            done
    
    + f \.tar.gz$ | f \.tgz$ | f \.tpz$ | f \.tar.Z$ | f \.tar.z$ | f \.tar.bz2$ | f \.tar.F$ & t r & ! t t
    z       Extract compressed tar file to subdirectory
    	unset D
    	set gzip -cd
    	case %f in
    	  *.tar.gz) D="`basename %f .tar.gz`";;
    	  *.tgz)    D="`basename %f .tgz`";;
    	  *.tpz)    D="`basename %f .tpz`";;
    	  *.tar.Z)  D="`basename %f .tar.Z`";;
    	  *.tar.z)  D="`basename %f .tar.z`";;
    	  *.tar.bz2) D="`basename %f .tar.bz2`"; set bunzip2 -c ;;
    	  *.tar.F) D="`basename %f .tar.F`"; set freeze -dc;
    	esac
    	mkdir "$D"; cd "$D" && ("$1" "$2" ../%f | tar xvf -)
    
    + t t
    Z       Extract compressed tar files to subdirectories
    	for i in %t
            do
    	  set gzip -dc
              unset D
    	  case "$i" in
    	    *.tar.gz)  D="`basename $i .tar.gz`";;
    	    *.tgz)     D="`basename $i .tgz`";;
    	    *.tpz)     D="`basename $i .tpz`";;
    	    *.tar.Z)   D="`basename $i .tar.Z`";;
    	    *.tar.z)   D="`basename $i .tar.z`";;
    	    *.tar.F)   D="`basename $i .tar.F`"; set freeze -dc;;
    	    *.tar.bz2) D="`basename $i .tar.bz2`"; set bunzip2 -c;;
              esac
    	  mkdir "$D"; (cd "$D" && "$1" "$2" "../$i" | tar xvf -)
            done

     

  2. Three level of user menu hierarchy. You can create three types of user menu: global (or main), user-based and directory based.
  3. Arbitrary hotkeys for user menu command. There should be possibility to assign additional hotkeys in addition to classic F2-<letter> style commands
  4. If multiple items match the one that should be executed should be user selectable.
  5. Output of user menu execution should be visible on command console.
  6. Operation of editing user menu using built-in editor with syntax highlighting should be available. 

Extension menu (file association list)

  1. Should allow regular expressions in defining associations (like in mc)
  2. Should allow the following  six 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

      If alternative is not defined primary binding is used.
       

  3. In case multiple associations are trigged by the file a menu should be displayed and the user should be able to select the best association manually.
  4. The user should be able to add new associations with the Edit associations command in the Commands menu.
  5. There should be a possibility to block switching  the panels off during the execution of the command (implementation dependent, for example using special prefix)

Additional Features in Built-in Viewer  

  1. Filtering and folding
    1. Ability to view only lines that satisfy given search predicate. Predicate shoudl be specified as Perl regular expression
    2. Selective folding. Ability to fold content based on a regex should be provided either directly or via viewer user menu.
  2. Ability to invoke viewer directly either via special option or special name of both (typically -e and -v). For example mc provides two options
    mc -e
  3. Split window view of the file.
  4. Highlighting of the results of the search.  Highlighting of found lines. Ability to jump to the next highlighted line.
  5. Ability to view panels in addition to ability to view shell terminal window (Ctrl-O).
  6. Backward search. The ability to search in reverse direction (Alt-F7 or Ctrl-Alt-F7).Default hotkey for RegEx search is "/" or "?". (forwards/backward) as in many unix tools (FC).

 

Additional Features of Built-in Editor

  1. Ability to invoke the built-in editor directly via special option(for example -e ) and/or command name  For example mc provides two options
    mc -e
    aliased to mcedit
     
  2. Syntax highlighting should be available
  3. Folding should be available
  4. Split screen capability should be available : there should be ability to split screen horizontally into two sunscreen and view different fragments of the editing buffer in each sunscreen
  5. Piping support within built-in Editor
    1. Built-in editor should be able to insert in the text all entities defined by panel environment variables plus at least one additional macro variable which defies selected block of text or current position of cursor if there is no selected block:
    2. This macrovariables should have a capability to export selection to shell using %b > notation
    3. This macrovariables should be able to redirect shell output to the current selection (or cursor position) using  >%b notation.
    4. Symmetric usage like %b > indent > %b should be possible too.
  6. Availability of user menu for built-in editor, separate from user menu for OFM.
  7. For built-in editor the capability to define macros should be provided.
  8. Ability to panelize editor (to fit editor window into a single panel with the other one (passive) visible.
  9. The ability to switch to panel view and back
  10. A user should be able to switch from built-in editor to the external editor both in normal full screen mode and in the panel mode. This is very useful if 132 symbols width of terminal 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) 

Virtual file systems support compatibility

OFM1999 contains three VFS: archive, serach and (implisifly) flattered subtree(X-tree) VFS

Among VFS that should be supported we can mention the following as the most productivity enhancing:

  1. FTP virtual file system:
  2. SFTP virtual filesystem. Similar to FTP (see FAR WinSCP plugin implementation)

  3. Network "client server" mode: via TCP/IP (like in MC) and/or USB cable (Total Commander).
     
  4. Xtree VFS  (also called "flat" VFS, recommended key assignment Ctrl-B)
    1. We will understand by Xtree VFS the ability to view all files in the subtree (current directory and all its subdirectories) as a double-width panel (like in Xtree) .
    2. This "flat view" of the subtree is a very important feature for system administrators.
    3. Filters on subtree should be available
    4. All file operations should be available.
       
  5. 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).
  6. Briefcase (temporary panel) VFS  (with the capbailities of panelizing results of search) history of visited directories and browsed files)
  7. History of visited directories VFS (it can be a very limited VFS -- essentially FAR functionality is enough)
  8. Favorites VFS. Ability to panelize list of directory favorites and to work with it like with a regular panel. Similar to history VFS but populated with all or manually selected subset of favorite directories.

Perl-style regular expressions compatibility

Implementation of Perl-style regular expressions in all selections, user menu and extension menu (with the ability to chose between Perl-style regular expressions as defined by pcre library and Posix regular expression as used in egrep).

Implementation of Perl-style regular expressions in all selections, user menu and extension menu (with the ability to chose between Perl-style regular expressions as defined by pcre library and Posix regular expression as used in egrep).

Plug-ins API

Those were pioneered by Far and found its way into Total Commander, so two reference implementations exist and it's no longer in a strict sense the cutting edge feature.

Right now plug-ins are also supported by EmelFM2 which actually is a very interesting OFM implementation and some new ideas.  

 



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D


Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: March 12, 2019