I'm using Kubuntu 18.04 with:
$ zenity --version
3.28.1
I want to display a --list
dialog with zenity, but I don't want to show the Cancel button (in fact I'm okay if there is no OK either).
It should be easy with the --no-cancel
option:
$ zenity --list --no-cancel
--no-cancel is not supported for this dialog
The output seems to indicate that zenity knows about the option but does not want to let me use it.
I only want to show the user the data in a table. I don't care about selection/editing or getting a result back.
Is there any alternative way? Or is zenity
simply unable to do this?
Yes,
zenity
is pretty limited. Luckily there’s a fork available which fills the gap:yad
– “Yet Another Dialog” (sudo apt install yad
). It uses the same syntax aszenity
, but adds a ton of useful options, for example--button
to explicitly define the buttons of your dialog window:This displays a list window with just an “OK” button returning the exit code
0
.Example
Here’s a simple example inspired by one from the manpage:
When “OK” is clicked in this state the program returns a
0
exit code and prints the checked options to stdout:Further reading
man yad
Relabel Zenity Cancel button
You can relabel the button but you can't remove it:
Will give you:
YAD (Yet Another Dialog)
Both
yad
andzenity
allow you to use GUI dialog boxes from a bash script or the shell command line. Yad surpasses Zenity in every department though:Works in all distros.
Yad Progress bars
You can define multiple progress bars in yad where zenity only offers 1. You can also include scrolling text.
Yad buttons
You can assign any text you want to any button. Also notice you can include a Window icon too.
Yad text entry
Yad displays text for you to change. Zenity cannot display existing text you can only enter new text.
Yad support
The author of Yad and many more contributors answer your questions in google groups. I've posted four or five questions about advanced functionality and usually get an answer within 24 hours. Not to mention enhancements are provided through the same channel.