@realfxw: Who says terminal file managers can only rely on full keyboard shortcuts? Today, I found an amazing open-source project on GitHub: tfm-tui — a modern terminal file manager focused on mouse interaction (Mouse-First). It not only retains the lightweight and efficient features of terminals but also brings the smooth experience of modern GUI file managers into the terminal…

X AI KOLs Timeline Tools

Summary

Introduction to the open-source project tfm-tui, a modern terminal file manager centered on mouse interaction, combining terminal efficiency with graphical interface intuitiveness.

Who says terminal file managers can only rely on full keyboard shortcuts? Today, I discovered a stunning open-source project on GitHub: tfm-tui — a modern terminal file manager that emphasizes mouse interaction (Mouse-First). It not only retains the lightweight and efficient features of terminals but also brings the smooth experience of modern GUI file managers directly into the terminal: Modern mouse operations: Supports rubber-band selection, right-click context menus, inline quick renaming, and even file dragging! Under the Kitty terminal, it can achieve cross-application direct file dragging. Dual pane and multiple tabs: A dual pane layout similar to Total Commander / Midnight Commander, with independent paths, search, and tabs on each side. Use Tab to switch focus, and F5 / F6 to directly copy or move between panes. Multimedia and smooth animations: Utilizes the Kitty Graphics Protocol for true-color images and video thumbnails, with smooth edge auto-hide and slide-in/out animations for the sidebar, preview, and built-in terminal. Network locations and built-in terminal: Integrates gvfs to directly connect to SFTP, SMB, WebDAV, or FTP in the sidebar; right-click at any time to invoke the built-in terminal in the current directory. TypeScript plugin system: Supports hot reloading, custom shortcuts, context menus, event interception, and rendering custom OpenTUI components to the status bar/sidebar. The project is built with TypeScript + Bun, currently supporting Linux systems, and is in Beta stage. One-click installation command: Bash curl -fsSL https://raw.githubusercontent.com/clarkarch/tfm-tui/main/install.sh… | bash If you often work in the Linux terminal and miss the intuitive dragging and multimedia preview of modern GUI file managers, highly recommend trying this project: https://github.com/clarkarch/tfm-tui…
Original Article
View Cached Full Text

Cached at: 09/19/26, 07:10 PM

Who says terminal file managers have to rely entirely on keyboard shortcuts? Today on GitHub I discovered a very impressive open-source project: tfm-tui — a modern terminal file manager that centers its design around mouse interaction (Mouse-First).

It retains the lightweight, efficient nature of terminal apps while bringing the smooth experience of modern GUI file managers directly into the terminal:

Modern mouse interactions: Supports rubber-band selection, right-click context menus, inline quick renaming, and even file dragging! On the Kitty terminal, it can even drag files directly across applications.

Dual-pane & multi-tab: Features a dual-pane layout similar to Total Commander or Midnight Commander, with independent paths, search, and tabs on each side. Press Tab to switch focus, and use F5/F6 to copy or move files directly between panes.

Multimedia & smooth animations: Leverages the Kitty Graphics Protocol for true-color image and video thumbnails. The sidebar, preview, and built-in terminal also feature smooth auto-hide edges and slide-in/slide-out animations.

Network locations & built-in terminal: Integrates gvfs, allowing direct connections to SFTP, SMB, WebDAV, or FTP from the sidebar. Right-click anytime in the current directory to open a built-in terminal.

TypeScript plugin system: Supports hot-reloading, custom shortcuts, context menus, event interception, and rendering custom OpenTUI components in the status bar/sidebar.

The project is built with TypeScript + Bun, currently supports Linux systems, and is in Beta stage.

One-click installation command:

Bash

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

If you regularly work in the Linux terminal and miss the intuitive drag-and-drop and multimedia previews of modern GUI file managers, I highly recommend giving this project a try: https://github.com/clarkarch/tfm-tui


Source: https://raw.githubusercontent.com/clarkarch/tfm-tui/main/install.sh

#!/usr/bin/env bash
# tfm installer: downloads a prebuilt binary for your arch.
# usage: curl -fsSL https://raw.githubusercontent.com/clarkarch/tfm-tui/main/install.sh | bash
# env: TFM_INSTALL_DIR (default ~/.local/bin), TFM_VERSION (default latest),
#      TFM_NO_VERIFY=1 to skip checksum verification (not recommended).
set -euo pipefail

REPO="clarkarch/tfm-tui"
DEST="${TFM_INSTALL_DIR:-$HOME/.local/bin}"
VERSION="${TFM_VERSION:-latest}"

case "$(uname -m)" in
  x86_64)  ARCH="x86_64-linux" ;;
  aarch64|arm64)  ARCH="aarch64-linux" ;;
  *) echo "tfm install: unsupported arch: $(uname -m)" >&2; exit 1 ;;
esac

mkdir -p "$DEST"
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT

if [ "$VERSION" = "latest" ]; then
  BASE="https://github.com/$REPO/releases/latest/download"
else
  BASE="https://github.com/$REPO/releases/download/$VERSION"
fi

echo "tfm: downloading $ARCH ($VERSION)..."
curl -fsSL --retry 3 --proto '=https' "$BASE/tfm-$ARCH.gz" -o "$TMP/tfm.gz"

# checksum: fail closed when the release ships one, fail open (with a loud
# warning) only when the artifact has no published checksum at all.
#
# NOTE: compare digests directly, never `sha256sum -c`: the published sidecar
# embeds the release filename (tfm-.gz) while we save as tfm.gz, so -c
# looks for a file that isn't there and fails every install.
if curl -fsSL --retry 3 --proto '=https' "$BASE/tfm-$ARCH.gz.sha256" -o "$TMP/tfm.gz.sha256" 2>/dev/null; then
  want=$(cut -d' ' -f1 < "$TMP/tfm.gz.sha256")
  got=$(sha256sum < "$TMP/tfm.gz" | cut -d' ' -f1)
  [ -n "$want" ] && [ "$want" = "$got" ] \
    || { echo "tfm install: CHECKSUM MISMATCH, refusing to install $TMP/tfm.gz" >&2; exit 1; }
  echo "tfm: checksum verified"
elif [ "${TFM_NO_VERIFY:-}" = "1" ]; then
  echo "tfm: WARNING: no checksum published, installing unverified (TFM_NO_VERIFY=1)" >&2
else
  echo "tfm install: no checksum published for tfm-$ARCH.gz — refusing to install." >&2
  echo "  Re-run with TFM_NO_VERIFY=1 to override, or pin TFM_VERSION to a release with checksums." >&2
  exit 1
fi

gunzip -f "$TMP/tfm.gz"
chmod +x "$TMP/tfm"

# never silently clobber: keep one backup of the previous binary
if [ -e "$DEST/tfm" ]; then
  mv -f "$DEST/tfm" "$DEST/tfm.bak"
  echo "tfm: previous binary backed up to $DEST/tfm.bak"
fi

mv "$TMP/tfm" "$DEST/tfm"
ln -sf "$DEST/tfm" "$DEST/terminal-file-manager"

echo "tfm: installed -> $DEST/tfm (run it via \"tfm\" or \"terminal-file-manager\")"

# make sure 'tfm' resolves — but only with explicit user consent (asked on the
# tty, since stdin belongs to the curl|bash pipe).  No tty = just print instructions.
# Note: we only ever touch the user's own rc file — never /usr/local/bin.
if ! command -v tfm >/dev/null 2>&1; then
  if ! { true >/dev/null; then
    echo "tfm: note: $DEST is not in your PATH — run: export PATH=\"$DEST:\$PATH\""
  else
    printf "tfm: add %s to PATH automatically? [Y/n] " "$DEST"
    DECLINE="tfm: ok — later: export PATH=\"$DEST:\$PATH\""
    if ! IFS= read -r REPLY >/dev/null 2>&1; then
      echo "$DECLINE"
    else
      case "$REPLY" in
        Y|y|'') ;;
        *) echo "$DECLINE"; exit 0 ;;
      esac
    fi
    RCFILE="$HOME/.bashrc"
    if [ -f "$HOME/.zshrc" ]; then
      RCFILE="$HOME/.zshrc"
    fi
    if ! grep -qs "$DEST" "$RCFILE" 2>/dev/null; then
      printf '\n# tfm: added by tfm installer\nexport PATH="%s:$PATH"\n' "$DEST" >> "$RCFILE"
      echo "tfm: PATH entry added to $RCFILE — open a new shell or run: source $RCFILE"
    else
      echo "tfm: $DEST already in $RCFILE — open a new shell or run: source $RCFILE"
    fi
  fi
fi

# tfm degrades gracefully without these, but each one disables something
have() { command -v "$1" >/dev/null 2>&1; }
MISSING=""
add_missing() { MISSING="${MISSING}  - $1\n"; }

have rsvg-convert || add_missing "rsvg-convert — theme-tinted icons and SVG thumbnails"
have magick       || add_missing "magick — raster image thumbnails (fallback)"
have ffmpeg       || add_missing "ffmpeg — video thumbnails & previews"
have gio          || add_missing "gio — starred-file metadata (trash itself needs no gio)"
have xdg-open     || add_missing "xdg-open — opens files in their default app (required)"
have udisksctl    || add_missing "udisksctl — mount/eject removable drives"
if ! have wl-paste && ! have wl-copy && ! have xclip; then
  add_missing "wl-paste/wl-copy or xclip — copy/paste between tfm and GUI apps"
fi

if [ -n "$MISSING" ]; then
  RED=""; RST=""
  [ -t 1 ] && { RED=$'\033[31m'; RST=$'\033[0m'; }
  printf '%s\n' "${RED}tfm: missing helpers — install these for full functionality:${RST}"
  printf '%s%b%s' "$RED" "$MISSING" "$RST"
fi

Similar Articles

@LuBtc888: Seriously, I barely touch tmux for multi-terminal management anymore. With http://herdr.dev and http://muxy.app, these two tools kick tmux's cumbersome configuration out of the game. No need to memorize complex shortcuts, no need to fiddle with config files—ready to use out of the box, a blessing for the lazy. Productivity tools...

X AI KOLs Timeline

Introduces two terminal multi-window management tools, Herdr and Muxy. Herdr is a Rust-based native terminal proxy runtime that supports persistence, mouse operations, and proxy state management, serving as a tmux alternative.

@VincentLogic: Found an incredible open-source desktop AI tool from ByteDance! UI-TARS Desktop, with 31k stars, truly lives up to the hype. It can actually understand your screen and automate computer operations for you. Just tell it "Enable auto-save in VS Code and set the delay to 500ms", and it will automatically: -…

X AI KOLs Timeline

ByteDance's open-source desktop AI automation tool, UI-TARS Desktop, supports local execution and screen visual understanding. It can autonomously control your computer to handle daily tasks through natural language commands.

@vintcessun: At noon I saw a tool that solves the chaos in download directories, a bit unbelievable—a system tray file organizer written in Rust+Tauri, memory usage only 5MB, and just added Linux support. The core is file monitoring plus a rule engine, automatically classifying by extension or regex, SQLite records operation history for one-click undo. Privacy-wise zero reporting, …

X AI KOLs Timeline

Introduces an open-source desktop file organizing tool Mouzi, built with Rust and Tauri, memory usage only 5MB, supports file monitoring and rule engine for automatic classification, emphasizes zero reporting for privacy.

@billtheinvestor: ByteDance open-sources UI-TARS Desktop (3.6k stars). Core logic: 100% local execution, pixel-only, no API calls. Compared to OpenAI/Anthropic cloud-based approaches, it solves two pain points: 1. Data privacy (data stays on machine); 2. Zero-cost zero-latency (no API fees). Build private…

X AI KOLs Following

ByteDance open-sources UI-TARS Desktop, a 100% local desktop automation tool that operates purely on pixels with no API calls, resolving the two major pain points of data privacy and API costs, providing an efficient open-source solution for building private automation workflows.