Zenity

From Free Knowledge Base- The DUCK Project: information for everyone
Jump to: navigation, search

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.