added opener script support

This commit is contained in:
emmett1
2026-03-28 00:08:08 +08:00
parent 6f9feaf9b4
commit 25a329aba9
2 changed files with 86 additions and 53 deletions
+26 -1
View File
@@ -87,11 +87,34 @@ 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. The list pane takes the left half, preview takes the right half.
Text files Shows file contents line by line Text files Shows file contents line by line
Directories Shows entry count Directories Shows directory contents
Symlinks Shows link target Symlinks Shows link target
Binary files Shows file size 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 FILE OPERATIONS
--------------- ---------------
r Rename selected entry r Rename selected entry
@@ -182,4 +205,6 @@ it back to the desired location.
DATA FILES DATA FILES
---------- ----------
~/.config/sfm/bookmarks Saved bookmarks (one path per line) ~/.config/sfm/bookmarks Saved bookmarks (one path per line)
~/.config/sfm/opener Custom file opener script (optional)
~/.local/share/sfm-trash/ Trashed files ~/.local/share/sfm-trash/ Trashed files
+8
View File
@@ -679,6 +679,14 @@ _run_gui() { "$@" >/dev/null 2>&1 & }
open_file() { open_file() {
_f="$1" _f="$1"
# use user opener script if it exists and is executable
_opener="${XDG_CONFIG_HOME:-$HOME/.config}/sfm/opener"
if [ -x "$_opener" ]; then
"$_opener" "$_f"
return
fi
_ext="${_f##*.}" _ext="${_f##*.}"
_ext=$(printf '%s' "$_ext" | tr '[:upper:]' '[:lower:]') _ext=$(printf '%s' "$_ext" | tr '[:upper:]' '[:lower:]')