Skip to content

From noice to nnn

Mischievous Meerkat edited this page Sep 8, 2019 · 10 revisions

Why fork?

nnn was initially forked from noice but is significantly different today. I chose to fork because:

  • one can argue my approach deviates from the goal of the original project - keep the utility suckless. noice was rudimentary. In my opinion evolution is the taste of time.
  • I would like to have a bit of control on what features are added in the name of desktop integration. A feature-bloat is the last thing in my mind. Check out the design considerations for more details.

v1.0 was released on 13 Apr, 2017.

The name

The name nnn is a recursive acronym from Nnn's Not Noice!, suggested by a longtime friend.

nnn vs. noice

The nnn toppings section below is outdated and not updated anymore. nnn is under active development and new capabilities are being added continuously. To have a more recent overview of the current features in nnn please visit the features list in the project homepage and the ToDo list.

Original (noice) features

  • Super-easy navigation
  • Pre-defined associations for different file types
  • Jump to home directory
  • Filter contents in current directory
  • Show/hide hidden files
  • Sort entries by modification time (newest to oldest)
  • Spawn a SHELL in current directory (fallback sh)
  • Run top
  • Edit a file with EDITOR (fallback vi)
  • Page through a file in PAGER (fallback less)

nnn toppings

Behaviour and navigation

  • Detail view (default) with:
    • file type (directory, regular, symlink etc.)
    • modification time
    • human-readable file size
    • current item in reverse video
    • number of items in current directory
    • full name of currently selected file in status bar
    • show current entry number in status bar
  • Search-as-you-type
  • Navigate-as-you-type
  • Bookmarks
  • Run any number of custom scripts
  • Custom color for directories
  • Watch directory changes
  • Create, rename files and directories
  • Batch rename/move/delete current dir entries in vidir
  • Show details of the currently selected file (similar to stat, file output)
  • Show media information, list and extract archives
  • Disk usage analyzer mode (within the same fs, doesn't follow symlinks)
  • Volume capacity and volume free in help
  • Directories first (even with sorting)
  • Pin and jump to a directory
  • Sort numeric names in numeric order
  • Case-insensitive alphabetic content listing instead of upper case first
  • Key - to jump to last visited dir, & to jump to initial dir, ~ takes HOME
  • Roll over at the first and last entries of a directory (with Up/Down keys)
  • Remove navigation restriction with relative paths (and let permissions handle it)
  • Sort entries by file size (largest to smallest)
  • Invoke ^K absolute file path copier (set using environment variable NNN_COPIER)
  • Change to last visited directory on quit
  • Add ^Q as shortcut to quit (to exit even from filter mode)
  • Support vlock as terminal screensaver
  • Remove code to run top
  • UTF-8 support

File association

  • open with custom application
  • nlay - customizable script to handle actions (retired)
  • Support NNN_USE_EDITOR to open text files in EDITOR (fallback vi)
  • Support NNN_DE_FILE_MANAGER

Optimization

  • All redundant buffer removal
  • All frequently used local chunks now static
  • Do not deallocate, re-use memory till program exit
  • Remove some redundant string allocation and manipulation
  • Simplify some roundabout procedures
  • Compiler warnings fixed
  • strip the final binary
  • more on performance...
Clone this wiki locally