Avoid showing cancel button on dialog
Solution 1:
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 as zenity
, but adds a ton of useful options, for example --button
to explicitly define the buttons of your dialog window:
yad --list --button=OK:0
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:
yad --list --button=OK:0 --checklist --column "Buy" --column "Item" \
TRUE Apples TRUE Oranges FALSE Pears FALSE Toothpaste
When “OK” is clicked in this state the program returns a 0
exit code and prints the checked options to stdout:
TRUE|Apples|
TRUE|Oranges|
Further reading
man yad
- Sourceforge project page
- Usage Examples
Solution 2:
Relabel Zenity Cancel button
You can relabel the button but you can't remove it:
$ zenity --list --cancel-label="Go Back" --column="Column 1"
Will give you:
YAD (Yet Another Dialog)
Both yad
and zenity
allow you to use GUI dialog boxes from a bash script or the shell command line. Yad surpasses Zenity in every department though:
sudo apt install yad
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.