web-dev-qa-db-ja.com

Nemoカスタムアクション(.shスクリプト)が実行されません

Shutterで作成したスクリーンショットの簡単なOCR記録用の.shスクリプトを作成しました。スクリプトは次のようになります(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

このスクリプトは、tesseractでOCRを実行する際に必要ないくつかの画像強化を行います。端末から呼び出された場合、ジョブは適切に実行されます。私が望んだのは、Nemo内でプロセス全体を実行することでした。そのため、OCR.nemo_actionという名前のカスタムアクションを次の内容で/home/user1/.local/share/nemo/actions内に作成しました。

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

このNemoアクションは、上記のスクリプトでは出力を生成しません。 .shスクリプトは、Nemoのカスタムアクションのフォルダーにもあります。

助けてください!

3

すばらしいです!!

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

そして、OCRテキストは私のデスクトップにあります!!!

1
John G.

シナモンでこの状況を解決するようになりました。 .nemo_actionファイルは、次のコンテンツで構成されています。

[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

ジョブを実行するために端末を起動することは、ここでの回避策です。他のすべてが結果を生むようには見えませんでした。

Bashスクリプト自体はほぼ同じままで、コマンドセットが実行されるまでターミナルを開いたままにするディレクティブについてのみ変更されました。

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

最終的に私が切望しているのは、このプロセスを完全にターミナルフリーにすることです。プロセスはGnome2(Mate)とは少し異なるように思えます。ここで、端末コマンドで構成されるbashスクリプトは、「バックグラウンドのどこか」で実行されません。 GUIアプリケーションを呼び出すbashスクリプトにより、Gnome3のExec=ディレクティブは<script.sh %F>値を許可します。

1

それはbashスクリプトですか?試して

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

(または、通常dashである/bin/shでさえ、わずかに速いかもしれません。)

デバッグに関しては、コマンドラインで:

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

次に、開いたnemoウィンドウからアクションを実行します。

0
artfulrobot