tfm-tui

clarkarchMIT活跃维护

一款以鼠标操作为主的现代终端文件管理器,基于 Bun 和 OpenTUI 构建,让习惯图形界面的用户也能在终端里高效管理文件。

🖱️ Modern mouse-first terminal file manager

v1.2.0发布于 2026-10-28 12:07 UTC356star13fork同步于 2026-11-10 18:01 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://raw.githubusercontent.com/clarkarch/tfm-tui/main/install.sh | bash
硬件要求按 README 说明

README 未说明具体硬件要求;仅支持 Linux,任意终端均可运行,但完整体验需要终端支持图片显示

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

Linux 终端文件管理器,以鼠标操作为核心,在终端里实现图形化文件管理体验

一款以鼠标操作为主的现代终端文件管理器,基于 Bun 和 OpenTUI 构建,让习惯图形界面的用户也能在终端里高效管理文件。

核心能力

  • 支持点击、框选、右键菜单和拖拽等鼠标操作
  • 提供网格与列表两种浏览视图及侧边栏书签
  • 边输入边搜索,可搜索子文件夹内容
  • 支持标签页、双窗格和窗格间拖放
  • 内置终端、文件预览和压缩包内浏览

容易踩的坑

发行版二进制未启用插件支持,插件功能仅在源码构建版本中可用;跨应用拖放仅支持 kitty 终端;Linux 控制台(TTY)下使用鼠标需先运行 gpm;打开文件、缩略图、USB 管理等功能依赖 xdg-open、ffmpeg、udisksctl 等可选外部命令

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.2.0
  1. v1.2.0最新正式版2026-10-28 · 2026-10-28 12:07 UTC

    tfm v1.2.0

    archbuildpluginsfirst paint
    x86_64-linuxaotoff296 ms (JIT baseline 472 ms)
    aarch64-linuxaotoff297 ms (JIT baseline 448 ms)

    The ahead-of-time binaries start about 1.6× faster than the JIT build they replace — measured on this runner, median of three boots each. They cannot load plugins — tfm plugins says so. A build from source still has plugins.

  2. v1.1.02026-10-19 · 2026-10-19 04:31 UTC
    查看更新说明

    tfm v1.1.0 🎉

    New stable release, version 1.1.0.

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

    New stuff

    • tfm update → checks GitHub for the newest release, shows what it found, asks before changing anything (--tag pins, --force reinstalls)
    • Update notices → off by default, one cached check a day; About row checks on demand
    • Command palette → ctrl+p searches and runs any action, and every action is a remappable keybind
    • Archive browsing → open a tar/tar.gz/zip/7z (even a read-only rar) as a folder you can walk and preview
    • USB eject → unmounts every partition on the disk, then powers it off, with an honest safe-to-unplug message
    • Hotplug → plug/unplug detected live via lsblk polling, no restart
    • Default file manager → opt-in first-boot prompt + advanced row, desktop icon and DBus FileManager1 wired
    • Smooth scrolling → grid keyboard jumps and the wheel glide instead of stepping a cell
    • Lazy startup → opt-in, defers boot work past the first paint ([ui] lazy-startup)
    • New scrim → modal backdrop fill/dim/none with a dim-strength knob, icons shaded instead of translucent
    • Animation grammar → sidebar/topbar/directory-bar/files intros share one set of knobs, plus hover nudges
    • Kitty DnD → self-drop answers the offer, and dragging across machines is implemented (thanks @jmote)
    • System ffmpeg → video thumbnails use your own ffmpeg now, the bundled sidecar is gone (install.sh probes for it)
    • Preview gutter → line numbers run to the bottom of the code viewport

    Faster

    • Lazy boot → skips the boot pixel wait and the default-manager probe off the hot path
    • Bun subprocesses → node:child_process gone, spawns ~2× faster (node:fs stays, it won the bench)
    • Painted by id → settings/menus repaint in place instead of rebuilding native nodes
    • Wheel drain → glides within its budget instead of a fixed beat

    Stability

    • No orphans → closing the terminal (SIGHUP/SIGTERM) reaps tfm instead of leaving it running (thanks @skiv4)
    • Arrow keys → no longer double-scroll the grid
    • Archive URIs → no longer path-resolved in the path bar or labels
    • 0.6.0 gaps → rename no-op, toolbar reseed, and a quit hang fixed
    • Clean installs → debug declared directly (usocket's transitive dep broke frozen installs)
  3. v1.0.02026-10-09 · 2026-10-09 14:02 UTC
    查看更新说明

    tfm v1.0.0 🎉

    First stable release, version 1.0.0.

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

    Performance

    • Icons rasterize 13–23× faster → in-process resvg (~0.4ms vs ~7ms CLI spawn, ~60× vs rsvg-convert), CLI fallbacks dropped
    • Thumbnails without spawns → Bun.Image in-process, ICO/TIFF/HEIC decoded in-process too
    • Theme switches stay warm → raster caches carry over, no full re-render

    New since beta

    • Video thumbnails → bundled static ffmpeg sidecar, no system ffmpeg needed
    • System theme → derives from your terminal's own colors via OSC query
    • Transparent-bg force → terminal background shows through regardless of preset
    • Outline icons → icon-style toggle with a full outline set
    • Settings upgrade → dependent rows hide behind master toggles, needs-restart badges, keybind conflicts offer an inline swap, yazi preset, more remappable nav
    • New default keys → F3 preview, ctrl+` terminal, alt+up/alt+home (all remappable)
    • Run prompt → executables launch from an in-app prompt instead of xdg-open
    • Open in New Pane → context-menu rows open into the other pane
    • F1 help → scrollable cheat sheet with live shortcuts
    • Pointer shapes → context pointer across the UI (text over inputs, grabs on drag)
    • Brand + About → tfm logo, about view with links and credits
    • Archives without tools → in-process tar/tar.gz/zip fallback, live progress for zip/7z
    • TTY support → gpm mouse on the Linux console, 16-color theme, force-glyph mode for buggy graphics
    • Installer rebuild → guided steps, source-build path (source.sh), terminal-file-manager second command, sidebar section titles
    • Sudo escalation → read/open/rename/copy/delete privileged files with one password gate

    Stability

    • Quit refuses while file ops are in flight, no more stranded files with no undo
    • Plugin veto now covers extract + compress, not just copy/move/trash
    • Archive extraction is staged + contained, ../ escapes land in trash, recoverable
    • Bulk rename re-checks targets at apply time, never silently overwrites
    • Per-mount trash no longer falls back to home trash on missing sidecars
    • Undo journal trash steps are idempotent, no more FAILED on already-gone targets
    • Folder totals count link-own sizes with shared inodes deduped
    • Copy landings are race-protected; undo identity uses birth time (ext4 reuses inodes)
    • Spawn paths hardened, missing binaries and wedged children degrade instead of hanging
  4. v0.1.0-beta.02026-09-15 · 2026-09-15 15:13 UTC
    查看更新说明

    tfm v0.1.0-beta.0 🥳

    New stuff

    • Dual pane → two file panes, own top bar + tabs each
    • Tab → switch focused pane · F5/F6 → copy/move to other pane
    • ctrl+shift+d → toggle dual pane (second pane follows your cwd)
    • Network locations → sftp/smb/WebDAV/FTP via gvfs
    • ctrl+shift+s → connect to server, credentials prompted in-app
    • Extract Here → staged, conflict prompt, undoable
    • Compress to… → picker, 13 formats (tar.gz/zip/7z/tar/xz/bz2/zst/lzma/lz4/br/lz/lzo/Z)
    • Bulk rename → F2 on multi-select, one stem + numbering, live preview
    • ctrl+d → duplicate next to source, even across directories
    • Recursive search → opt-in, walks subtrees (fd or built-in)
    • Delete progress → trash-empty/delete-forever with bar + cancel
    • ctrl+alt+r → restart without breaking the terminal
    • Plugins → TS files, hot reload, menus, previews, events, veto hooks, UI slots
    • tfm plugins → search/add/remove/update/new from CLI or esc → Plugins
    • Open ▸ flyout + Open With… → gio handler picker
    • Auto-hide panes → sidebar/preview/terminal slide back on mouse-near
    • File animations → fade/slide/stagger + easing/dir knobs (off by default)
    • Sidebar/topbar boot intros → fade/slide/stagger per item
    • Directory-bar animation → new crumbs cascade on navigate
    • Hover nudges → tiles + sidebar rows lift one cell
    • outline / outline-partial → border chrome styles
    • Transparent icons → opaque/transparent/transparent-partial
    • Leveled toasts → info/success/error, status bar is selection-only now
    • Remappable keys 17 → 35 → history, props, new file/folder, path edit, preview, terminal, view, zoom, pane + server actions
    • TFM_CONFIG → override config path · --debug → log file
    • tfm [PATH] → file path selects it on launch
    • Website → landing page yey
    • Plugin docs → docs/plugins.md + samples

    Faster

    • Windowed grid → renders visible rows only while scrolling
    • Listings cache → repaints skip the disk, stats cached for sorts
    • Shared collator → big-folder sorts stop rebuilding locale data
    • Visible-first thumbs → on-screen rasterizes before backlog
    • LRU icon rasters → capped memory
    • Counting pre-scan toast → big/slow transfers show progress early

    Safer

    • No self-copy → folder-into-itself refused
    • Anchored temp sweeps → no more deleting real .tfm-part* names
    • Failed rm keeps copy → partial cross-device cleanup fixed
    • Stash-fail aborts → never overwrites without undo
    • Rename-undo restores → no silent clobber
    • Durable copies → tmp → fsync → atomic rename
    • Serial op queue → trash/transfer/restore can't interleave
    • Undo journal → opt-in, survives restarts (7-day expiry)
    • spawnSafe → missing binary can't kill the TUI

    First beta. Usable daily, but back up anything irreplaceable first.

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

    Ive been making this project solo so if you found any issue i haven't encountered or just have feature requests, feel free to open an issue

  5. v0.1.0-alpha.11tfm v0.1.0-alpha.112026-08-29 · 2026-08-29 07:08 UTC
    查看更新说明

    New alpha test build. :partying_face:

    New in this build

    • Tabs. You can now open several folders side by side. Each tab keeps its own history. Ctrl+T opens a tab, Ctrl+W closes it, and Ctrl+Tab switches between them. You can also drag a folder onto a tab, and it opens there.

    • List view. The file view can now be a list instead of a grid. Each row shows the icon, name, size, and date. You can switch between grid and list at any time. Images and videos show thumbnails in both views.

    • Video support. Video files now show a thumbnail and a preview picture. This needs ffmpeg on your system. Without it, videos show a plain icon.

    • Settings/Config Overhaul. There is a real settings screen now. Press Esc and choose Settings. You can change the theme, the view, and other options there EASILY. The keyboard shortcuts can also be remapped, in the settings screen or in the config file at ~/.config/tfm/config.toml.

    • Terminal pane. You can drop files onto the embedded terminal to paste their paths. And some terminal UX fixes.

    • Word wrap. Long file names can wrap onto a second line instead of being cut off (on grid). This is off by default. You can turn it on in the settings or with word-wrap = true in the config file.

    Fixes

    • Menus and dialogs can no longer get stuck on top of each other.
    • Copying or moving files to another disk now shows a progress bar instead of sitting silent.
    • SVG thumbnails are faster and sharper.
    • Long sessions no longer slowly run out of memory.
    • MASSIVE index.ts rewrite. 5200 lines -> 1100 💀

    Install (curl -fsSL https://raw.githubusercontent.com/clarkarch/tfm-tui/main/install.sh | bash) — or grab the .gz for your arch and gunzip into ~/.local/bin.

    Vibecoded alpha — expect rough edges. Don't test on files you can't afford to lose.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    tfm

    Showcase

    https://github.com/user-attachments/assets/843f0cf4-36ef-4732-a27a-7ebcb36bde03

    Embedded terminal

    https://github.com/user-attachments/assets/06b395db-8a91-4402-9ad7-158a5f77ccfe

    Preview pane

    https://github.com/user-attachments/assets/b8dc3ea8-93e1-4593-9516-a3108f613d10

    Animations

    https://github.com/user-attachments/assets/b47c7136-642c-4c85-8b2a-dcab1bd0b37b

    Features

    • Mouse: click, rubber-band select, right-click menus, drag and drop.
    • Browse files in grid or list view.
    • Sidebar with places, bookmarks, drives, trash, recent, starred.
    • Search as you type, including inside subfolders.
    • Sort by name, size, date.
    • Copy, move, paste, duplicate, rename.
    • Bulk rename multiple files at once.
    • New file / new folder inline.
    • Drag and drop between panes and from other apps.
    • Trash, restore, delete forever, empty trash.
    • Undo / redo file operations.
    • Notifications that grow with the message — click a cut one to read the rest.
    • Preview text, code, images, videos, folders.
    • Open files + Open With app picker.
    • Properties dialog with permissions editing.
    • Tabs + dual pane.
    • Connect to network servers.
    • Extract and compress archives.
    • Browse inside archives (tar, zip, 7z, rar) as folders.
    • Eject USB drives safely; plug and unplug detected live.
    • Set tfm as your default file manager.
    • Embedded terminal.
    • Clipboard copy/paste with other apps.
    • Open privileged files with sudo prompt.
    • Command palette to search and run any action.
    • Customizable themes, settings GUI, keybinds.
    • Plugin support with hot reload (source builds only — see Plugins).
    • …and many more.

    Requirements

    • Linux.
    • Any terminal (need image support for the full experience).
    • Everything below is optional.
      • xdg-open (opening files)
      • magick (extra photo thumbnails)
      • gio (starred files and servers)
      • udisksctl (USB drives)
      • ffmpeg (video thumbnails)
      • wl-clipboard / xclip (copy and paste with other apps)
      • tar / unzip / zip / 7z (zip files and archives)

    Install

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

    build from source

    The main branch, built on your machine — needs git and Bun 1.4 or newer:

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

    Or manually build from source:

    git clone https://github.com/clarkarch/tfm-tui.git
    cd tfm-tui
    bun install --frozen-lockfile
    bun run check && bun test
    bun run compile && cp dist/tfm ~/.local/bin/
    

    tfm runs a patched OpenTUI fork. It is published to npm as @clarkarch/opentui-fork and pulled in as a normal dependency — there is nothing extra to clone or build.

    Update

    esc → About or:

    tfm update
    

    Uninstall

    tfm uninstall
    

    Keys

    • enter open · f2 rename · backspace/alt+up up · alt+home home · escape menu · f1 help · ctrl+p command palette
    • ctrl+c/x/v/d copy/cut/paste/duplicate · ctrl+z/y undo/redo
    • tab switch focused pane · f5/f6 copy/move to the other pane (dual pane)
    • ctrl+t/w new/close tab · ctrl+tab switch tab (per pane)
    • delete trash · alt+enter properties · ctrl+q quit
    • ctrl+a select all · space toggle · shift+arrows extend selection
    • alt+left/right history back/forward · ctrl+shift+n / ctrl+alt+n new folder/file
    • ctrl+shift+d dual pane · ctrl+=/- zoom · ctrl+r reload places · ctrl+alt+r restart
    • tfm update installs the newest release (esc → About → Update checks on demand)
    • ctrl+h hidden · ctrl+l path bar · ctrl+g grid/list · f3 preview · ctrl+\``/f4terminal ·ctrl+shift+s` connect to server
    • arrows move · pageup/pagedown page · home/end first/last

    Everything is remappable: esc → Settings → keys.

    Config

    esc → Settings or:

    TFM_CONFIG=/custom/path/config.toml tfm
    

    See config.example.toml.

    Plugins

    esc → Plugins or:

    tfm plugins search
    tfm plugins add <url|id>
    tfm plugins new my-plugin
    

    See docs/plugins.md.

    The release binaries are compiled ahead of time without --aot-allow-code-from-disk, so tfm does not offer plugins there: tfm plugins says so and the plugin commands are off. A build from source (below) still has plugins. The reason is a policy, not a limit of the binary — see docs/aot-evaluation.md.

    Notes

    • Cross-app drag & drop is kitty-only.
    • Mouse on the Linux console (TTY) needs gpm running.
    • Custom kitty themes can misbehave.

    License

    MIT