Zenity

zenity (lower-case z) / formerly gdialog - have graphical GTK+ dialog boxes in command-line and shell scripts. Zenity adds graphical interfaces to shell scripts with a single command. Zenity is an open source and a cross-platform application

sample scripts

Basic example

#!/bin/bash 
first=$(zenity --title="First Name" --text "What is your first name?" --entry) 
zenity --info --title="Welcome" --text="Mr./Ms. $first" 
last=$(zenity --title="Last Name" --text "$first what is your last name?" --entry) 
zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

Size and Font control

zenity --info --text="This is an information box." --width=600 --height=400
zenity --info --text '<span foreground="blue" font="32">Some\nbig text</span>\n\n<i>(it is also blue)</i>'
zenity --info --text 'Normal <big>Big <big>Bigger</big></big>'

Functional dialog for media player

#!/bin/bash 
#zenity --list --title "Video Type?" --column="FPS" NTSC PAL

strPlayer="$1"
strPlayer=${strPlayer/"myth://user@192.168.254.88:6000"/"/mnt/mythtv/videos"}
echo $strPlayer >> /tmp/altplayer.log


varName1=$(zenity --list --title "$strPlayer" --column="FPS" NTSC PAL);
varName2=$(echo $varName1 | sed 's/[^a-zA-Z0-9]//g')

#zenity --error

#zenity --info --text="You selected $varName2";

case "${varName2}" in
        NTSC )
                zenity --info --text="Play standard NTSC video"
                vlc -f "$strPlayer" --no-embedded-video --no-sub-autodetect-file vlc://quit
                ;;
        PAL )
                zenity --info --text="Play at 96 percent for PAL"
                vlc -f "$strPlayer" --no-audio-time-stretch --rate=0.96 --no-embedded-video --no-sub-autodetect-file vlc://quit
                ;;
        * )
                zenity --error
                ;;
esac

exit 0

prompt user from remote shell on remote desktop

zenity --info --text "stop playing video games and do your homework" --display=:0

Note: You must be ssh into the remote system as the same user that is using the xdisplay locally.

Suppress annoying GTK errors

zenity --info --text "Hello World" 2>/dev/null

note: Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. is the result of a suggested requirement in the GTK Toolkit that the programmer using GTK should specify a parent window for the one being used in the dialog. This apparently has been suggested as a future requirement and is for the purpose of aiding the window manager in keeping track of window state, however, is completely unnecessary and the error can be safely ignored.

Last modified on 21 February 2021, at 20:50