A ação personalizada do Nemo (script .sh) não é executada

A ação personalizada do Nemo (script .sh) não é executada

Criei um script .sh para OCR simples de capturas de tela que faço com o Shutter. O script fica assim ( 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 faz alguns aprimoramentos de imagem necessários ao fazer OCR com tesseract. Ele faz o trabalho corretamente se for chamado do terminal. O que eu queria era fazer todo o processo dentro do Nemo, então criei uma ação customizada chamada OCR.nemo_actioninside /home/user1/.local/share/nemo/actionscom o seguinte conteúdo:

[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 ação do Nemo não produz saída com o script fornecido acima. O script .sh também está na pasta das ações personalizadas do Nemo.

Por favor ajude!

Responder1

Ótimo!!

-- ~/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/actions

[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;

E o texto OCR está na minha área de trabalho !!!

Responder2

Eu meio que encontrei uma solução para essa situação no Cinnamon. O .nemo_actionarquivo consiste no seguinte conteúdo.

[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

Ter o lançamento do terminal para fazer o trabalho é uma solução alternativa aqui. Todo o resto não parecia produzir resultados.

O script bash em si permaneceu praticamente o mesmo, alterado apenas por uma diretiva para manter o terminal aberto até a execução do 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

Em última análise, o que desejo é tornar esse processo completamente livre de terminais. Parece-me que o processo é um pouco diferente do Gnome2 (Mate). Aqui o script bash que consiste emcomandos de terminalnão execute "em algum lugar em segundo plano". Com scripts bash que chamam aplicativos GUI, Exec=a diretiva do Gnome3 permite o <script.sh %F>valor.

Responder3

É um script bash? Tentar

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

(ou mesmo /bin/sho que normalmente dashpode ser um pouco mais rápido.)

Quanto à depuração, na linha de comando:

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

Em seguida, execute a ação na janela do nemo que será aberta.

informação relacionada