La acción personalizada de Nemo (script .sh) no se ejecuta

La acción personalizada de Nemo (script .sh) no se ejecuta

Creé un script .sh para realizar OCR simple en capturas de pantalla que hago con Shutter. El guión se ve así ( ocrFile.sh):

#!/bin/bash

convert $1 /tmp/output.pnm
cat /tmp/output.pnm | pamstretch 4 > /tmp/stretched.pnm
convert /tmp/stretched.pnm -colorspace gray /tmp/output600dpi.tif
tesseract /tmp/output600dpi.tif ./outputText -l eng

Este script realiza algunas mejoras de imagen necesarias al realizar OCR con tesseract. Hace el trabajo correctamente si se llama desde la terminal. Lo que quería era hacer todo el proceso dentro de Nemo, así que creé una acción personalizada nombrada OCR.nemo_actiondentro /home/user1/.local/share/nemo/actionscon el siguiente contenido:

[Nemo Action]
Name=OCR The Screenshoot
Comment=OCR Function for Nemo File Manager
Exec=<ocrFile.sh %F>
Icon-Name=gtk-execute
Selection=Any
Extensions=png;

Esta acción de Nemo no produce resultados con el script proporcionado anteriormente. El script .sh también se encuentra en la carpeta de acciones personalizadas de Nemo.

¡Por favor ayuda!

Respuesta1

¡¡Excelente!!

-- ~/OCR.sh ( chmod +x ~/OCR.sh )

#!/bin/bash
convert $1 /tmp/OCR-output.pnm
cat /tmp/OCR-output.pnm | pamstretch 4 > /tmp/OCR-stretched.pnm
convert /tmp/OCR-stretched.pnm -colorspace gray /tmp/OCR-output600dpi.tif 
tesseract /tmp/OCR-output600dpi.tif ~/Desktop/OCR-outputText -l eng 
rm /tmp/OCR-output.pnm /tmp/OCR-stretched.pnm /tmp/OCR-output600dpi.tif

-- ~/.local/share/nemo/acciones

[Nemo Action]
Active=true
Name=OCR picture
Comment=OCR Function for Nemo File Manager
Selection=S
Exec=/bin/bash /home/user/OCR.sh %F                 --- change "user"
Icon-Name=gtk-execute
Extensions=png;jpg;jpeg;bmp;

¡¡¡Y el texto OCR está en mi escritorio !!!

Respuesta2

En cierto modo llegué a una solución para esta situación en Cinnamon. El .nemo_actionarchivo consta del siguiente contenido.

[Nemo Action]
Name=OCR The Screenshoot
Comment=OCR Function for Nemo File Manager
Selection=S
Exec=gnome-terminal --working-directory=%P -e "/media/storage/Scripts/actions/ocrFile.sh %F"
Icon-Name=gtk-execute
Extensions=png;jpg;jpeg;bmp;
Active=true

Tener el inicio del terminal para hacer el trabajo es más bien una solución alternativa. Todo lo demás no pareció dar resultados.

El script bash en sí permaneció prácticamente igual, modificado solo por una directiva para mantener la terminal abierta hasta la ejecución del conjunto de comandos.

#!/bin/bash
convert $1 /tmp/output.pnm
cat /tmp/output.pnm | pamstretch 4 > /tmp/stretched.pnm
convert /tmp/stretched.pnm -colorspace gray /tmp/output600dpi.tif 
tesseract /tmp/output600dpi.tif ./outputText -l eng 
rm /tmp/output.pnm /tmp/stretched.pnm /tmp/output600dpi.tif
bash

Lo que anhelo en última instancia es hacer que este proceso sea completamente libre de terminal. Me parece que el proceso es ligeramente diferente al de Gnome2 (Mate). Aquí el script bash que consta decomandos terminalesno ejecute "en algún lugar en segundo plano". Con scripts bash que llaman a aplicaciones GUI, Exec=la directiva de Gnome3 permite el <script.sh %F>valor.

Respuesta3

¿Es un script bash? Intentar

Exec=/bin/bash /home/user1/.local/share/nemo/actionsocrFile.sh %F

(o incluso /bin/shlo que dashsuele ser un poco más rápido).

En cuanto a la depuración, en la línea de comando:

$ nemo -q # quit all instances of nemo
$ NEMO_ACTION_VERBOSE=1 nemo

Luego ejecuta la acción desde la ventana de Nemo que se habrá abierto.

información relacionada