FM: a dired inspired TUI file manager

Written in rust.

``` FM : dired like file manager

Usage: fm [OPTIONS]

Options: -p, --path Starting path [default: .] -s, --server Nvim server [default: ] -h, --help Print help information -V, --version Print version information ```

Screenshots

Installation

Usage

Start it from command line with no parameters :

sh fm

or with a path :

sh fm -p ~/Downloads

Features

Most of those features are inspired by ranger and alternatives (Midnight commander), the look and feel by dired.

Neovim filepicker

When you open a file with i, it will send an event to Neovim and open it in a new buffer. Recent versions of neovim export the RPC server address to an environement variable which is read if no argument is provided.

It should always work, even outside of neovim.

It's also possible to pass the RPC server address with fm -s address.

cd on quit

When leaving fm, it prints the last visited path. If you add this function to your zshrc / bashrc, it will listen to stdout and cd to the last dir.

bash function f() { # start the fm filemanager, enabling cd on quit. dest=$(fm $@) if [[ ! -z $dest ]] then cd $dest fi }

Default keybindings

Press h by default to display the help. Your current keybindings are shown. Here are the default ones.

` fm: a dired like file manager. Keybindings.

 Char('q'):      quit                                         ## Configuration
 Char('h'):      help
                                                              Every configuration file is saved in `~/.config/fm/`
 - Navigation -
 Left:           cd to parent directory                       You can configure :
 Right:          cd to child directory
 Up:             one line up                                  - **Colors** for non standard file types (directory, socket, char device, block device)
 Down:           one line down                                - **Keybindings**. Some should be left as they are, but all keybindings can be configured.
 Home:           go to first line                               use the provided config file as a default.
 End:            go to last line                                Multiple keys can be bound the the same action.
 PageUp:         10 lines up                                  - **Openers**. fm tries to be smart and open some files with a standard program.
 PageDown:       10 lines down                                  You can change that and use whatever installed program you want. Specify if it
 Tab:            cycle tab                                      requires a shell to be run (like neovim) or not (like subl).
                                                              - **Marks**. Users can save about 100 differents marks to jump to, they're saved
 - Actions -                                                    in your marks.config file. It's easier to let fm manage your marks, but if
 Char('D'):      toggle dual pane - if the width is sufficiant  you made a mess or want to start over, simply delete the file or a single line.
 Char('a'):      toggle hidden
 Char('s'):      shell in current directory                   ## Neovim file picker
 Char('o'):      open the selected file
 Char('i'):      open in current nvim session                 If you bind this key to start fm, it will send it its RPC server address to fm
 Char('P'):      preview this file                            as an argument.
 Char('T'):      display a thumbnail of an image
 Char('-'):      move back to previous dir                    When you execute `NvimFilePicker` on a file, fm will send an event to this
 Char('~'):      move to $HOME                                address and it should open the file.
 Char('M'):      mark current path
 Char('\''):     jump to a mark                               ## cd on quit
 Ctrl('e'):      toggle metadata on files
 Ctrl('f'):      fuzzy finder                                 When the application is stopped normally, it prints the last visited path on
 Ctrl('r'):      refresh view                                 stdout.
 Ctrl('c'):      copy filename to clipboard
 Ctrl('p'):      copy filepath to clipboard                   If you add the following function to your .zshrc file, you will cd on quit
 Alt('d'):       dragon-drop selected file                    to this directory.

 - Action on flagged files -                                  ## Contribution
 Char(' '):      toggle flag on a file
 Char('*'):      flag all
 Char('u'):      clear flags
 Char('v'):      reverse flags
 Char('c'):      copy to current dir
 Char('p'):      move to current dir
 Char('x'):      delete files
 Char('l'):      symlink files
 Char('B'):      bulkrename files

 - MODES -
 Char('m'):      CHMOD
 Char('e'):      EXEC
 Char('d'):      NEWDIR
 Char('n'):      NEWFILE
 Char('r'):      RENAME
 Char('g'):      GOTO
 Char('w'):      REGEXMATCH
 Char('j'):      JUMP
 Char('O'):      SORT
 Char('H'):      HISTORY
 Char('G'):      SHORTCUT
 Char('/'):      SEARCH
 Char('F'):      FILTER
     (by name "n name", by ext "e ext", only directories d or all for reset)

````