Пользовательское действие Nemo (скрипт .sh) не выполняется

Пользовательское действие Nemo (скрипт .sh) не выполняется

Я создал скрипт .sh для простого распознавания текста на скриншотах, которые я делаю с помощью Shutter. Скрипт выглядит так ( 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

Этот скрипт выполняет некоторое улучшение изображения, которое требуется при OCR с помощью tesseract. Он выполняет работу правильно, если вызывается из терминала. Я хотел выполнить весь процесс в 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/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-текст у меня на рабочем столе!!!

решение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, который состоит изкоманды терминалане выполняться "где-то в фоновом режиме". В скриптах bash, вызывающих приложения с графическим интерфейсом, Exec=директива Gnome3 допускает <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.

Связанный контент