Documentation ¶
Overview ¶
Package zenity provides cross-platform access to simple dialogs that interact graphically with the user.
It is inspired by, and closely follows the API of, the zenity program, which it uses to provide the functionality on various Unixes. See:
https://help.gnome.org/users/zenity/stable/
This package does not require cgo, and it does not impose any threading or initialization requirements.
Index ¶
- Constants
- func Calendar(text string, options ...Option) (time.Time, error)
- func Entry(text string, options ...Option) (string, error)
- func Error(text string, options ...Option) error
- func Info(text string, options ...Option) error
- func IsAvailable() bool
- func List(text string, items []string, options ...Option) (string, error)
- func ListItems(text string, items ...string) (string, error)
- func ListMultiple(text string, items []string, options ...Option) ([]string, error)
- func ListMultipleItems(text string, items ...string) ([]string, error)
- func Notify(text string, options ...Option) error
- func Password(options ...Option) (usr string, pwd string, err error)
- func Question(text string, options ...Option) error
- func SelectColor(options ...Option) (color.Color, error)
- func SelectFile(options ...Option) (string, error)
- func SelectFileMultiple(options ...Option) ([]string, error)
- func SelectFileSave(options ...Option) (string, error)
- func Warning(text string, options ...Option) error
- type DialogIcon
- type FileFilter
- type FileFilters
- type Option
- func Attach(id any) Option
- func AutoClose() Option
- func CancelLabel(cancel string) Option
- func CheckList() Option
- func ClassHint(name, class string) Option
- func Color(c color.Color) Option
- func ConfirmCreate() Option
- func ConfirmOverwrite() Option
- func Context(ctx context.Context) Option
- func DefaultCancel() Option
- func DefaultDate(year int, month time.Month, day int) Option
- func DefaultItems(items ...string) Option
- func Directory() Option
- func DisallowEmpty() Option
- func Display(display string) Option
- func DontAttchDarwinWindow() Option
- func Ellipsize() Option
- func EntryText(text string) Option
- func ExtraButton(extra string) Option
- func Filename(filename string) Option
- func Height(height uint) Option
- func HideText() Option
- func Icon(icon any) Option
- func MaxValue(value int) Option
- func MidSearch() Option
- func Modal() Option
- func NoCancel() Option
- func NoWrap() Option
- func OKLabel(ok string) Option
- func Pulsate() Option
- func RadioList() Option
- func ShowHidden() Option
- func ShowPalette() Option
- func TimeRemaining() Option
- func Title(title string) Option
- func Username() Option
- func Width(width uint) Option
- func WindowClosePrevention(windowCLosePrevention bool) Option
- func WindowIcon(icon any) Option
- type ProgressDialog
Examples ¶
Constants ¶
const ErrCanceled = zenutil.ErrCanceled
ErrCanceled is returned when the cancel button is pressed, or window functions are used to close the dialog.
const ErrExtraButton = zenutil.ErrExtraButton
ErrExtraButton is returned when the extra button is pressed.
const ErrUnsupported = zenutil.ErrUnsupported
ErrUnsupported is returned when a combination of options is not supported.
Variables ¶
This section is empty.
Functions ¶
func Calendar ¶
Calendar displays the calendar dialog.
Valid options: Title, Width, Height, OKLabel, CancelLabel, ExtraButton, WindowIcon, Attach, Modal, DefaultDate.
May return: ErrCanceled, ErrExtraButton.
Example ¶
package main import ( "time" "github.com/jeesk/zenity" ) func main() { zenity.Calendar("Select a date from below:", zenity.DefaultDate(2006, time.January, 1)) }
Output:
func Entry ¶
Entry displays the text entry dialog.
Valid options: Title, Width, Height, OKLabel, CancelLabel, ExtraButton, WindowIcon, Attach, Modal, EntryText, HideText.
May return: ErrCanceled, ErrExtraButton.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Entry("Enter new text:", zenity.Title("Add a new entry")) }
Output:
func Error ¶
Error displays the error dialog.
Valid options: Title, Width, Height, OKLabel, ExtraButton, Icon, WindowIcon, Attach, Modal, NoWrap, Ellipsize.
May return: ErrCanceled, ErrExtraButton.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Error("An error has occurred.", zenity.Title("Error"), zenity.ErrorIcon) }
Output:
func Info ¶
Info displays the info dialog.
Valid options: Title, Width, Height, OKLabel, ExtraButton, Icon, WindowIcon, Attach, Modal, NoWrap, Ellipsize.
May return: ErrCanceled, ErrExtraButton.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Info("All updates are complete.", zenity.Title("Information"), zenity.InfoIcon) }
Output:
func IsAvailable ¶
func IsAvailable() bool
IsAvailable reports whether dependencies of the package are installed. It always returns true on Windows and macOS.
func List ¶
List displays the list dialog.
Valid options: Title, Width, Height, OKLabel, CancelLabel, ExtraButton, WindowIcon, Attach, Modal, RadioList, DefaultItems, DisallowEmpty.
May return: ErrCanceled, ErrExtraButton, ErrUnsupported.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.List( "Select items from the list below:", []string{"apples", "oranges", "bananas", "strawberries"}, zenity.Title("Select items from the list"), zenity.DisallowEmpty(), ) }
Output:
func ListItems ¶
ListItems displays the list dialog.
May return: ErrCanceled, ErrUnsupported.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.ListItems( "Select items from the list below:", "apples", "oranges", "bananas", "strawberries") }
Output:
func ListMultiple ¶
ListMultiple displays the list dialog, allowing multiple items to be selected.
Valid options: Title, Width, Height, OKLabel, CancelLabel, ExtraButton, WindowIcon, Attach, Modal, CheckList, DefaultItems, DisallowEmpty.
May return: ErrCanceled, ErrExtraButton, ErrUnsupported.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.ListMultiple( "Select items from the list below:", []string{"apples", "oranges", "bananas", "strawberries"}, zenity.Title("Select items from the list"), zenity.DefaultItems("apples", "bananas"), ) }
Output:
func ListMultipleItems ¶
ListMultipleItems displays the list dialog, allowing multiple items to be selected.
May return: ErrCanceled, ErrUnsupported.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.ListMultipleItems( "Select items from the list below:", "apples", "oranges", "bananas", "strawberries") }
Output:
func Notify ¶
Notify displays a notification.
Valid options: Title, Icon.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Notify("There are system updates necessary!", zenity.Title("Warning"), zenity.InfoIcon) }
Output:
func Password ¶
Password displays the password dialog.
Valid options: Title, OKLabel, CancelLabel, ExtraButton, WindowIcon, Attach, Modal, Username.
May return: ErrCanceled, ErrExtraButton.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Password(zenity.Title("Type your password")) }
Output:
Example (Username) ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Password( zenity.Title("Type your username and password"), zenity.Username()) }
Output:
func Question ¶
Question displays the question dialog.
Valid options: Title, Width, Height, OKLabel, CancelLabel, ExtraButton, Icon, WindowIcon, Attach, Modal, NoWrap, Ellipsize, DefaultCancel.
May return: ErrCanceled, ErrExtraButton.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Question("Are you sure you want to proceed?", zenity.Title("Question"), zenity.QuestionIcon) }
Output:
func SelectColor ¶
SelectColor displays the color selection dialog.
Valid options: Title, WindowIcon, Attach, Modal, Color, ShowPalette.
May return: ErrCanceled.
Example ¶
package main import ( "image/color" "github.com/jeesk/zenity" ) func main() { zenity.SelectColor( zenity.Color(color.NRGBA{R: 0x66, G: 0x33, B: 0x99, A: 0x80})) }
Output:
Example (Palette) ¶
package main import ( "image/color" "github.com/jeesk/zenity" ) func main() { zenity.SelectColor( zenity.ShowPalette(), zenity.Color(color.NRGBA{R: 0x66, G: 0x33, B: 0x99, A: 0xff})) }
Output:
func SelectFile ¶
SelectFile displays the file selection dialog.
Valid options: Title, WindowIcon, Attach, Modal, Directory, Filename, ShowHidden, FileFilter(s).
May return: ErrCanceled.
Example ¶
package main import ( "github.com/jeesk/zenity" ) const defaultPath = `` func main() { zenity.SelectFile( zenity.Filename(defaultPath), zenity.FileFilters{ {"Go files", []string{"*.go"}, false}, {"Web files", []string{"*.html", "*.js", "*.css"}, true}, {"Image files", []string{"*.png", "*.gif", "*.ico", "*.jpg", "*.webp"}, true}, }) }
Output:
Example (Directory) ¶
package main import ( "github.com/jeesk/zenity" ) const defaultPath = `` func main() { zenity.SelectFile( zenity.Filename(defaultPath), zenity.Directory()) }
Output:
func SelectFileMultiple ¶
SelectFileMultiple displays the multiple file selection dialog.
Valid options: Title, WindowIcon, Attach, Modal, Directory, Filename, ShowHidden, FileFilter(s).
May return: ErrCanceled, ErrUnsupported.
Example ¶
package main import ( "github.com/jeesk/zenity" ) const defaultPath = `` func main() { zenity.SelectFileMultiple( zenity.Filename(defaultPath), zenity.FileFilters{ {"Go files", []string{"*.go"}, false}, {"Web files", []string{"*.html", "*.js", "*.css"}, true}, {"Image files", []string{"*.png", "*.gif", "*.ico", "*.jpg", "*.webp"}, true}, }) }
Output:
Example (Directory) ¶
package main import ( "github.com/jeesk/zenity" ) const defaultPath = `` func main() { zenity.SelectFileMultiple( zenity.Filename(defaultPath), zenity.Directory()) }
Output:
func SelectFileSave ¶
SelectFileSave displays the save file selection dialog.
Valid options: Title, WindowIcon, Attach, Modal, Filename, ConfirmOverwrite, ConfirmCreate, ShowHidden, FileFilter(s).
May return: ErrCanceled.
Example ¶
package main import ( "github.com/jeesk/zenity" ) const defaultName = `` func main() { zenity.SelectFileSave( zenity.ConfirmOverwrite(), zenity.Filename(defaultName), zenity.FileFilters{ {"Go files", []string{"*.go"}, false}, {"Web files", []string{"*.html", "*.js", "*.css"}, true}, {"Image files", []string{"*.png", "*.gif", "*.ico", "*.jpg", "*.webp"}, true}, }) }
Output:
func Warning ¶
Warning displays the warning dialog.
Valid options: Title, Width, Height, OKLabel, ExtraButton, Icon, WindowIcon, Attach, Modal, NoWrap, Ellipsize.
May return: ErrCanceled, ErrExtraButton.
Example ¶
package main import ( "github.com/jeesk/zenity" ) func main() { zenity.Warning("Are you sure you want to proceed?", zenity.Title("Warning"), zenity.WarningIcon) }
Output:
Types ¶
type DialogIcon ¶
type DialogIcon int
DialogIcon is an Option that sets the dialog icon.
const ( ErrorIcon DialogIcon = iota WarningIcon InfoIcon QuestionIcon PasswordIcon NoIcon )
The stock dialog icons.
type FileFilter ¶
type FileFilter struct { Name string // display string that describes the filter (optional) Patterns []string // filter patterns for the display string CaseFold bool // if set patterns are matched case-insensitively }
FileFilter is an Option that sets a filename filter.
On Windows and macOS filtering is always case-insensitive.
macOS hides filename filters from the user, and only supports filtering by extension (or "uniform type identifiers").
Patterns may use the fnmatch syntax on all platforms: https://docs.python.org/3/library/fnmatch.html
type FileFilters ¶
type FileFilters []FileFilter
FileFilters is an Option that sets multiple filename filters.
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
An Option is an argument passed to dialog functions to customize their behavior.
func Attach ¶
Attach returns an Option to set the parent window to attach to.
Attach accepts:
- a window id (int) on Unix
- a window handle (~uintptr) on Windows
- an application name (string) or process id (int) on macOS
func AutoClose ¶
func AutoClose() Option
AutoClose returns an Option to dismiss the dialog when 100% has been reached.
func CancelLabel ¶
CancelLabel returns an Option to set the label of the Cancel button.
func CheckList ¶
func CheckList() Option
CheckList returns an Option to show check boxes (Unix only).
func ClassHint ¶
ClassHint returns an Option to set the program name and class as used by the window manager (Unix only).
func ConfirmCreate ¶
func ConfirmCreate() Option
ConfirmCreate returns an Option to confirm file selection if the file does not yet exist (Windows only).
func ConfirmOverwrite ¶
func ConfirmOverwrite() Option
ConfirmOverwrite returns an Option to confirm file selection if the file already exists.
func Context ¶
Context returns an Option to set a Context that can dismiss the dialog.
Dialogs dismissed by ctx return ctx.Err().
func DefaultCancel ¶
func DefaultCancel() Option
DefaultCancel returns an Option to give the Cancel button focus by default.
func DefaultDate ¶
DefaultDate returns an Option to set the date.
func DefaultItems ¶
DefaultItems returns an Option to set the items to initially select (Windows and macOS only).
func Directory ¶
func Directory() Option
Directory returns an Option to activate directory-only selection.
func DisallowEmpty ¶
func DisallowEmpty() Option
DisallowEmpty returns an Option to not allow zero items to be selected (Windows and macOS only).
func DontAttchDarwinWindow ¶
func DontAttchDarwinWindow() Option
func Ellipsize ¶
func Ellipsize() Option
Ellipsize returns an Option to enable ellipsizing in the dialog text (Unix only).
func ExtraButton ¶
ExtraButton returns an Option to add one extra button.
func Filename ¶
Filename returns an Option to set the filename.
You can specify a file name, a directory path, or both. Specifying a file name, makes it the default selected file. Specifying a directory path, makes it the default dialog location.
func Icon ¶
Icon returns an Option to set the dialog icon.
Icon accepts a DialogIcon, or a string. The string can be a GTK icon name (Unix), or a file path (Windows and macOS). Supported file formats depend on the plaftorm, but PNG should be cross-platform.
func MaxValue ¶
MaxValue returns an Option to set the maximum value. The default maximum value is 100.
func MidSearch ¶
func MidSearch() Option
MidSearch returns an Option to change list search to find text in the middle, not on the beginning (Unix only).
func NoCancel ¶
func NoCancel() Option
NoCancel returns an Option to hide the Cancel button (Windows and Unix only).
func RadioList ¶
func RadioList() Option
RadioList returns an Option to show radio boxes (Unix only).
func ShowHidden ¶
func ShowHidden() Option
ShowHidden returns an Option to show hidden files (Windows and macOS only).
func TimeRemaining ¶
func TimeRemaining() Option
TimeRemaining returns an Option to estimate when progress will reach 100% (Unix only).
func WindowClosePrevention ¶
func WindowIcon ¶
WindowIcon returns an Option to set the window icon.
WindowIcon accepts a DialogIcon, or a string file path. Supported file formats depend on the plaftorm, but PNG should be cross-platform.
type ProgressDialog ¶
type ProgressDialog interface { // Text sets the dialog text. Text(string) error // Value sets how much of the task has been completed. Value(int) error // MaxValue gets how much work the task requires in total. MaxValue() int // Complete marks the task completed. Complete() error // Close closes the dialog. Close() error // Done returns a channel that is closed when the dialog is closed. Done() <-chan struct{} }
ProgressDialog allows you to interact with the progress indication dialog.
func Progress ¶
func Progress(options ...Option) (ProgressDialog, error)
Progress displays the progress indication dialog.
Valid options: Title, Width, Height, OKLabel, CancelLabel, ExtraButton, Icon, WindowIcon, Attach, Modal, MaxValue, Pulsate, NoCancel, TimeRemaining.
May return: ErrUnsupported.
Example ¶
package main import ( "time" "github.com/jeesk/zenity" ) func main() { dlg, err := zenity.Progress( zenity.Title("Update System Logs")) if err != nil { return } defer dlg.Close() dlg.Text("Scanning mail logs...") dlg.Value(0) time.Sleep(time.Second) dlg.Value(25) time.Sleep(time.Second) dlg.Text("Updating mail logs...") dlg.Value(50) time.Sleep(time.Second) dlg.Text("Resetting cron jobs...") dlg.Value(75) time.Sleep(time.Second) dlg.Text("Rebooting system...") dlg.Value(100) time.Sleep(time.Second) dlg.Complete() time.Sleep(time.Second) }
Output:
Example (Pulsate) ¶
package main import ( "time" "github.com/jeesk/zenity" ) func main() { dlg, err := zenity.Progress( zenity.Title("Update System Logs"), zenity.Pulsate()) if err != nil { return } defer dlg.Close() dlg.Text("Scanning mail logs...") time.Sleep(time.Second) dlg.Text("Updating mail logs...") time.Sleep(time.Second) dlg.Text("Resetting cron jobs...") time.Sleep(time.Second) dlg.Text("Rebooting system...") time.Sleep(time.Second) dlg.Complete() time.Sleep(time.Second) }
Output: