La botonera es la herencia del legendario Directory Opus del Amiga: una rejilla de botones donde cada uno ejecuta el comando de shell que tú quieras sobre los archivos seleccionados. Este manual te enseña a crear los tuyos.
echo "$SF_FILES" | while read f; do zip -rq "$f.zip" "$f"; done
Cierra el editor: tu botón está en la rejilla. Selecciona un archivo, púlsalo, y aparecerá su .zip al lado. Eso es todo.
Cada comando se ejecuta con zsh en la carpeta del panel activo, con estas variables preparadas:
| Variable | Contenido |
|---|---|
$SF_FILES | Rutas de los archivos seleccionados, una por línea |
$SF_DIR | Carpeta del panel activo (donde se ejecuta el comando) |
$SF_OTHER_DIR | Carpeta del otro panel — oro para mover cosas «al otro lado» |
$SF_APP | Ruta al ejecutable de SuperFinder, para invocar sus motores internos |
$SF_PROMPT | Si tu script la menciona, la app pide un valor con un campo oculto (contraseñas) antes de ejecutar |
$SF_ASK | Igual, pero con campo visible (textos, fechas, nombres…) |
$SF_TRANSLATE_LANG | El idioma de destino elegido en Ajustes → «IA — traducir a» |
Salida visible: si tu script contiene la marca SF_NOTIFY (por ejemplo en un comentario final # SF_NOTIFY), lo que imprima por pantalla se mostrará en un diálogo al terminar. Sin la marca, el botón trabaja en silencio y solo avisa si hay error.
echo "$SF_FILES" | while read f; do
sips -Z 1600 "$f"
done
Recorre la selección y ejecuta algo con cada archivo ($f). Las comillas alrededor de "$f" son obligatorias: los nombres con espacios existen.
files=(); while read f; do files+=("$f"); done <<< "$SF_FILES"
zip -r "paquete.zip" "${files[@]}"
du -sh "$SF_DIR"/* | sort -rh | head -20 | pbcopy # SF_NOTIFY
SuperFinder lleva motores propios que no dependen de nada instalado. Se invocan con "$SF_APP" --flag archivos…:
| Flag | Qué hace |
|---|---|
--to-pdf | Convierte documentos (docx, rtf, html, txt, odt) e imágenes a PDF |
--merge-pdf | Une varios PDFs en uno |
--pdf-to-png | Cada página del PDF a imagen PNG a 2x |
--ocr | Extrae el texto de imágenes (Vision, es/en) a .txt y portapapeles |
--remove-bg | Recorta el sujeto de la imagen a PNG con transparencia |
--watermark "texto" | Estampa una marca de agua |
--filter gray|sepia | Filtros de imagen |
--contact-sheet | Cuadrícula de miniaturas de las imágenes seleccionadas |
--transcribe | Transcribe audio a texto (dictado de macOS) |
--ai <tarea> | IA con tu clave (Ajustes): summarize, describe, rename, proofread, table, translate-to "idioma" |
files=(); while read f; do files+=("$f"); done <<< "$SF_FILES"
zip -rj "$SF_OTHER_DIR/paquete $(date +%H.%M).zip" "${files[@]}"grep -ril "$SF_ASK" "$SF_DIR" | head -50 # SF_NOTIFYecho "$SF_FILES" | while read f; do sips -s format jpeg "$f" --out "${f%.*}.jpg"; doneecho "$SF_FILES" | while read f; do avconvert --preset PresetHighestQuality --source "$f" --output "${f%.*}.mp4"; doneecho "$SF_FILES" | while read f; do open -a "Visual Studio Code" "$f"; donefiles=(); while read f; do files+=("$f"); done <<< "$SF_FILES"
scp "${files[@]}" usuario@servidor.com:/ruta/destino/ && echo "Subidos ${#files[@]} archivos" # SF_NOTIFYdu -sh "$SF_DIR"/*/ 2>/dev/null | sort -rh # SF_NOTIFYgit -C "$SF_DIR" status --short --branch # SF_NOTIFYecho "$SF_FILES" | while read f; do say -f "$f" -o "${f%.*}.m4a"; doneecho "$SF_FILES" | while read f; do "$SF_APP" --ai translate-to "gallego" "$f"; doneSeguridad: los comandos se ejecutan con tus permisos y sin red de seguridad: un rm borra de verdad. Prueba los botones nuevos con archivos de mentira, cita siempre las variables ("$f", nunca $f) y desconfía de scripts copiados de internet que no entiendas.