sahwar / fm

A terminal based file manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Keep those files organized

Latest Release GoDoc Build Status

default screenshot

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

default

Gruvbox

gruvbox

Nord

nord

Usage

  • fm will start fm in the current directory
  • fm update will update fm to the latest version
  • fm --start-dir=/some/start/dir will start fm in the specified directory
  • fm --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 at ~/.config/fm/config.yml when you first run fm (On windows it will be C\:\\Users\\username\\fm.yml)
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

  1. Clone the repo
git clone https://github.com/knipferrc/fm
  1. Run
make
  1. Build a binary
make build

Credit

About

A terminal based file manager

License:MIT License


Languages

Language:Go 75.2%Language:Shell 24.5%Language:Makefile 0.3%