felix
A TUI file manager written in Rust with Vim-style keybindings, file previews, and a focus on simplicity.
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 navigation —
h/j/k/land familiar modal keybindings throughout - File preview — text files are previewed with syntax highlighting; images are displayed if a compatible protocol is available
cdon 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
| Key | Action |
|---|---|
j / ↓ | Move down |
k / ↑ | Move up |
l / Enter / → | Enter directory or open file |
h / ← | Go to parent directory |
gg | Jump to top |
G | Jump to bottom |
dd | Move file to trash |
yy | Yank (copy) file |
p | Paste yanked file |
c | Rename file |
m | Create new directory |
/ | Filter entries |
s | Toggle sort order |
z | Unzip / decompress archive |
q | Quit (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:
| Feature | felix | yazi |
|---|---|---|
| Design philosophy | Simple, minimal | Feature-rich, async |
| Plugin system | No | Lua plugins |
| Image preview | Basic | Full (Kitty/Sixel/iTerm2) |
| Configuration | Simple TOML | TOML + Lua |
| Shell integration | cd on exit | ya helper |
| Learning curve | Low | Moderate |
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.