次の この解決策 私は 実行可能スクリプトをクリックしたときに何をするか尋ねてください 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ウィンドウはそれ以上のアクションなしに閉じますか?
私はコメントでこれを持っています:
--question dialog --timeoutを使用して、3番目の戻り値(5)を取得します。
実際、--timeout=4
はその秒数後にダイアログを閉じます。
または、--list --radiolistで複数選択ダイアログに移動できます
どういう意味ですか?
yad
を使用する単純化されたスクリプトは、ウィンドウを意図したとおりに閉じるための回避策です。ラベルは、実行の場合は「OK」、編集の場合は「キャンセル」です。
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
このリンクにはラジオリストの簡単な例がありますが、
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=