aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authoremmett1 <me@emmett1.my>2026-04-01 00:35:04 +0800
committeremmett1 <me@emmett1.my>2026-04-01 00:35:04 +0800
commit54352d036cb2fd9c82522cd3f9ec12008510b32c (patch)
tree33beef2ef51ec9c2fe6963b699c5736a0e72b218 /README
parent6b729ffe8a2470b222ded4b2906e7d1ad4c455ef (diff)
downloadsfm-54352d036cb2fd9c82522cd3f9ec12008510b32c.tar.gz
sfm-54352d036cb2fd9c82522cd3f9ec12008510b32c.zip
renamed README.txt to README
Diffstat (limited to 'README')
-rw-r--r--README210
1 files changed, 210 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..36d2baa
--- /dev/null
+++ b/README
@@ -0,0 +1,210 @@
+sfm - Simple File Manager
+==========================
+
+
+DESCRIPTION
+-----------
+sfm is a lightweight, terminal-based file manager written entirely in
+POSIX sh. It runs in your terminal with no external dependencies beyond
+standard Unix tools (ls, awk, tput, stty, mv, cp, rm). Designed to be
+fast, flicker-free, and keyboard-driven with a vim-inspired key layout.
+
+
+REQUIREMENTS
+------------
+- A POSIX-compatible shell (sh, dash, bash, etc.)
+- Standard Unix tools: ls, awk, tput, stty, cp, mv, rm, mkdir, touch
+- 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 installs sfm to /usr/local/bin by default. To change the prefix:
+
+ make install PREFIX=/usr
+
+To uninstall:
+
+ make uninstall
+
+Manual installation:
+
+ cp sfm /usr/local/bin/sfm
+ chmod +x /usr/local/bin/sfm
+
+
+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
+