Linux File Managers
GUI File Managers
GUI file managers run as graphical desktop applications. They're the default choice for most desktop Linux users and integrate with your desktop environment's theme, drag-and-drop, and services like Trash and network mounts.
Dolphin — website | git
KDE's default file manager and arguably the most fully-featured GUI file manager on Linux. Supports split views so you can have two directories open side by side, has a built-in terminal panel you can toggle open at the bottom, generates rich previews for images, video, PDFs, and more, and integrates deeply with KDE services like KIO (which lets you browse remote filesystems like they're local). Highly configurable with toolbar editing and custom keyboard shortcuts. If you're on KDE Plasma, there's little reason to use anything else.
Nautilus — website | git
GNOME's default file manager, branded simply as "Files." Prioritizes a clean, uncluttered experience over power-user features — no toolbar by default, no status bar, no dual-pane. What it does have is a polished, modern UI that works well for everyday tasks and integrates tightly with GNOME Shell, including deep search via Tracker and Nautilus extensions. A good choice if you want something that stays out of your way, less so if you want control.
Thunar — website | git
XFCE's file manager. Thunar hits a sweet spot: it's genuinely lightweight and fast to open, but it's not stripped-down in any painful way. Its killer feature is the custom actions system, which lets you add right-click menu entries that run any shell command on selected files. A robust plugin system (thunar-archive-plugin, thunar-media-tags-plugin, etc.) extends it further without bloating the base. Good choice even outside XFCE if you want something fast and extensible without the weight of Dolphin.
Nemo — git
Linux Mint's file manager, forked from an older version of Nautilus when GNOME stripped out features users relied on. Nemo adds back dual-pane mode, a proper toolbar, a status bar showing file counts and sizes, and more sensible defaults throughout. Feels like Nautilus should feel if you want to actually get work done. Works fine outside of Cinnamon too.
PCManFM-Qt — git
The Qt port of PCManFM, used as the default in LXQt desktop environments. Extremely low memory footprint and near-instant launch time make it the go-to for old hardware or minimal installs. Doesn't try to do everything, but covers the basics well — tabbed browsing, bookmarks, basic network mount support. If your machine is struggling, this is worth trying.
Krusader — website | git
A dual-pane "commander-style" GUI file manager for KDE, modeled after Midnight Commander but with a full graphical interface. Aimed squarely at power users: it has a built-in batch rename tool, disk usage analysis, archive handling, a root-mode that opens a second instance with elevated privileges, and extensive keyboard shortcut customization. More complex to learn than Dolphin but far more powerful for heavy file management work. Requires KDE libraries.
Terminal File Managers (TUI)
Terminal file managers run entirely in the terminal. They're keyboard-driven, work over SSH without any extra setup, start instantly, and use almost no resources. Essential for server work; preferred by many power users on the desktop too.
yazi — website | git
A modern terminal file manager written in Rust, designed from the ground up for async performance. Opens large directories without blocking, shows image previews inline using terminal graphics protocols (Kitty, iTerm2, Sixel), and has a Lua plugin system for extending behavior. The config and keybindings follow a sensible design. Probably the best starting point if you're new to TUI file managers and want something that feels current.
ranger — website | git
One of the most widely-used terminal file managers. Uses a distinctive three-column "Miller columns" layout: the left column shows the parent directory, the middle shows the current directory, and the right shows a preview of whatever is selected. Configured in Python with a rc.conf file. Vim keybindings throughout. Highly scriptable — you can write custom commands, preview handlers, and key mappings. Slower to start than some alternatives due to Python, but very powerful once configured.
nnn — git
The fastest and smallest terminal file manager available. Near-zero dependencies, starts in milliseconds, uses almost no CPU or memory. Keyboard-driven with a minimal but efficient interface. Doesn't try to be a Swiss army knife — it focuses on navigation and launching files with the right tool. Plugins (written as shell scripts) extend it for previews, bulk rename, and more. Best choice when speed and footprint are the priority.
lf — git
Inspired by ranger but written in Go, so it starts faster and uses less memory. Single binary, no dependencies. Configuration is done via a plain text lfrc file with shell commands for previews, making it easy to customize without learning a new scripting language. Vim-style keybindings. A good choice if you like ranger's layout but want something leaner and more responsive.
Midnight Commander (mc) — website | git
The classic. A two-panel TUI file manager that's been around since 1994 and is available in virtually every Linux package repository. Built with ncurses, works anywhere a terminal works — including over SSH. Has a built-in file viewer and editor, FTP and SFTP support for remote browsing, and a familiar Norton Commander-style interface. Not the flashiest, but incredibly reliable and battle-tested. Great for SSH sessions and servers where nothing else is installed.
vifm — website | git
A two-panel terminal file manager built entirely around Vim's interaction model. If you use Vim daily, vifm will feel immediately comfortable — it uses the same motion keys, command mode, marks, macros, and even reads a vifmrc that resembles a vimrc. Configurable preview scripts, bookmarks, and custom commands. The best choice for Vim users who want their file management to feel like an extension of their editor.
joshuto — git
A ranger-inspired terminal file manager written in Rust, so it has ranger's three-column Miller columns layout with significantly faster startup and lower memory use. Adds tabs for managing multiple directory views at once, async file operations (copy/move without blocking), fzf fuzzy search integration, image previews, trash support, and bulk rename. Configured with TOML files split by concern (keymap.toml, theme.toml, mimetype.toml). A strong choice if you like ranger but want better performance.
xplr — website | git
A minimal, hackable TUI file explorer written in Rust with a Lua scripting engine. Doesn't try to be a full file manager by itself — instead it's designed as an "interactive orchestrator" that integrates with your existing CLI tools. You pipe xplr into fzf, fd, ripgrep, or whatever you use, and it provides the visual interface and keyboard navigation glue. Highly customizable through its Lua plugin ecosystem. Best for power users who want to build their own workflow rather than adopt someone else's.
broot — website | git
A Rust-based directory navigator that rethinks how you explore file trees. Rather than showing a full recursive tree (which becomes unreadable in deep directories), broot shows a smart condensed view that scales to fit your terminal, collapsing branches you haven't asked about. Fuzzy-search as you type, search file contents with c/pattern, use regex, combine filters with logic operators. Multi-panel mode for side-by-side browsing. Also integrates git status into the tree view. More of a "smart tree + navigator" than a traditional two-panel FM — excellent complement to your existing tools.
superfile — website | git
A modern, visually polished terminal file manager written in Go. Designed to look good out of the box with multiple panels, a built-in theme system, and a clean layout. Supports plugins, customizable hotkeys with vim-style config options, image previews, and common file operations. Easier to get started with than xplr or vifm — less configuration required before it feels usable. A good middle ground between nnn's minimalism and ranger's complexity.
Comparison Table
| Name | Interface | DE/Toolkit | Dual Pane | Vim Keys | Lightweight | Notable Strength |
|---|---|---|---|---|---|---|
| Dolphin | GUI | KDE/Qt | ✓ | ✗ | ✗ | Most features of any GUI FM |
| Nautilus | GUI | GNOME/GTK | ✗ | ✗ | ✗ | Polished, beginner-friendly |
| Thunar | GUI | XFCE/GTK | ✗ | ✗ | ✓ | Fast + extensible via plugins |
| Nemo | GUI | Cinnamon/GTK | ✓ | ✗ | ✗ | Nautilus with power features restored |
| PCManFM-Qt | GUI | LXQt/Qt | ✗ | ✗ | ✓✓ | Minimal resource use |
| Krusader | GUI | KDE/Qt | ✓ | ✗ | ✗ | Power user dual-pane on desktop |
| yazi | TUI | Terminal | ✗ | Partial | ✓ | Modern, async, image previews |
| ranger | TUI | Terminal | ✗ (3-col) | ✓ | ✓ | Miller columns + Python scripting |
| nnn | TUI | Terminal | ✗ | ✗ | ✓✓ | Fastest/smallest terminal FM |
| lf | TUI | Terminal | ✗ | ✓ | ✓✓ | ranger done leaner, in Go |
| Midnight Commander | TUI | Terminal | ✓ | ✗ | ✓ | SSH/FTP, battle-tested classic |
| vifm | TUI | Terminal | ✓ | ✓ | ✓ | Vim-native workflow in terminal |
| joshuto | TUI | Terminal | ✗ (3-col) | ✓ | ✓ | ranger layout in Rust, with tabs |
| xplr | TUI | Terminal | ✗ | ✓ | ✓ | Hackable Lua-scripted orchestrator |
| broot | TUI | Terminal | ✓ | Partial | ✓ | Smart tree navigator + fuzzy search |
| superfile | TUI | Terminal | ✓ | Partial | ✓ | Polished modern look, easy to start |
Quick Picks
- GUI daily driver → Dolphin or Nemo
- Low-spec machine → Thunar or PCManFM-Qt
- Power user GUI → Krusader
- New to TUI → yazi
- Terminal + Vim user → vifm or lf
- Speed above all → nnn
- SSH / server work → Midnight Commander
- ranger but faster → joshuto
- build your own workflow → xplr
- smart tree navigation → broot
- pretty TUI, easy setup → superfile
