5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-03 01:13:03 +08:00
Create beautiful applications using Go
Go to file
Ian M. Jones c378d935f3
Fix linux unexpected signal errors (#1200)
* Fix fatal error on otherwise clean exit.

* Fix race condition while setting title during window creation.

* Fix unexpected signal error when clicking webview should initiate a drag window operation.

* Ensure ExecuteOnMainThread callbacks are removed from the event source list on completion.

* Ensure all ExecuteOnMainThread callbacks use the expected return value on completion.

* Fix potential memory leak when exiting early from startDrag.
2022-03-04 17:50:43 +11:00
.github Update bug_report.md 2022-02-27 15:48:01 +11:00
.vscode Runtime updates 2020-11-17 21:19:09 +11:00
assets/images docs: fix image path errors and optimize assets paths 2021-11-25 02:13:56 +08:00
cmd add uos linux distro 2022-01-05 11:13:34 +08:00
img Update sponsors 2022-01-16 14:48:17 +11:00
lib locking the event manager before mutating it. this should resolve issue #950 2021-12-06 16:21:35 -06:00
licenses updated licenses + gomod 2019-02-20 22:48:59 +11:00
runtime Merge pull request #776 from wailsapp/dependabot/npm_and_yarn/runtime/js/runtime/path-parse-1.0.7 2021-09-30 08:40:10 +10:00
scripts Feature/1.16 (#646) 2021-04-02 20:44:55 +11:00
v2 Fix linux unexpected signal errors (#1200) 2022-03-04 17:50:43 +11:00
website [v2] NSIS installer support for Windows (#1184) 2022-03-02 19:44:31 +11:00
.eslintignore feat: significant overhaul of runtime 2019-07-20 19:32:30 +10:00
.eslintrc feat: significant overhaul of runtime 2019-07-20 19:32:30 +10:00
.gitignore Move assets -> build dir. Bundle assets in CLI binary. 2021-05-13 20:12:19 +10:00
.goreleaser.yml release 0.11.3 2019-04-25 20:14:10 +10:00
.hound.yml fix: more lint fixes 2019-07-13 22:10:43 +10:00
.jshintrc chore: add .jshintrc file to indicate es6 2019-06-19 20:54:36 +10:00
app_other.go [v2] go fmt + windowIsTranslucent 2021-09-15 20:30:14 +10:00
app_windows.go [v2] go fmt + windowIsTranslucent 2021-09-15 20:30:14 +10:00
app.go Initial support for firebug (#543) 2020-10-28 21:20:47 +11:00
CHANGELOG.md chore: Version Bump 2019-07-20 19:40:43 +10:00
cli.go Develop (#250) 2019-10-08 06:12:08 +11:00
config.go [v2] beta.0 test 2021-09-27 21:05:43 +10:00
CONTRIBUTORS.md [v2] beta.0 test 2021-09-27 21:05:43 +10:00
go.mod chore: run go fmt ./... and go mod tidy 2021-11-25 12:14:27 +08:00
go.sum chore: run go fmt ./... and go mod tidy 2021-11-25 12:14:27 +08:00
LICENSE Update license and readme 2019-04-08 19:18:39 +10:00
logo-universal.png Update logo 2022-02-23 19:53:15 +11:00
package-lock.json Support for minimum and maximum window sizes (#612) 2021-04-02 16:14:09 +11:00
README.md Update README.md 2022-02-27 15:51:46 +11:00
README.zh-Hans.md docs: update and sync all documents (#1183) 2022-02-24 22:08:00 +11:00


Build desktop applications using Go & Web Technologies.

CodeFactor CodeFactor Awesome Release Pipelines

Internationalization

English | 简体中文

Table of Contents

Click me to Open/Close the directory listing

Introductions

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!


PLEASE NOTE: As we are approaching the v2 release, we are not accepting any new feature requests or bug reports for v1. If you have a critical issue, please open a ticket and state why it is critical.


Version 2

Wails v2 has been released in Beta for all 3 platforms. Check out the new website if you are interested in trying it out.

Legacy v1 Website

The legacy v1 docs can be found at https://wails.app.

Features

  • Use standard Go for the backend
  • Use any frontend technology to build your UI
  • Quickly create Vue, Vuetify or React frontends for your Go programs
  • 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

Sponsors

This project is supported by these kind people / companies:





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.16
  • npm

MacOS

Make sure you have the xcode command line tools installed. This can be done by running:

xcode-select --install

Linux

Debian/Ubuntu

sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev

Debian: 8, 9, 10

Ubuntu: 16.04, 18.04, 19.04

Also succesfully tested on: Zorin 15, Parrot 4.7, Linuxmint 19, Elementary 5, Kali, Neon, Pop!_OS

Arch Linux / ArchLabs / Ctlos Linux

sudo pacman -S webkit2gtk gtk3

Also succesfully test on: Manjaro & ArcoLinux

Centos

sudo yum install webkitgtk3-devel gtk3-devel

CentOS 6, 7

Fedora

sudo yum install webkit2gtk3-devel gtk3-devel

Fedora 29, 30

VoidLinux & VoidLinux-musl

xbps-install gtk+3-devel webkit2gtk-devel

Gentoo

sudo emerge gtk+:3 webkit-gtk

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.

Usage

Ensure Go modules are enabled: GO111MODULE=on and go/bin is in your PATH variable.

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 HTML/JS/CSS frontend with their applications, without resorting to creating a server and opening a browser to view it.

  • What's with the name?

    When I saw WebView, I thought "What I really want is tooling around building a WebView app, a bit like Rails is to Ruby". So initially it was a play on words (Webview on Rails). It just so happened to also be a homophone of the English name for the Country I am from. So it stuck.

Contributors

Special Mentions

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 (Not long now Dustin!).
  • Serge Zaitsev - Creator of Webview which Wails uses for the windowing.
  • Byron - At times, Byron has single handedly kept this project alive. Without his incredible input, we never would have got to v1.

This project was mainly coded to the following albums:

Special Thanks


A huge thanks to Pace for sponsoring the project and helping the efforts to get Wails ported to Apple Silicon!

If you are looking for a Project Management tool that's powerful but quick and easy to use, check them out!

A special thank you to JetBrains for donating licenses to us!

Please click the logo to let them know your appreciation!