- C 62.2%
- Shell 27.8%
- Roff 8.5%
- Makefile 1.5%
| plugins | plugins/sfopen: support terminal swallowing in some WMs | |
| .gitignore | chore: ignore .github/ and sff-patches/ | |
| CHANGELOG.md | update changelog | |
| config.h | Merge branch 'master' | |
| LICENSE | release 1.3 | |
| Makefile | Merge branch 'master' | |
| README.md | update readme | |
| sff-extfunc | sff_paste(): fixe syntax errors on macOS shell | |
| sff.1 | update manual | |
| sff.c | streamline xmbstowcs() and optimize fitpathcols() width calculation | |
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
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
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
-
Download and extract the latest release, or clone the repository to get the development version.
-
Change to the root directory of the project.
-
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
?orF1to 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
Qto 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.