tfm

(terminal file manager)

A modern, mouse-first file manager with places sidebar, grid view, drag & drop, image thumbnails right inside your terminal.
Built on OpenTUI + Bun.

$ curl -fsSL https://raw.githubusercontent.com/clarkarch/tfm-tui/main/install.sh | bash

Already installed? tfm update installs the newest release, and asks first.

tfm ~
tfm browsing the home folder: places sidebar, grid of files, preview pane

Features

a GUI file manager that lives in your terminal

Mouse-first

Click, rubber-band select, right-click context menus, inline rename, no memorizing a modal keymap to get things done. ctrl+click toggles, shift+click ranges.

Drag & drop

Move files between folders with ctrl+drag. Drag out of the terminal to other apps and drop files in, cross-app DnD via the kitty graphics protocol (OSC 72).

Desktop integration

GTK bookmarks, recently-used files, XDG trash with restore, system clipboard bridge with GUI apps, removable drives via udisksctl — eject unmounts every partition and powers the disk off, and plug/unplug shows up live. Opt in to make tfm your default file manager. Undo/redo for every reversible operation: permanent delete / empty trash cannot be undone.

Embedded terminal

Right-click empty space → Open Terminal Here runs your $SHELL in a pane at the current folder. Drop files onto the prompt to paste their paths.

Previews & thumbnails

Image and video thumbnails (kitty graphics), tree-sitter syntax-highlighted text previews, folder stats, with a disk-cached thumbnail pipeline so folder revisits are instant.

Dual pane

Two independent file panes side by side, each with its own top bar and tabs. tab switches sides, F5 / F6 copy or move across.

Tabs

Per-pane tab strips with ctrl+t / w and ctrl+tab cycling, middle-click to close. Sessions restore them on launch.

Network locations

Open sftp://, smb://, WebDAV and FTP shares through gvfs, sidebar → Connect to Server…, credentials prompted in-app.

Archives

Open a tar.gz, zip, 7z (even a read-only rar) as a folder you can walk and preview, or right-click → Extract Here (staged, conflict prompt, undoable) / Compress to… across 13 formats.

Plugins

TypeScript plugins with hot reload: commands, context menus, previews, events, UI slots. Install from a git URL or tfm plugins add.

Animation

Staggered file entrances, sidebar and top-bar intros, auto-hide drawer slides — all tunable under Settings → animations, calm by default.

32 themes

Tokyo Night, Catppuccin, Dracula, Gruvbox, Nord, Rose Pine, Solarized… live-switchable in the settings menu, fully configurable via config.toml. Try them below.

Themes

32 bundled presets, switchable at runtime

click any theme to restyle this page, the same live palette swap ships inside tfm (esc → Settings → Theme).

Keys

muscle-memory bindings, every one remappable under [keys] in config.toml

type anywherelive search · enter opens first match
enter / f2open / rename
backspace / alt+upparent directory
escmenu (settings, view mode, sort, …)
ctrl+pcommand palette · run any action
ctrl+qquit
ctrl+z / ctrl+yundo / redo (ctrl+shift+z also redoes)
ctrl+x / c / vcut / copy / paste
ctrl+dduplicate
ctrl+aselect all
space / shift+arrowstoggle / extend selection
f1help
ctrl+t / wnew tab / close tab
ctrl+tabnext / previous tab
deletetrash (again in trash: permanent)
ctrl+click / shift+clicktoggle / range select
plain dragdrag out of terminal (kitty)
ctrl+dragmove inside tfm
right-clickcontext menu
ctrl+htoggle hidden files
tabswitch focused pane
F5 / F6copy / move to other pane
ctrl+shift+dtoggle dual pane
ctrl+shift+sconnect to server
ctrl+` / F4terminal
F3preview pane
alt+homehome folder
alt+left / righthistory back / forward
ctrl+shift+n / ctrl+alt+nnew folder / new file
ctrl+= / -zoom in / out
ctrl+rreload places
ctrl+alt+rrestart
ctrl+g / lgrid-list view / path bar
alt+enterproperties

Config

~/.config/tfm/config.toml, invalid values fall back per-key, never fatal

# ~/.config/tfm/config.toml, see config.example.toml in the repo
[ui]
sidebar-width   = 26      # 16..60 cells
tile-width      = 20      # 10..40 cells (grid view)
tile-height     = 5       # 3..10 cells
preview-enabled = false   # right-side preview pane
view-mode       = "grid"  # "grid" tiles or "list" rows
ui-style        = "solid" # "solid" filled panels; "outline" rounded borders; "outline-partial" outline chrome, solid floats
restore-session = false   # reopen last folder on launch
persist-undo    = false   # undo history survives restarts
transparent-bg  = "off"   # "off" opaque; "on" faithful hex; "force" terminal bg shows through

[theme]
bg     = "#1a1b26"   # or pick a preset: esc → Settings → Theme
accent = "#7aa2f7"

[keys]
quit = ["ctrl+q"]    # every action remappable, several binds allowed