Nemo Custom Action (.sh-Skript) wird nicht ausgeführt

Nemo Custom Action (.sh-Skript) wird nicht ausgeführt

Ich habe ein .sh-Skript für die einfache OCR-Erkennung von Screenshots erstellt, die ich mit Shutter erstelle. Das Skript sieht folgendermaßen aus ( 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

Dieses Skript führt einige Bildverbesserungen durch, die beim OCRing mit Tesseract erforderlich sind. Es erledigt die Aufgabe ordnungsgemäß, wenn es vom Terminal aus aufgerufen wird. Ich wollte den gesamten Prozess in Nemo durchführen, also habe ich eine benutzerdefinierte Aktion mit dem Namen OCR.nemo_actiondarin erstellt /home/user1/.local/share/nemo/actions, die den folgenden Inhalt hat:

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

Diese Nemo-Aktion erzeugt mit dem oben angegebenen Skript keine Ausgabe. Das .sh-Skript befindet sich auch im Ordner für benutzerdefinierte Aktionen von Nemo.

Bitte helfen Sie!

Antwort1

Großartig!!

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

Und der OCR-Text ist auf meinem Desktop!!!

Antwort2

Ich habe in Cinnamon eine Lösung für diese Situation gefunden. Die .nemo_actionDatei besteht aus dem folgenden Inhalt.

[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

Das Starten des Terminals ist hier eher eine Problemumgehung. Alles andere schien keine Ergebnisse zu bringen.

Das Bash-Skript selbst blieb weitgehend gleich und wurde lediglich durch die Anweisung geändert, das Terminal bis zur Ausführung des Befehlssatzes geöffnet zu halten.

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

Was ich mir letztendlich wünsche, ist, diesen Prozess komplett terminalfrei zu machen. Es scheint mir, dass der Prozess etwas anders abläuft als bei Gnome2 (Mate). Hier das Bash-Skript, das ausTerminalbefehlenicht „irgendwo im Hintergrund“ ausführen. Bei Bash-Skripten, die GUI-Anwendungen aufrufen, Exec=lässt die Direktive von Gnome3 den <script.sh %F>Wert zu.

Antwort3

Ist es ein Bash-Skript? Versuchen Sie es

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

(oder sogar /bin/sh, was normalerweise dashetwas schneller sein könnte.)

Zum Debuggen geben Sie in der Befehlszeile Folgendes ein:

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

Führen Sie dann die Aktion aus dem geöffneten Nemo-Fenster aus.

verwandte Informationen