Сценарий Zenity: отклоните окно с близким (x) кнопка или Esc

После этого решения у меня есть 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

И это показывает это:

enter image description here

Но существует маленький незначительный сбой: Вы не можете отклонить диалоговое окно в этой точке: использование близкой кнопки окна, Esc или Alt+F4 приравнивается к --cancel-label опция в сценарии и откроет файл в текстовом редакторе.

Как я мог отредактировать сценарий так, чтобы, когда Esc нажимается, zenity окна закрылись бы без более далекого действия?


Редактирование после комментария:

У меня есть это в комментарии:

любой позволил - диалоговое окно вопроса - тайм-аут для получения третьего возвращаемого значения (5)

Действительно, --timeout=4 закроет диалоговое окно после того количества secs.

или можно пойти для диалогового окна разнообразного выбора - списка - radiolist

Что это означает?

1
задан 24 November 2017 в 18:41

2 ответа

Простым примером 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=

enter image description here

1
ответ дан 7 December 2019 в 13:36

Упрощенный сценарий, который использует 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

enter image description here

<час>

версия А первоначального сценария (несколько улучшенный на основе комментария), который даже в отсутствие действия закроет окно после многих секунд:

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

enter image description here

1
ответ дан 7 December 2019 в 13:36

Другие вопросы по тегам:

Похожие вопросы: