sylphenix/sff
3
17
Fork
You've already forked sff
2
A simple and fast terminal file manager
  • C 62.2%
  • Shell 27.8%
  • Roff 8.5%
  • Makefile 1.5%
2026年05月23日 23:06:17 +08:00
plugins plugins/sfopen: support terminal swallowing in some WMs 2026年05月23日 23:05:19 +08:00
.gitignore chore: ignore .github/ and sff-patches/ 2026年04月06日 10:16:35 +08:00
CHANGELOG.md update changelog 2026年05月20日 10:14:46 +08:00
config.h Merge branch 'master' 2026年05月20日 21:02:23 +08:00
LICENSE release 1.3 2026年03月06日 11:36:43 +08:00
Makefile Merge branch 'master' 2026年04月20日 09:55:12 +08:00
README.md update readme 2026年05月23日 21:56:42 +08:00
sff-extfunc sff_paste(): fixe syntax errors on macOS shell 2026年05月20日 18:26:28 +08:00
sff.1 update manual 2026年03月31日 11:13:10 +08:00
sff.c streamline xmbstowcs() and optimize fitpathcols() width calculation 2026年05月21日 12:41:52 +08:00

sff

sff (simple file finder) is a simple, fast, and feature-rich terminal file manager inspired by nnn and guided by the suckless philosophy. It aims to provide a reliable, efficient, and user-friendly file management experience with high extensibility. sff is fully compatible with POSIX-compliant systems. It has been extensively tested on GNU/Linux and FreeBSD.

Screenshots

sff: screenshot

Features

  • POSIX-compliant and highly optimized
  • Fast startup and low memory footprint
  • Extensible with shell scripts
  • Customizable detail columns
  • Type-to-navigate
  • Advanced search via 'find'
  • Fast file search via 'fzf'
  • Convenient temporary sudo mode
  • Undo/Redo for the last file operation
  • Batch file and directory creation
  • Batch rename
  • Multi-tab support, cross-directory selection
  • Extract and create archives
  • ...and more!

Dependencies

  • libc, curses (wide-character): Essential runtime libraries
  • coreutils, findutils, POSIX shell, sed, vi/vim: For file operations
  • sudo (Optional): Utility for sudo mode
  • xdg-utils (Optional): File opening with default application

Required dependencies are included in most base systems and rarely need manual installation.

Plugin Dependencies (Optional):

Plugin Dependencies Notes
archive tar, gzip, bzip2, xz, 7zip Archive handling
fzf-find fzf Fuzzy file search
preview chafa, poppler-utils, ffmpegthumbnailer Image, PDF, video thumbnails

Note

Almost all commands require sudo/doas.

You can install all dependencies using the following commands:

  • Debian & Ubuntu:
apt install 7zip fzf chafa poppler-utils ffmpegthumbnailer
  • Arch Linux:
pacman -S 7zip fzf chafa poppler ffmpegthumbnailer
  • Fedora:
dnf install p7zip fzf chafa poppler-utils ffmpegthumbnailer
  • FreeBSD:
pkg install 7-zip fzf chafa poppler-utils ffmpegthumbnailer
  • macOS:
brew install ncurses sevenzip fzf chafa poppler ffmpegthumbnailer

Installation

Install from packages

Packaging status

Official packages are available from OpenBuildService.

Build and install from source

Ensure that a C compiler, the make utility, and the ncurses headers are installed.

  • Debian & Ubuntu:
apt install gcc make libncurses-dev
  • Arch Linux:
pacman -S gcc make ncurses
  • Fedora:
dnf install gcc make ncurses-devel
  1. Download and extract the latest release, or clone the repository to get the development version.

  2. Change to the root directory of the project.

  3. Build and install sff:

make install

By default, files are installed under /usr/local. You can use the PREFIX variable to change this:

make install PREFIX=/usr

If you used PREFIX during installation, you must specify the same PREFIX when uninstalling:

make uninstall PREFIX=/usr

Gentoo Linux note: To resolve dependencies, explicitly link both libncursesw and libtinfow libraries:

make install LDFLAGS="-lncursesw -ltinfow"

macOS note: See the wiki for details.

Usage

Simply run sff to start the program from the current directory.

While sff is running:

  • Press ? or F1 to see the list of key bindings for built-in functions.
  • Press Alt+/ to see the list of key bindings for extension functions and plugins.
  • Press Q to quit sff.

For more details, run man sff to see the documentation, or visit the wiki for useful tips and tricks.

Philosophy

sff is built on the belief that simplicity ensures reliability. It follows a minimalist design, divided into two parts: the core program and the extension script. The core program is a lightweight file browser and selector, sticking to features that are simple, necessary, and straightforward to implement. The extension script, a POSIX-compliant shell script, handles file operations such as copying, moving, and deleting. This modular design allows users to easily customize or extend functionality while keeping the core simple and efficient.

License

sff is released under the 2-Clause BSD License. See the LICENSE file for more details.

Acknowledgements

Special thanks to nnn and suckless.org.