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

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_actioninsideという名前のカスタム アクションを作成しました。/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 のカスタム アクションのフォルダーにもあります。

助けてください!

答え1

素晴らしい!!

-- ~/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/アクション

[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 テキストがデスクトップに表示されます。

答え2

私は Cinnamon でこの状況の解決策を見つけました。.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>値が許可されます。

答え3

それはbashスクリプトですか?試してみてください

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

(または、/bin/sh通常はdash少し速くなる場合もあります。)

デバッグに関しては、コマンドラインで次のようにします。

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

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

関連情報