felix

A TUI file manager written in Rust with Vim-style keybindings, file previews, and a focus on simplicity.

Screenshot of felix

felix is a TUI file manager written in Rust with Vim-style keybindings. It keeps things simple: navigate your filesystem, preview files, open them with configured applications, and perform basic file operations — all from the keyboard, without the complexity of a full-featured file manager.

Features

  • Vim-style navigationh/j/k/l and familiar modal keybindings throughout
  • File preview — text files are previewed with syntax highlighting; images are displayed if a compatible protocol is available
  • cd on exit — integrates with your shell to change the working directory to wherever you navigated when you quit
  • Configurable openers — define which application opens each file type in config.toml
  • Trash support — delete files to the system trash rather than permanently removing them
  • Bulk operations — yank, cut, and paste multiple files at once
  • Registers — yank files into named registers for multi-destination workflows
  • Sorting — sort directory entries by name, size, or modification time
  • Filtering — narrow the file list with an incremental search filter

Installation

cargo install felix

Or via package managers:

# Arch Linux
pacman -S felix-fm

# macOS
brew install felix

# Debian / Fedora
# Pre-built Linux binaries are available on the
# [releases page](https://github.com/kyoheiu/felix/releases).

Shell integration

To have felix change your shell's working directory on exit, add the shell function to your config:

# bash / zsh
source <(felix --init)

# fish
felix --init | source

Then use fx instead of felix to get the cd-on-exit behaviour.

Keybindings

KeyAction
j / Move down
k / Move up
l / Enter / Enter directory or open file
h / Go to parent directory
ggJump to top
GJump to bottom
ddMove file to trash
yyYank (copy) file
pPaste yanked file
cRename file
mCreate new directory
/Filter entries
sToggle sort order
zUnzip / decompress archive
qQuit (and cd if using the shell function)

Configuration

Felix reads from ~/.config/felix/config.toml:

# Default terminal to open in
terminal = "alacritty"

# Use the system trash for deletes
use_trash = true

# File type → opener mappings
[exec]
default = "nvim"

[exec.match_by_ext]
"pdf"                       = "zathura"
"png" | "jpg" | "jpeg"      = "imv"
"mp4" | "mkv" | "mov"       = "mpv"
"md"                        = "glow"
"rs" | "toml" | "json"      = "nvim"

Felix vs Yazi

Both felix and yazi are Rust TUI file managers with Vim-style keybindings. The key differences:

Featurefelixyazi
Design philosophySimple, minimalFeature-rich, async
Plugin systemNoLua plugins
Image previewBasicFull (Kitty/Sixel/iTerm2)
ConfigurationSimple TOMLTOML + Lua
Shell integrationcd on exitya helper
Learning curveLowModerate

Felix is the right choice when you want a lightweight, no-frills file manager that stays out of your way. If you need image previews, plugins, or a richer feature set, yazi is the better fit.