web-dev-qa-db-fra.com

L'action personnalisée Nemo (script .sh) ne s'exécute pas

J'ai créé un script .sh pour OCR-ing simple de captures d'écran que je fais avec Shutter. Le script ressemble à ceci (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

Ce script améliore les images requises lors de la création de ROC avec tesseract. Il fait le travail correctement s'il est appelé depuis le terminal. Ce que je voulais, c'était faire tout le processus dans Nemo. J'ai donc créé une action personnalisée nommée OCR.nemo_action à l'intérieur de /home/user1/.local/share/nemo/actions avec le contenu suivant:

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

Cette action Nemo ne produit pas de sortie avec le script donné ci-dessus. Le script .sh se trouve également dans le dossier des actions personnalisées de Nemo.

S'il vous plaît aider!

3
Borivoje Petrovic

Génial!!

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

Et le texte OCR est sur mon bureau !!!

1
John G.

Je suis en quelque sorte venu à la solution pour cette situation à la cannelle. Le fichier .nemo_action comprend le contenu suivant.

[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

Avoir le lancement de terminal pour faire le travail est plutôt une solution de contournement ici. Tout le reste ne semblait pas donner de résultats.

Le script bash lui-même est resté à peu près le même, modifié uniquement pour une directive de garder le terminal ouvert jusqu'à l'exécution du jeu de commandes.

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

Ce que je souhaite en fin de compte, c’est de rendre ce processus totalement exempt de terminal. Il me semble que le processus se déroule légèrement différemment de Gnome2 (Mate). Ici, le script bash qui consiste en commandes de terminal n'exécute pas "quelque part en arrière-plan". Avec les scripts bash qui appellent des applications d'interface graphique, la directive Exec= de Gnome3 autorise la valeur <script.sh %F>.

1
Borivoje Petrovic

Est-ce un script bash? Essayer

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

(ou même /bin/sh qui est généralement dash pourrait être légèrement plus rapide.)

En ce qui concerne le débogage, en ligne de commande:

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

Ensuite, lancez l’action depuis la fenêtre nemo qui s’est ouverte.

0
artfulrobot