zenity
Cross-platform Go library and CLI to create simple dialogs that interact graphically with the user
About zenity
Zenity dialogs for Golang, Windows and macOS
This repo includes:
- a cross-platform Go package providing Zenity-like dialogs (simple dialogs that interact graphically with the user)
- a โportโ of the
zenitycommand to both Windows and macOS based on that library.
Implemented dialogs:
- message (error, info, question, warning)
- text entry
- list (simple)
- password
- file selection
- color selection
- calendar
- progress
- notification
Behavior on Windows, macOS and other Unixes might differ slightly. Some of that is intended (reflecting platform differences), other bits are unfortunate limitations.
Installing
The Go package:
go get github.com/ncruces/zenity@latest
The zenity command on macOS/WSL using Homebrew ๐บ:
brew install ncruces/tap/zenity
The zenity command on Windows using Scoop ๐จ:
scoop install https://ncruces.github.io/scoop/zenity.json
The zenity command on macOS/Windows, if you have Go:
go install github.com/ncruces/zenity/cmd/zenity@latest
Or download the latest release.
Using
For the Go package, consult the documentation and examples.
The zenity command does its best to be compatible with the GNOME version.
Consult the documentation
and man page of that command.
Why?
Benefits of the Go package:
- no
cgo(see benefits, mostly cross-compilation) - no main loop (or any other threading or initialization requirements)
- cancelation through
context - on Windows:
- no additional dependencies
- Explorer shell not required
- works in Server Core
- Unicode support
- High DPI (no manifest required)
- Visual Styles (no manifest required)
- WSL/Cygwin/MSYS2 support
- no additional dependencies
- on macOS:
- only dependency is
osascript
- only dependency is
- on other Unixes:
- wraps either one of
zenity,matedialog,qarma
- wraps either one of
Zenity wrappers
Zenity wrappers for languages other than Go can benefit from our zenity command. On Unix (Linux, FreeBSD, etc) they can use the original tool, and on Windows/macOS they may use the command from this repo for portability.
Examples:
- NodeJS
dialog-guiby @SnurfDev - Crystal
zenity.crby @kojix2
Credits
I'd like to thank all contributors,
but @gen2brain in particular
for dlgs,
which was instrumental to the Windows port of zenity.
Frequently Asked Questions
What is zenity?
zenity is a GUI library for the Go programming language. Cross-platform Go library and CLI to create simple dialogs that interact graphically with the user
How do I install zenity?
Install zenity with the Go module system using `go get ncruces/zenity`. Check the repository for the current installation instructions.
What category does zenity belong to?
zenity is listed under GUI, specifically GUI.