https://github.com/joachimschmidt557/nimmm
A terminal file manager for Linux
https://github.com/joachimschmidt557/nimmm
nim terminal
Last synced: 23 days ago
JSON representation
A terminal file manager for Linux
- Host: GitHub
- URL: https://github.com/joachimschmidt557/nimmm
- Owner: joachimschmidt557
- License: gpl-3.0
- Created: 2019-04-16T17:44:54.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-04-08T20:14:55.000Z (23 days ago)
- Last Synced: 2025-04-09T16:17:49.886Z (23 days ago)
- Topics: nim, terminal
- Language: Nim
- Homepage:
- Size: 373 KB
- Stars: 43
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nimmm
[](https://github.com/joachimschmidt557/nimmm/actions/workflows/build.yml)
A terminal file manager for Linux
[](https://asciinema.org/a/tGAr5PkesSBBgYBmzCQl30hE0)
# Table of Contents
1. [Features](#features)
2. [Installation](#installation)
1. [From source](#source)
2. [Nix](#nix)
3. [Usage](#usage)
1. [Configuration](#configuration)
2. [Default keymap](#keymaps)
4. [ToDo](#todo)
5. [External Tools](#external-tools)## Features
* Unlimited tab support
* Colorizing with `LS_COLORS`
* Custom keymaps (see below)
* Incremental search## Installation
I'm not aware of any distros packaging `nimmm` apart from NixOS, so
you will probably have to compile `nimmm` from source on non-NixOS
distros.You will need the [Nim development
toolchain](https://nim-lang.org/install_unix.html). Furthermore,
`termbox-devel` or `libtermbox-dev` is required for the terminal user
interface.```bash
git clone https://github.com/joachimschmidt557/nimmm
cd nimmm
nimble build
```### Nix
`nimmm` is included in nixpkgs.
```bash
nix-env -i nimmm
# or, if you prefer nix flakes
nix profile install nixpkgs#nimmm
```## Usage
### Configuration
Some functionality of `nimmm` is controlled via environment variables
similar to other programs:| Environment variable | Setting |
| --- | --- |
| `EDITOR` | file editor |
| `PAGER` | file viewer |
| `NIMMM_OPEN` | file opener |
| `NIMMM_256` | enable 256 color mode |Other configuration such as keybindings are configured in
`$XDG_CONFIG_HOME/nimmm.conf` where `$XDG_CONFIG_HOME` defaults to
`~/.config` if not set.The default keymap is similar to that of `less`.
| Key | Default binding | Description |
| --- | --- | --- |
| q | `quit` | quit |
| ! | `shell` | spawn shell in current directory |
| j | `down` | next entry |
| k | `up` | previous entry |
| h | `left` | go to the parent directory |
| l | `right` | navigate to directory / open file |
| g | `first` | first entry |
| G | `last` | last entry |
| ~ | `home` | go to home directory |
| . | `toggle-hidden` | toggle display of hidden entries |
| / | `search` | start searching |
| Esc | `end-search` | stop searching |
| e | `edit` | edit file in `$EDITOR` |
| p | `pager` | view file in `$PAGER` |
| r | `rename` | rename file/directory |
| Space | `select` | select / deselect current entry |
| a | `select-all` | select all entries in current directory |
| s | `select-none` | clear selection |
| X | `delete` | delete selected entries |
| P | `copy` | copy selected entries |
| V | `move` | move selected entries |
| f | `new-file` | create (touch) a new file |
| d | `new-dir` | create a new directory |
| t | `new-tab` | new tab |
| w | `close-tab` | close tab |
| Tab | `next-tab` | next tab |
| 1..0 | `tab-x` | go to tab 1..10 |Keybindings are customized in the configuration file. For example, if
you prefer more Emacs-oriented movement keybindings, you can do this:``` toml
[Keybindings]h=none
j=none
k=none
l=nonen=down
p=up
f=right
b=left
```## ToDo
* Help page
## External programs
| Dependency | Use |
| --- | --- |
| `cp`, `mv`, `rm`, `mkdir`, `touch` | `nimmm` delegates all operations on files and directories to these utilities to save all the error-handling and permission-checking work. These utilities should (hopefully) be on your UNIX system |
| `$SHELL` or fallback `sh` | an interactive shell |
| `$EDITOR` or fallback `vi` | an editor |
| `$PAGER` or fallback `less` | a pager |
| `$NIMMM_OPEN` or fallback `xdg-open` | a file opener |## License
`nimmm` is licensed under the GNU General Public License v3.0 only.