El script de Nautilus en ~/.local/share/nautilus/scripts/ no muestra ninguna ventana o salida de terminal

El script de Nautilus en ~/.local/share/nautilus/scripts/ no muestra ninguna ventana o salida de terminal

Creé un script simple y lo puse en ~/.local/share/nautilus/scripts/ (script al final de la publicación).

Puedo ejecutar con clic derecho en Nautilus->Scripts->myScript.sh, todo bien hasta ahora.

El problema es que no se presenta ninguna ventana de terminal ni ningún resultado. Solo recibo ese mensaje de notificación y envío correctamente completado con la ruta al archivo seleccionado sin esperar.

Esperaría que haya alguna ventana de terminal que imprima "¡ESTO ES UNA PRUEBA!", luego "POR FAVOR ENTRAR..." y esperando que se presione la tecla Enter. Finalmente después de esto se debería recibir la notificación-envío.

¿Que me estoy perdiendo aqui?

#!/usr/bin/bash

echo "THIS IS TEST!"
read -r -p "PLEASE ENTER TO EXIT! Waiting..."

notify-send "COMPLETED!" "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ___ ${NAUTILUS_SCRIPT_SELECTED_URIS} ___ ${NAUTILUS_SCRIPT_CURRENT_URI}"

Respuesta1

La ventana de terminal no se crea automáticamente. Tienes que crearlo por ti mismo. Modifiqué su script de la siguiente manera:

#!/usr/bin/bash

function commands-to-be-run {
  echo "THIS IS TEST!"
  read -r -p "PLEASE ENTER TO EXIT! Waiting..."
}

export -f commands-to-be-run

gnome-terminal --title="Testing..." --wait -- bash -c commands-to-be-run

notify-send "COMPLETED!" "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ___ ${NAUTILUS_SCRIPT_SELECTED_URIS} ___ ${NAUTILUS_SCRIPT_CURRENT_URI}"

He puesto todas sus declaraciones (comandos para ejecutar dentro de la terminal) en unbash funciónyexportLo editamos para que pueda ser utilizado por procesos secundarios.

Luego, utilicé el gnome-terminal --title="Testing..."comando para crear una ventana de terminal con un título apropiado. La --waitopción obligará al comando a no regresar hasta que finalicen gnome-terminallos comandos que se ejecutarán después de la opción.--

Por favor, lea elman gnome-terminalpáginapara más opciones.


Dependiendo de sus necesidades, una versión más corta podría ser esta:

#!/usr/bin/bash
gnome-terminal --title="Testing..." --wait -- bash -c '
  echo "THIS IS TEST!" ;
  read -r -p "PLEASE ENTER TO EXIT! Waiting..."
'
notify-send "COMPLETED!" "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ___ ${NAUTILUS_SCRIPT_SELECTED_URIS} ___ ${NAUTILUS_SCRIPT_CURRENT_URI}"

Mira también elzenitycomando para obtener más opciones para realizar entradas/salidas desde sus scripts nautilus. Aquí hay un ejemplo muy básico:

#!/bin/bash
echo -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | sed -z 's/.$//' | xsel -b -i
zenity --info --no-wrap --no-markup --title="File name(s) copied to Clipboard:" --text="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"

información relacionada