added opener script support
This commit is contained in:
+78
-53
@@ -1,15 +1,15 @@
|
||||
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.)
|
||||
@@ -18,41 +18,41 @@ REQUIREMENTS
|
||||
- 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
|
||||
@@ -62,15 +62,15 @@ NAVIGATION
|
||||
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)
|
||||
@@ -79,19 +79,42 @@ DISPLAY TOGGLES
|
||||
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 entry count
|
||||
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
|
||||
@@ -101,45 +124,45 @@ FILE OPERATIONS
|
||||
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
|
||||
@@ -148,13 +171,13 @@ STATUS BAR INDICATORS
|
||||
[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
|
||||
@@ -162,24 +185,26 @@ MIME type, then picks an appropriate program automatically:
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user