SuperFinder ← Back to the site

Command bar manual

The command bar is the legacy of the legendary Amiga Directory Opus: a grid of buttons where each one runs whatever shell command you want on the selected files. This manual teaches you to build your own.

Your first button in 60 seconds

  1. Click the at the bottom-right corner (or Settings → Commands → "Edit command bar…").
  2. Click "+". A new row appears with four columns: Name (the button label), Command (the shell it runs), Category (optional, creates your own group) and Color.
  3. Double-click each cell to edit; Enter to confirm. Try this command:
echo "$SF_FILES" | while read f; do zip -rq "$f.zip" "$f"; done

Close the editor: your button is on the grid. Select a file, click it, and its .zip appears next to it. That's it.

The variables: your connection to the panes

Each command runs with zsh in the active pane folder, with these variables ready:

VariableContents
$SF_FILESPaths of the selected files, one per line
$SF_DIRActive pane folder (where the command runs)
$SF_OTHER_DIRThe other pane folder — gold for moving things "to the other side"
$SF_APPPath to the SuperFinder executable, to invoke its built-in engines
$SF_PROMPTIf your script mentions it, the app asks for a value with a hidden field (passwords) before running
$SF_ASKSame, but with a visible field (texts, dates, names…)
$SF_TRANSLATE_LANGThe target language chosen in Settings → "AI — translate to"

Visible output: if your script contains the SF_NOTIFY marker (e.g. as a trailing comment # SF_NOTIFY), whatever it prints is shown in a dialog when done. Without the marker, the button works silently and only reports errors.

The three script patterns

1. One by one (the most common)

echo "$SF_FILES" | while read f; do
  sips -Z 1600 "$f"
done

Iterates the selection and runs something on each file ($f). The quotes around "$f" are mandatory: names with spaces exist.

2. All at once (for commands that accept multiple files)

files=(); while read f; do files+=("$f"); done <<< "$SF_FILES"
zip -r "paquete.zip" "${files[@]}"

3. On the folder (no selection)

du -sh "$SF_DIR"/* | sort -rh | head -20 | pbcopy # SF_NOTIFY

SuperFinder's built-in engines

SuperFinder ships its own engines that depend on nothing being installed. Invoke them with "$SF_APP" --flag files…:

FlagWhat it does
--to-pdfConverts documents (docx, rtf, html, txt, odt) and images to PDF
--merge-pdfMerges several PDFs into one
--pdf-to-pngEach PDF page to a 2x PNG image
--ocrExtracts text from images (Vision, es/en) to .txt and clipboard
--remove-bgCuts out the image subject to a transparent PNG
--watermark "texto"Stamps a watermark
--filter gray|sepiaImage filters
--contact-sheetThumbnail grid of the selected images
--transcribeTranscribes audio to text (macOS dictation)
--ai <tarea>AI with your key (Settings): summarize, describe, rename, proofread, table, translate-to "language"

Copy-paste recipe book

Send to the other pane as ZIP

files=(); while read f; do files+=("$f"); done <<< "$SF_FILES"
zip -rj "$SF_OTHER_DIR/paquete $(date +%H.%M).zip" "${files[@]}"

Search text inside files (asks what to find)

grep -ril "$SF_ASK" "$SF_DIR" | head -50 # SF_NOTIFY

HEIC → JPG (iPhone photos)

echo "$SF_FILES" | while read f; do sips -s format jpeg "$f" --out "${f%.*}.jpg"; done

Video → MP4 (plays everywhere)

echo "$SF_FILES" | while read f; do avconvert --preset PresetHighestQuality --source "$f" --output "${f%.*}.mp4"; done

Open in your favorite editor

echo "$SF_FILES" | while read f; do open -a "Visual Studio Code" "$f"; done

Upload via SFTP to your server (SSH key)

files=(); while read f; do files+=("$f"); done <<< "$SF_FILES"
scp "${files[@]}" user@server.com:/path/target/ && echo "Uploaded ${#files[@]} files" # SF_NOTIFY

Size of each subfolder

du -sh "$SF_DIR"/*/ 2>/dev/null | sort -rh # SF_NOTIFY

Git: current repository status

git -C "$SF_DIR" status --short --branch # SF_NOTIFY

Convert to audiobook (system voice)

echo "$SF_FILES" | while read f; do say -f "$f" -o "${f%.*}.m4a"; done

AI-summarize in any language

echo "$SF_FILES" | while read f; do "$SF_APP" --ai translate-to "gallego" "$f"; done

Categories, colors and style

Safety: commands run with your permissions and no safety net: an rm really deletes. Test new buttons on throwaway files, always quote variables ("$f", never $f), and distrust scripts copied from the internet you don't understand.