После этого решения у меня есть zenity сценарий для выяснения у меня, что сделать при нажатии на исполняемый сценарий в Thunar или файл на рабочем столе в Файлах Пантеона:
#!/bin/bash
zenity --question --text="What to do?" \
--ok-label=Run \
--cancel-label=Edit
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
И это показывает это:
Но существует маленький незначительный сбой: Вы не можете отклонить диалоговое окно в этой точке: использование близкой кнопки окна, Esc или Alt+F4 приравнивается к --cancel-label
опция в сценарии и откроет файл в текстовом редакторе.
Как я мог отредактировать сценарий так, чтобы, когда Esc нажимается, zenity окна закрылись бы без более далекого действия?
У меня есть это в комментарии:
любой позволил - диалоговое окно вопроса - тайм-аут для получения третьего возвращаемого значения (5)
Действительно, --timeout=4
закроет диалоговое окно после того количества secs.
или можно пойти для диалогового окна разнообразного выбора - списка - radiolist
Что это означает?
Там является простой пример radiolist в этой ссылке,
http://linux.byexamples.com/archives/265/a-complete-zenity-dialog-examples-2/
, я думаю, что легче использовать простой список (с опцией --list
, но без --radiolist
)
$ ans=$(zenity --list --title "What to do?" --column "What to do?" Run Edit 2> /dev/null); echo "ans=$ans"
ans=Run
$ ans=$(zenity --list --title "What to do?" --column "What to do?" Run Edit 2> /dev/null); echo "ans=$ans"
ans=Edit
$ ans=$(zenity --list --title "What to do?" --column "What to do?" Run Edit 2> /dev/null); echo "ans=$ans"
ans=
Упрощенный сценарий, который использует yad
, может быть обходным решением, чтобы отклонить окно, как предназначено; маркировки 'хорошо' для выполненного и 'Отмены' для редактирования.
sudo apt install yad
И сценарий:
#!/bin/bash
yad --text="Execute the file? (press 'Cancel' to edit)"
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
<час> версия А первоначального сценария (несколько улучшенный на основе комментария), который даже в отсутствие действия закроет окно после многих секунд:
#!/bin/bash
zenity --question --text="Press RUN to execute -- Press EDIT, ESC or close (x) to open as text -- or WAIT 7 seconds to dismiss" \
--ok-label=RUN \
--cancel-label=EDIT \
--timeout=7
case $? in
0)thunar $1
;;
1)gedit $1
;;
esac