Linux Commands Examples

A great documentation place for Linux commands

zenity

display GTK+ dialogs


see also : gdialog - dialog

Synopsis

zenity [options]


add an example, a script, a trick and tips

: email address (won't be displayed)
: name

Step 2

Thanks for this example ! - It will be moderated and published shortly.

Feel free to post other examples
Oops ! There is a tiny cockup. A damn 404 cockup. Please contact the loosy team who maintains and develops this wonderful site by clicking in the mighty feedback button on the side of the page. Say what happened. Thanks!

examples

2
source
            
command=$(zenity --entry --text="Run a command")
$command
0

Display a file selector with the title Select a file to remove. The file selected is returned on standard output.

zenity --title="Select a file to remove" --file-selection

Display a text entry dialog with the title Select Host and the text Select the host you would like to flood-ping. The entered text is returned on standard output.

zenity --title "Select Host" --entry --text "Select the host you would like to flood-ping"

Display a dialog, asking Microsoft Windows has been found! Would you like to remove it?. The return code will be 0 (true in shell) if OK is selected, and 1 (false) if Cancel is selected.

zenity --question --title "Alert" --text "Microsoft Windows has been found! Would you like to remove it?"

Show the search results in a list dialog with the title Search Results and the text Finding all header files....

find . -name ’*.h’ | zenity --list --title "Search Results" --text "Finding all header files.." --column "Files"

Show a notification in the message tray

zenity --notification --window-icon=update.png --text "System update necessary!"

Display a weekly shopping list in a check list dialog with Apples and Oranges pre selected

zenity --list --checklist --column "Buy" --column "Item" TRUE Apples TRUE Oranges FALSE Pears FALSE Toothpaste

Display a progress dialog while searching for all the postscript files in your home directory

find $HOME -name ’*.ps’ | zenity --progress --pulsate


0
source
            
zenity --info --text='Goodbye, World!'
0
source
            
zenity --error --text "Error: $1"
0
source
            
exec `zenity --entry --text=''`&
0
source
            
djview "$(zenity --file-selection)"
0
source
            
channel=`zenity --entry --text="What channel?"`
channel_changer $channel
0
source

Getting zenity and at to work properly

Check your /var/log/messages, chances are you'll have some "Cannot open display" errors from your X Server.

You need to provide utilities like at and cron access to your X Display by name. Edit your ~/.bashrc to include the following:

xhost local:USERNAME > /dev/null

Substitute your username for the USERNAME value above. This will provide the at utility with the name of your X Display so it can attempt to fork zenity on it.

Modify your zenity command to include the --display switch:

echo "zenity --info --display=:0.0" | at now + 1 min 
0
source

Can UDEV somehow trigger zenity for a logged in user in a session?

You already found the answer. The script (zenity) needs an X Window Server for displaying a message. The script is run from udev and has no display attached to it. You can solve this by hardwiring the DISPLAY variable in your script, i.e.

DISPLAY=:0; export DISPLAY

The drawback to this is, it works only, if you are the only user and/or know the display in advance. If there are multiple users on your system, the display might be anything else, for example :1, :2, and so on. Or another users gets the zenity message on his screen.

A better approach would be to split the detection of the event and the interaction with the user or display of the message.

For this you can create a script or program, which runs in your GUI session and listens for a trigger from a daemon or the udev trigger script.

A third possibility could be to connect to the udisks-daemon and ask for information, when the external device is plugged in. You can try udisks --monitor or udisks --monitor-detail for this and parse the output, whenever an event happens.

There seems to be a udisksctl command, which does the same with a slightly different syntax. Maybe it's just a newer version of the udisks command.

You can also look at some Gui tools like GNOME Disks, which rely on the udev/udisks system as well.

Update:

The multiple invocations usually arise from the report of the various subsystems. You can see that, when you log the environment to some log file in the /usr/local/bin/test.sh script

umask 077
mkdir -p /tmp/udevtest.d
env >>/tmp/udevtest.d/udevtest.log

When I plugin a USB stick, I get the following reports

$ grep -e ACTION -e SUBSYSTEM /tmp/udevtest.d/udevtest.log
ACTION=add
SUBSYSTEM=usb
ACTION=add
SUBSYSTEM=usb
ACTION=add
SUBSYSTEM=scsi
ACTION=add
SUBSYSTEM=scsi_host
ACTION=add
SUBSYSTEM=scsi
ACTION=add
SUBSYSTEM=scsi
ACTION=add
SUBSYSTEM=scsi_disk
ACTION=add
SUBSYSTEM=scsi_generic
ACTION=add
SUBSYSTEM=scsi_device
ACTION=add
SUBSYSTEM=bsg
ACTION=add
SUBSYSTEM=block
ACTION=add
SUBSYSTEM=block

You can also add DEVTYPE to distinguish between the two usb or disk reports. So, in order to reduce the reports to just a few or even only one call, you must be more specific and add additional conditions to your udev rules file, for example choose the SUBSYSTEM=scsi_disk or whatever is appropriate for your device.

description

zenity is a program that will display GTK+ dialogs, and return (either in the return code, or on standard output) the users input. This allows you to present information, and ask for information from the user, from all manner of shell scripts.

For example, zenity --question will return either 0, 1 or 5, depending on whether the user pressed OK, Cancel or timeout has been reached. zenity --entry will output on standard output what the user typed into the text entry field.

Comprehensive documentation is available in the GNOME Help Browser, under GNOME/Utilities.

options

This program follows the usual GNU command line syntax, with long options starting with two dashes (’-’).

Dialog options
--calendar

Display calendar dialog

--entry

Display text entry dialog

--error

Display error dialog

--file-selection

Display file selection dialog

--info

Display info dialog

--list

Display list dialog

--notification

Display notification

--progress

Display progress indication dialog

--question

Display question dialog

--text-info

Display text information dialog

--warning

Display warning dialog

--scale

Display scale dialog

--color-selection

Display color selection dialog

--password

Display password dialog

--forms

Display forms dialog

General options
--title=TITLE

Set the dialog title

--window-icon=ICONPATH

Set the window icon with the path to an image. Alternatively, one of the four stock icons can be used: ’error’, ’info’, ’question’ or ’warning’

--width=WIDTH

Set the dialog width

--height=HEIGHT

Set the dialog height

--timeout=TIMEOUT

Set the dialog timeout in seconds

Calendar options
--text=STRING

Set the dialog text

--day=INT

Set the calendar day

--month=INT

Set the calendar month

--year=INT

Set the calendar year

--date-format=PATTERN

Set the format for the returned date. The default depends on the user locale or be set with the strftime style. For example %A %d/%m/%y

Text entry options
--text=STRING

Set the dialog text

--entry-text=STRING

Set the entry text

--hide-text

Hide the entry text

Error options
--text=STRING

Set the dialog text

--no-wrap

Do not enable text wrapping

--no-markup

Do not enable pango markup

File selection options
--filename=FILENAME

Set the file or directory to be selected by default

--multiple

Allow selection of multiple filenames in file selection dialog

--directory

Activate directory-only selection

--save

Activate save mode

--separator=SEPARATOR

Specify separator character when returning multiple filenames

--confirm-overwrite

Confirm file selection if filename already exists

--file-filter=NAME | PATTERN1 PATTERN2

Sets a filename filter

Info options
--text=STRING

Set the dialog text

--no-wrap

Do not enable text wrapping

--no-markup

Do not enable pango markup

List options
--text=STRING

Set the dialog text

--column=STRING

Set the column header

--checklist

Use check boxes for first column

--radiolist

Use radio buttons for first column

--separator=STRING

Set output separator character

--multiple

Allow multiple rows to be selected

--editable

Allow changes to text

--print-column=NUMBER

Specify what column to print to standard output. The default is to return the first column. ’ALL’ may be used to print all columns.

--hide-column=NUMBER

Hide a specific column

--hide-header

Hides the column headers

Notification options
--text=STRING

Set the notification text

--listen

Listen for commands on stdin. Commands include ’message’, ’tooltip’, ’icon’, and ’visible’ separated by a colon. For example, ’message: Hello world’, ’visible: false’, or ’icon: /path/to/icon’. The icon command also accepts the four stock icon: ’error’, ’info’, ’question’, and ’warning’

Progress options
--text=STRING

Set the dialog text

--percentage=INT

Set initial percentage

--auto-close

Close dialog when 100% has been reached

--auto-kill

Kill parent process if cancel button is pressed

--pulsate

Pulsate progress bar

--no-cancel

Hides the cancel button

Question options
--text=STRING

Set the dialog text

--no-wrap

Do not enable text wrapping

--no-markup

Do not enable pango markup

--ok-label

Set the text of the OK button

--cancel-label

Set the text of the cancel button

Text options
--filename=FILENAME

Open file

--editable

Allow changes to text

--checkbox=TEXT

Enable a checkbox for use like a ’I read and accept the terms.’

--ok-label

Set the text of the OK button

--cancel-label

Set the text of the cancel button

Warning options
--text=STRING

Set the dialog text

--no-wrap

Do not enable text wrapping

--no-markup

Do not enable pango markup

Scale options
--text=STRING

Set the dialog text

--value=VALUE

Set initial value

--min-value=VALUE

Set minimum value

--max-value=VALUE

Set maximum value

--step=VALUE

Set step size

--print-partial

Print partial values

--hide-value

Hide value

Color selection options
--color=VALUE

Set the initial color

--show-palette

Show the palette

Password dialog options
--username

Display the username field

Forms dialog options
--add-entry=FIELDNAME

Add a new Entry in forms dialog

--add-password=FIELDNAME

Add a new Password Entry in forms dialog

--add-calendar=FIELDNAME

Add a new Calendar in forms dialog

--text=STRING

Set the dialog text

--separator=STRING

Set output separator character

--forms-date-format=PATTERN

Set the format for the returned date. The default depends on the user locale or be set with the strftime style. For example %A %d/%m/%y

Miscellaneous options
-?, --help

Show summary of options.

--about

Display an about dialog.

--version

Show version of program.

Also the standard GTK+ options are accepted. For more information about the GTK+ options, execute following command.

zenity --help-gtk

environment

Normally, zenity detects the terminal window from which it was launched and keeps itself above that window. This behavior can be disabled by unsetting the WINDOWID environment variable.


see also

gdialog , dialog


author

Zenity was written by Glynn Foster <glynn.foster[:at:]sun[:dot:]com>.

This manual page was written by Ross Burton <ross[:at:]burtonini[:dot:]com>.

How can this site be more helpful to YOU ?


give  feedback