Keep those files organized
About The Project
A terminal based file manager
Built With
Installation
Curl
curl -sfL https://raw.githubusercontent.com/knipferrc/fm/main/install.sh | sh
Go
go install github.com/knipferrc/fm@latest
AUR
Install through the Arch User Repository with your favorite AUR helper. There are currently two possible packages:
- fm-git: Builds the package from the main branch
paru -S fm-git
- fm-bin: Uses the github release package
paru -S fm-bin
Features
- Double pane layout
- File icons
- Layout adjusts to terminal resize
- Syntax highlighting for source code with customizable themes using styles from chroma (dracula, monokai etc.)
- Render pretty markdown
- Mouse support
- Themes (
default
,gruvbox
,nord
) - Render PNG, JPG and JPEG as strings
- Colors adapt to terminal background, for syntax highlighting to work properly on light/dark terminals, set the appropriate themes in the config file
- Open selected file in editor set in EDITOR environment variable
- Copy selected directory items path to the clipboard
- Read PDF files
Themes
Default
Gruvbox
Nord
Usage
fm
will start fm in the current directoryfm update
will update fm to the latest versionfm --start-dir=/some/start/dir
will start fm in the specified directoryfm --selection-path=/tmp/tmpfile
will write the selected items path to the selection path when pressing E and exit fm
Navigation
Key | Description |
---|---|
h or left | Paginate to the left |
or down | Move down in the file tree or scroll pane down |
k or up | Move up in the file tree or scroll pane up |
l or right | Paginate to the right |
G | Jump to bottom of file tree or pane |
g | Jump to top of file tree or pane |
~ | Go to home directory |
R | Go to the root directory |
. | Toggle hidden files and directories |
ctrl+c | Exit |
q | Exit if command bar is not open |
tab | Toggle between panes |
esc | Blur filetree input |
z | Create a zip file of the currently selected directory item |
u | Unzip a zip file |
c | Create a copy of a file or directory |
x | Delete the currently selected file or directory |
n | Create a new file in the current directory |
N | Create a new directory in the current directory |
r | Rename the currently selected file or directory |
m | Move the currently selected file or directory |
e | Open in editor set in EDITOR environment variable |
y | Copy selected directory items path to the clipboard |
/ | Filter the current directory with a term |
? | Toggle filetree full help menu |
ctrl+r | Reload config |
Configuration
A config file will be generated when you first run fm
. Depending on your operating system it can be found in one of the following locations:
- macOS: ~/Library/Application\ Support/fm/config.yml
- Linux: ~/.config/fm/config.yml
- Windows: C:\Users\me\AppData\Roaming\fm\config.yml
It will include the following default settings:
settings:
borderless: false
enable_logging: false
pretty_markdown: true
show_icons: true
start_dir: .
theme:
app_theme: default
syntax_theme:
dark: dracula
light: pygments
Local Development
Follow the instructions below to get setup for local development
- Clone the repo
git clone https://github.com/knipferrc/fm
- Run
make
- Build a binary
make build
Credit
- Thank you to this repo https://github.com/Yash-Handa/logo-ls for the icons