3.1 KiB
Wails
A framework for building desktop applications using Go & Web Technologies.
About
The traditional method of providing web interfaces to Go programs is via a built-in web server. Wails offers a different approach: it provides the ability to wrap both Go code and a web frontend into a single binary. Tools are provided to make this easy for you by handling project creation, compilation and bundling. All you have to do is get creative!
Features
- Use standard Go libraries/frameworks for the backend
- Use any frontend technology to build your UI
- Expose Go methods/functions to the frontend via a single bind command
- Uses native rendering engines - no embedded browser
- Shared events system
- Native file dialogs
- Powerful cli tool
- Multiplatform
Installation
Wails uses cgo to bind to the native rendering engines so a number of platform dependent libraries are needed as well as an installation of Go. The basic requirements are:
- Go 1.11 or above
- npm
MacOS
Make sure you have the xcode command line tools installed. This can be done by running:
xcode-select --install
Linux
Ubuntu 18.04
sudo apt install pkg-config build-essential libgtk-3-dev libwebkit2gtk-4.0-dev
::: tip If you have successfully installed these dependencies on a different flavour of Linux, please consider submitting a PR. :::
Windows
Windows requires gcc and related tooling. The recommended download is from http://tdm-gcc.tdragon.net/download. Once this is installed, you are good to go.
Installation
Installation is as simple as running the following command:
go get -u github.com/wailsapp/wails/cmd/wails
Next Steps
It is recommended at this stage to read the comprehensive documentation at https://wails.app.
FAQ
-
Is this an alternative to Electron?
Depends on your requirements. It's designed to make it easy for Go programmers to make lightweight desktop applications or add a frontend to their existing applications. Whilst Wails does not currently offer hooks into native elements such as menus, this may change in the future.
-
Who is this project aimed at?
Go programmers who want to bundle an HMTL frontend with their applications, without resorting to creating a server and opening a browser to view it.
Shoulders of Giants
Without the following people, this project would never have existed:
- Dustin Krysak - His support and feedback has been immense. More patience than you can throw a stick at.
- Serge Zaitsev - Creator of Webview which Wails uses for the windowing.
Special Mentions:
- Bill Kennedy - Go guru, encourager and all-round nice guy, whose energy and inspiration powered me on when I had none left.
- Mark Bates - Creator of Packr, inspiration for packing strategies.