zenity
display GTK+ dialogs
see also :
gdialog - dialog
Synopsis
zenity
[options]
add an example, a script, a trick and tips
examples
source
command=$(zenity --entry
--text="Run a
command")
$command
source
exec `zenity --entry --text=''`&
source
zenity --info --text='Goodbye, World!'
source
zenity --error --text "Error:
$1"
source
channel=`zenity --entry
--text="What
channel?"`
channel_changer $channel
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
source
djview "$(zenity
--file-selection)"
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
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>.