What is superfile?
superfile is a terminal file manager built around panels you keep open. Several directories sit side by side, a sidebar holds your home shortcuts, your pinned folders and the mounted disks, and a preview pane renders whatever the cursor is on: syntax-highlighted source, plain text, a directory listing, an image. Copying, moving and compressing run in the background and report themselves in a process bar, so a large transfer never freezes the panel you are browsing. Deleted files go to the trash and can be brought back, archives are extracted and created in place, and every key, colour, border and panel width is a line in a TOML file. It is a single static Go binary, and the command you type is spf.
> prompt, and a plugin list that keeps growing. Each of those arrives with new keys in config.toml and hotkeys.toml, and an old binary quietly ignores the options the current documentation tells you to set. Neither Debian nor Ubuntu packages superfile at all, so a current build is not a nicety here; it is the only way to have it through apt.
⚡ Key Features of superfile
🪟 Panels, Not One Directory
n opens another file panel and tab moves between them, each with its own path, sort order and selection. Copying between two trees becomes two keystrokes instead of two long paths.
👀 A Preview That Follows the Cursor
The side pane renders the highlighted file as you move: source with syntax highlighting from the built-in chroma or from bat, directory contents, and images in terminals that can draw them. f folds it away when you want the width back.
♻️ Deletes You Can Undo
ctrl+d moves files to the trash instead of destroying them, so a wrong keystroke is recoverable. D is the separate, deliberate permanent delete for the times you really mean it.
📊 A Process Bar for Long Jobs
Copies, moves and compressions run as tracked background jobs with their own progress, listed in the process panel on p. The file panel stays usable while a few gigabytes are on the move.
🗜️ Search, Jump, Zip, Unzip
/ filters the current directory as you type, z hands the jump to zoxide when it is installed, ctrl+a compresses the selection and ctrl+e extracts an archive where it stands.
🎨 Yours to Configure
One config.toml and one hotkeys.toml: every key is rebindable and a Vim set ships alongside the default, themes are files you can write, and sidebar width, border characters, sort defaults and preview width are all settings.
apt upgrade keeps you on the latest version.
📦 Installation from deb.griffo.io
Step 1: Add Repository
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh and Zed; superfile is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.
🧩 About the extrepo option. extrepo is Debian's own tool for external repositories: it writes the sources file and installs the signing key for you, checking the key against signed metadata first. This repository is registered with it as griffo, and the always-free mirror as griffo-free, so on Debian (bookworm, trixie, forky and sid) the commands above are the whole setup.
extrepo sets up the sources file and the key only, so a subscription's credentials still go in /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu is not covered, because extrepo publishes metadata for Debian suites only: there, use the sudo or root commands.
Step 2: Install superfile
# Install latest superfile
sudo apt install superfile
# Optional, for the plugins that need them: exiftool for the
# metadata panel, zoxide for the smart directory jump
sudo apt install libimage-exiftool-perl zoxide
# Verify installation, the command is spf and not superfile
spf --version# Install latest superfile
apt install superfile
# Optional, for the plugins that need them: exiftool for the
# metadata panel, zoxide for the smart directory jump
apt install libimage-exiftool-perl zoxide
# Verify installation, the command is spf and not superfile
spf --versionStep 3: First run
# Open the directory you are in
spf
# Or start somewhere else
spf ~/Downloads
# Two paths on the command line means two panels
spf ~/src ~/Downloads
# Where the config, hotkeys, theme, log and data files live
spf path-list
# Inside superfile, ? opens the full hotkey list
spf --help🎯 Basic Usage Examples
Starting it:
# The current directory
spf
# A directory you name
spf /var/log
# One panel per path, opened side by side
spf ~/src ~/Downloads /mnt/backup
# Try settings without touching your own files
spf --config-file /tmp/spf.toml --hotkey-file /tmp/spf-keys.toml
# What is installed?
spf --versionKeeping the config current:
# Add the fields and hotkeys a new release introduced,
# leaving everything you already changed alone
spf --fix-config-file
spf --fix-hotkeys
# Print every path superfile uses
spf path-list
# Environment, terminal and version details for a bug report
spf --debug-infoWiring it into your shell:
# Set cd_on_quit = true in config.toml, then put this in
# ~/.bashrc or ~/.zshrc so quitting with Q leaves you in the
# directory the panel was showing
spf() {
export SPF_LAST_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/superfile/lastdir"
command spf "$@"
[ ! -f "$SPF_LAST_DIR" ] || { . "$SPF_LAST_DIR"; rm -f -- "$SPF_LAST_DIR"; }
}
# The path that function reads
spf path-list --lastdir-file
# Use superfile as a file picker for another program: it writes
# the chosen path to the file and exits
spf --chooser-file /tmp/picked🔧 Tool Integrations
superfile deliberately leaves the specialist jobs to the tools you already run:
- Your editor:
eopens the highlighted file in$EDITORandEopens the directory indir_editor, so Neovim or Helix stays the editor and superfile stays the browser - zoxide: set
zoxide_support = trueand thezkey jumps through the same database your shell has been building for months - exiftool: with
libimage-exiftool-perlinstalled andmetadata = true, the metadata panel shows the full EXIF and media fields instead of the basics - bat and chroma: previews are highlighted by the built-in chroma, or by
batif you prefer its themes and setcode_previewer = "bat" - Your terminal and your shell: image previews use the terminal's own image protocol,
xdg-openhandles the file types you have not mapped in[open_with], andcd_on_quithands the last directory back to bash, zsh or fish
🚀 Why Choose deb.griffo.io?
- Official Debian: does not package superfile,
apt install superfilefails on a stock system - Building from source: current, but a Go toolchain on every machine and a binary that apt knows nothing about
- The upstream install script: one
curlfrom superfile.dev, convenient, but it writes into your system behind the package manager's back and the binary then nags you about its own updates - deb.griffo.io: latest version with automatic updates
- ✅ The Only apt Source: superfile is in neither the Debian nor the Ubuntu archives; this repository packages the official upstream release
- ✅ The Command Is spf: the package is called superfile because upstream is, and it puts
/usr/bin/spfon your PATH, which is the command every tutorial and every hotkey page uses - ✅ Automatic Updates: packages updated within hours of upstream releases, so
auto_check_updatecan go to false and apt can do the checking - ✅ Complete Package: the official upstream Linux build installed as
/usr/bin/spf, nothing added, nothing patched - ✅ Honest Dependencies: the binary needs nothing,
xdg-utilsis only recommended, and exiftool, zoxide, ffmpeg, poppler-utils and a clipboard tool are suggested for the optional features that use them - ✅ Two Architectures: amd64 and arm64, both statically linked Go binaries, so the same package runs on every suite
- ✅ Multi-Distribution: works on Bookworm, Trixie, Forky and Sid
- ✅ Easy Maintenance: standard apt commands for updates
📦 Package Build Repository
The Debian packages are automatically built and maintained in this GitHub repository:
- 🗂️ superfile-debian - Latest release builds
🔗 Related Packages
Also available from deb.griffo.io:
- Yazi - The other terminal file manager here, if a single panel and Lua plugins suit you better
- zoxide - The jump database behind superfile's
zkey - eza - Modern ls, for the listings you want without opening a file manager
- fzf Fuzzy Finder - Fuzzy finding for the searches that start at the shell prompt instead
mv.
💝 Support This Project
If this repository saves you time and effort, please consider supporting it!