O script Nautilus em ~/.local/share/nautilus/scripts/ não mostra nenhuma janela de terminal ou saída

O script Nautilus em ~/.local/share/nautilus/scripts/ não mostra nenhuma janela de terminal ou saída

Criei um script simples e coloquei em ~/.local/share/nautilus/scripts/ (script no final do post).

Consigo rodar com o botão direito em Nautilus->Scripts->myScript.sh, tudo bem até agora.

O problema é que não há nenhuma janela de terminal apresentada ou qualquer saída. Recebo apenas aquela mensagem de notificação de envio preenchida corretamente com o caminho para o arquivo selecionado, sem qualquer espera.

Eu esperaria que houvesse alguma janela de terminal que imprimisse "THIS IS TEST!", depois "PLEASE ENTER..." e aguardando o pressionamento da tecla Enter. Finalmente, depois disso, o envio de notificação deverá ser recebido.

O que estou perdendo 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}"

Responder1

A janela do terminal não é criada automaticamente. Você tem que criá-lo sozinho. Modifiquei seu script da seguinte forma:

#!/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}"

Coloquei todas as suas instruções (comandos a serem executados dentro do terminal) em umbash funçãoeexporteditou-o, para que possa ser usado por processos filhos.

Então, usei o gnome-terminal --title="Testing..."comando para criar uma janela de terminal com um título apropriado. A --waitopção forçará o gnome-terminalcomando a não retornar até que os comandos a serem executados após a --opção serem finalizados.

Por favor, leia oman gnome-terminalpáginapara mais opções.


Dependendo de suas necessidades, uma versão mais curta pode 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}"

Veja também ozenitycomando para obter mais opções de entrada/saída de seus scripts Nautilus. Aqui está um exemplo muito 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"

informação relacionada