220 lines
5.7 KiB
Plaintext
220 lines
5.7 KiB
Plaintext
sfm - Simple File Manager
|
|
==========================
|
|
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
sfm is a lightweight, terminal-based file manager with a vim-inspired
|
|
key layout. The primary version is a fast C++/ncurses binary. A portable
|
|
POSIX sh version (sfm.sh) is also included, requiring only standard Unix
|
|
tools (ls, awk, tput, stty, mv, cp, rm).
|
|
|
|
|
|
REQUIREMENTS
|
|
------------
|
|
C++ version (sfm):
|
|
- ncursesw (libncursesw)
|
|
- A C++17 compiler (g++ or compatible)
|
|
|
|
Shell version (sfm.sh):
|
|
- A POSIX-compatible shell (sh, dash, bash, etc.)
|
|
- Standard Unix tools: ls, awk, tput, stty, cp, mv, rm, mkdir, touch
|
|
|
|
Both versions:
|
|
- Optional: wl-copy / xclip / xsel / pbcopy (for clipboard support)
|
|
- Optional: mpv, vlc, feh, zathura, etc. (for smart file opening)
|
|
- Optional: readlink (for symlink display)
|
|
- Optional: file (for MIME type detection)
|
|
|
|
|
|
INSTALLATION
|
|
------------
|
|
Using make (recommended):
|
|
|
|
make install
|
|
|
|
This builds the C++ binary and installs both sfm (C++ binary)
|
|
and sfm.sh (shell script) to /usr/local/bin by default.
|
|
To change the prefix:
|
|
|
|
make install PREFIX=/usr
|
|
|
|
To uninstall:
|
|
|
|
make uninstall
|
|
|
|
Manual installation (shell version only):
|
|
|
|
cp sfm.sh /usr/local/bin/sfm.sh
|
|
chmod +x /usr/local/bin/sfm.sh
|
|
|
|
|
|
USAGE
|
|
-----
|
|
sfm [path]
|
|
|
|
If no path is given, sfm opens in the current directory.
|
|
|
|
Examples:
|
|
sfm # open in current directory
|
|
sfm /mnt/data # open at a specific path
|
|
sfm ~ # open home directory
|
|
sfm .. # open parent directory
|
|
|
|
|
|
NAVIGATION
|
|
----------
|
|
j / k or up/down arrows Move up / down
|
|
h or left arrow Go to parent directory
|
|
l or right arrow / enter Open file or enter directory
|
|
g Jump to top of list
|
|
G Jump to bottom of list
|
|
~ Go to home directory
|
|
` (backtick) Jump to previous directory
|
|
|
|
|
|
SEARCH & FILTER
|
|
---------------
|
|
/ Enter search mode (filters listing as you type)
|
|
esc Clear filter and exit search mode
|
|
enter Exit search mode but keep filter active
|
|
|
|
|
|
DISPLAY TOGGLES
|
|
---------------
|
|
. Toggle hidden files (dotfiles)
|
|
T Toggle size/date detail column
|
|
P Toggle preview pane (right side)
|
|
s Cycle sort mode: name -> size -> date
|
|
i Show file info (permissions, size, date) in status bar
|
|
R Refresh current directory listing
|
|
|
|
|
|
PREVIEW PANE
|
|
------------
|
|
Press P to toggle the preview pane on the right side of the screen.
|
|
The list pane takes the left half, preview takes the right half.
|
|
|
|
Text files Shows file contents line by line
|
|
Directories Shows directory contents
|
|
Symlinks Shows link target
|
|
Binary files Shows file size
|
|
|
|
|
|
CUSTOM OPENER
|
|
-------------
|
|
sfm checks for a user-defined opener script at:
|
|
|
|
~/.config/sfm/opener
|
|
|
|
If the file exists and is executable, sfm passes the selected file
|
|
path to it instead of using the built-in smart opener. Example:
|
|
|
|
#!/bin/sh
|
|
case "$1" in
|
|
*.jpg|*.jpeg) imv "$1" ;;
|
|
*.mp4) mpv "$1" ;;
|
|
*.html|*.pdf) firefox "$1" ;;
|
|
*) echo "no program set for this file type" ;;
|
|
esac
|
|
|
|
Make it executable: chmod +x ~/.config/sfm/opener
|
|
|
|
If the opener script does not exist, sfm falls back to its built-in
|
|
smart opener automatically.
|
|
|
|
|
|
FILE OPERATIONS
|
|
---------------
|
|
r Rename selected entry
|
|
m Make new directory
|
|
n New empty file
|
|
d Delete (single or selection)
|
|
u Move to trash (safe delete)
|
|
U Open trash directory
|
|
o Open with custom program
|
|
|
|
|
|
CLIPBOARD
|
|
---------
|
|
y Yank / copy (works on multi-selection)
|
|
x Cut (works on multi-selection)
|
|
p Paste into current directory
|
|
c Copy full path of selected entry to system clipboard
|
|
|
|
|
|
MULTI-SELECT
|
|
------------
|
|
space Toggle multi-select on current entry (cursor advances)
|
|
a Select all / deselect all
|
|
|
|
|
|
BOOKMARKS
|
|
---------
|
|
b Bookmark current directory (press again to remove)
|
|
B Open bookmark picker (j/k navigate, enter jump)
|
|
|
|
Bookmarks are saved to: ~/.config/sfm/bookmarks
|
|
|
|
|
|
SHELL & UTILITIES
|
|
-----------------
|
|
! Drop into $SHELL in current directory (type "exit" to return)
|
|
|
|
|
|
HELP
|
|
----
|
|
? Show keyboard shortcuts overlay
|
|
|
|
|
|
QUIT
|
|
----
|
|
q Quit sfm
|
|
|
|
|
|
STATUS BAR INDICATORS
|
|
---------------------
|
|
[hidden] Hidden files are visible
|
|
[sort:size] Active sort mode (size or date; name is default)
|
|
[copy] A file is in the clipboard (copy mode)
|
|
[cut] A file is in the clipboard (cut mode)
|
|
[sel:N] N items are currently selected
|
|
[details] Size/date column is visible
|
|
|
|
|
|
SMART FILE OPENER
|
|
-----------------
|
|
When you open a file, sfm detects the file type by extension and
|
|
MIME type, then picks an appropriate program automatically:
|
|
|
|
Text / code $EDITOR (or vi)
|
|
Images imv, feh, sxiv, eog, gimp
|
|
Video mpv, vlc, mplayer, totem
|
|
Audio mpv, vlc, cmus, mocp
|
|
PDF zathura, evince, okular, mupdf
|
|
Office docs libreoffice
|
|
Archives atool / bsdtar (lists contents in pager)
|
|
|
|
Falls back to xdg-open, open (macOS), or $EDITOR if nothing matches.
|
|
Use 'o' to manually specify any program.
|
|
|
|
|
|
TRASH
|
|
-----
|
|
Files deleted with 'u' are moved to:
|
|
|
|
~/.local/share/sfm-trash/
|
|
|
|
Files are prefixed with a timestamp: YYYYMMDD_HHMMSS_filename
|
|
Use U to browse the trash directory. To restore a file, rename it
|
|
(press r) to remove the timestamp prefix, then cut (x) and paste (p)
|
|
it back to the desired location.
|
|
|
|
|
|
DATA FILES
|
|
----------
|
|
~/.config/sfm/bookmarks Saved bookmarks (one path per line)
|
|
~/.config/sfm/opener Custom file opener script (optional)
|
|
~/.local/share/sfm-trash/ Trashed files
|
|
|