Zenity 脚本:使用关闭(x)按钮或 Esc 关闭窗口

Zenity 脚本:使用关闭(x)按钮或 Esc 关闭窗口

下列的此解决方案我有一个 zenity 脚本询问我单击可执行脚本时要做什么在图纳尔或桌面文件在万神殿文件中:

#!/bin/bash

zenity --question --text="What to do?" \
       --ok-label=Run \
       --cancel-label=Edit

case $? in
    0)thunar "$1"
    ;;
    1)gedit $1
    ;;
esac

它显示了这一点:

在此处输入图片描述

但是有一个小问题:此时您无法关闭对话框:使用关闭窗口按钮,EscAlt+F4等同于--cancel-label脚本中的选项并将在文本编辑器中打开文件。

我该如何编辑脚本以便 Esc按下时 zenity 窗口无需进一步操作即可关闭?


评论后编辑:

我在评论中看到了这一点:

或者让--question dialog --timeout 获得第三个返回值(5)

确实,--timeout=4将在该秒数之后关闭对话框。

或者您可以通过--list --radiolist 选择多项选择对话框

这意味着什么?

答案1

广播列表的简单示例

此链接中有一个简单的广播列表示例,

http://linux.byexamples.com/archives/265/a-complete-zenity-dialog-examples-2/

使用 --list 的示例

我认为使用简单列表(带有选项--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=

在此处输入图片描述

答案2

可以使用简化的脚本yad作为解决方法,以便按预期关闭窗口;标签为“OK”表示运行,“Cancel”表示编辑。

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 

在此处输入图片描述

相关内容