Because file management shouldn’t be painful.
Panefile is a keyboard-driven file manager for Linux and macOS. One window holds as many independent directory panels as you need, side by side — each with its own path, cursor, history, sort order and filter. No window per location, no tab to lose.
Five minutes, start to finish
Copying a handful of files into a new folder, in a second panel, without ever leaving the keyboard. Every key below is remappable.
- ↑ ↓ to move, → to go into a folder ← goes back up. Enter does the same as →, and opens a file when the cursor is on one.
- ⌘C on a file. Then the next one. Then the next Each press adds to the list rather than replacing it, so the files need not be next to each other. The header counts them as they go on. ⌘X builds a list to move instead.
- ⌘T for a second panel It opens beside the first, not on top of it.
- Tab to move between panels The focused panel has a coloured border — the one thing the design never lets you lose track of.
-
⌘N, type
photos/, Enter The trailing slash makes it a folder. Without it you get a file. - → to go into it, ⌘V to paste The whole list arrives at once, and pasting empties it — so the next ⌘C starts fresh. Large copies run in the background with a progress bar, and conflicts ask once, with an “apply to all” option.
- ⌘A to select them all, ⌘B to rename at once Find and replace, add a prefix or suffix, or number them — with every old → new pair shown before anything is renamed.
- ⌘W to close the panel Never the last one. ⌘Z undoes the move, the rename, or the trash — though not the copy, which is a thing that only ever added files.
On Linux that is Ctrl everywhere ⌘ appears above — one binding, correct on both.
Know the name? Type it. The cursor jumps to the first
file that starts with what you have typed, and pressing the same letter
again steps through the rest. That is why the letters are not bound to
anything else — though if you would rather have j
k back, it is a few lines of hotkeys.toml.
Files next to each other? Instead of pressing ⌘C file by file, hold Shift and use ↑ ↓ to sweep a run of them up, and one ⌘C takes the lot. A plain arrow afterwards clears the selection.
Prefer the mouse? Clicking a panel makes it the active one. ⌘click picks files out one at a time, Shiftclick takes a range, and dragging between panels moves within a disk or copies between two — hold Alt as you drop to be asked which.
Lost? F1 lists every action and its keys. Esc backs out of whatever you are in — a preview, a filter, selection mode — and never quits.
⌘, opens Settings, where the themes below can be picked
from a list rather than typed into a file. It writes to the same
config.toml and theme.toml you can edit by hand,
comments and all — neither way is the “real” one.
Panels, not tabs
Panels are peers. None of them is the parent of another, and none of them is a preview of another — which is what separates this from Miller columns. Copying between two directories means putting them side by side and pressing two keys, never dragging a window across a screen.
Up to ten at once
Create, split, close and cycle them from the keyboard. Below 400 px of width only the focused panel is shown, so it still works in a quarter-screen tile.
Independent state
Each panel keeps its own working directory, cursor, selection, history and filter, and a folder you sort differently keeps that order whenever you return to it. Splitting a panel copies its path but deliberately not its selection.
Quick Look
Space opens a rich preview of the cursor item. The arrow keys still move the panel cursor while it is open, so you can hold ↓ and flick through a folder of photographs.
Two searches
Ctrl+/ filters the directory you are in as you type. Ctrl+F walks the whole subtree on a worker thread and streams matches in, ranked.
Rename in bulk
Find and replace, add a prefix or suffix, or number a selection — with every old → new pair previewed live. Swapping two files' names works, because cycles are broken with a temporary.
Undo
Moves, renames, bulk renames and trashing are undoable. Copying and permanent deletion are not, and say so in the confirmation rather than pretending otherwise.
Fast enough to leave closed
A file manager you keep open because it is slow to start is a file manager that is always in your way. Panefile targets a painted window in under 80 milliseconds, and every release measures it — a build that regresses more than 15% against the recorded baseline fails.
Nothing eager
The syntax highlighter, the media backends, the D-Bus connection, every modal and every preview renderer are built on first use. A session that never previews a file never pays for one.
Nothing blocking
Every stat, read, copy, hash and thumbnail happens off the GUI thread. A 100,000-entry directory streams in as it is scanned rather than appearing all at once at the end.
Nothing hidden
The dynamic dependency list is checked on every build. A new load-time dependency is the most common way a program quietly gets slower to start, so it fails the build instead.
Everything from the keyboard
The mouse is supported and never required. Bindings are sequences of chords, so Ctrl+G h works alongside Ctrl+C, and every one of them is remappable in a plain text file. Letters are left free: type a name and the cursor goes to it. The only plain keys bound are . and Space. Ctrl is Command on macOS.
| Keys | Action |
|---|---|
| ↑ ↓ ← → | Move, go up, enter — or type a name to jump to it |
| Ctrl+T / Ctrl+\ | New panel, or duplicate this one |
| Tab | Next panel — Shift+Tab goes back |
| Space | Quick Look — Ctrl+Space cycles where it docks |
| Shift+↑ ↓ | Extend the selection — Ctrl+Shift+V makes plain arrows do it too |
| Ctrl+/ | Filter this directory — Esc clears it |
| Ctrl+F | Find anywhere below here |
| Ctrl+C / X / V | Copy, cut, paste |
| Ctrl+N | New file, or folder with a trailing / |
| Ctrl+B | Bulk rename the selection |
| Ctrl+Shift+A · Ctrl+E | Create an archive, extract one |
| Ctrl+Z | Undo a move, rename or trash — a copy is not undoable, and says so |
| Esc | Back out of a preview, a filter, or selection mode — never quits |
| Ctrl+W / Q | Close the panel, quit |
| Ctrl+G then g · h · r | Top, home, root — Ctrl+G is the “go” prefix, and yours to extend |
| F1 | Every binding, in a modal |
Themed in plain text
Twenty-three themes ship with it, all of them the real published palettes rather than approximations. Colours, spacing, row height and font are TOML; edit the file and the window restyles without restarting.
# ~/.config/panefile/theme.toml
[colors]
background = "#1e1e2e"
text = "#cdd6f4"
accent = "#89b4fa"
directory = "#89b4fa"
[ui]
row_height = 24
panel_padding = 8
Install
Arch Linux
From the AUR. The package pulls in every optional dependency, so a plain install is a full-featured one.
yay -S panefile-git
macOS
A real second platform, not a port shim: native paths, FSEvents, DiskArbitration and an app bundle.
brew install andyjeffries/tap/panefile
From source
Qt 6.7 or newer, CMake 3.25, a C++20 compiler. Nothing else is required; the optional pieces degrade gracefully.
cmake --preset release
cmake --build --preset release
Panefile is developed and tested on Arch + Hyprland and on macOS. X11 is best-effort. There is no hard dependency on any compositor.