* [website] Fix devserver default value doc
* [v2] Add support for AssetsHandler
AssetsHandler is a http.Handler delegate, which gets called
as a fallback for all Non-GET requests and for GET requests
for which the Assets didn’t find the file.
Known Limitations on Linux:
- All requests are GET requests
- No request headers
- No request body
- No response status code, only StatusOK will be returned
- No response headers
Known Limitations on Windows:
- Request body is leaking memory. Seems to be a bug in
WebView2, investigation angoing.
Most of these limitations on Linux will be fixed in the future with
adding support for Webkit2Gtk 2.36.0+.
* [v2, linux] Add response streaming support
The complete response won’t be held anymore in memory and will
be streamed to WebKit2.
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
If the window is frameless and we are minimizing, then we need to suppress
the Resize on the WebView2. If we don't do this, restoring does not work as
expected and first restores with some wrong size during the restore animation
and only fully renders when the animation is done.
This highly depends on the content in the WebView.
Possible fix for #1319
* [v2] Consolidate AssetServers
* [v2] Support starturl for webview on linux and darwin
* [v2] Add support for frontend DevServer
* [v2] Activate frontend DevServer in svelte template
* [website] Add bleeding edge guide for PRs
* DoNotMerge: Bump Version for testing
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* v2: linux: add icon to linux specific app option and load it during window creation
Signed-off-by: Martin Gysel <me@bearsh.org>
* doc: linux specific option: icon
* add support for 'DomReady' callback on linux
cosmetic: use bodyLen instead of len() in processRequest()
* reformat webViewLoadChanged() for consistency
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Initial commit
* Retry index.html every 500ms for 5s before defaulting to the default index page.
* Load all files using the same technique
* Remove reload script
Especially the File directive seems not to work with a `/` on
Windows. Whereas `\` works for all directives and on all platforms.
So the `\` in NSIS can be used also on Linux and MacOS.
* refactor(cli): optimize the template that generates the base template
* refactor: optimize the default vanilla template
* feat(cli): add script to default vanilla template
* refactor(cli): refactor default svelte template and add script
* fix: remove manually added assetdir fields
Manually specified values are removed as the application will automatically infer from embed.FS.
* fix: remove drag attribute within page
* Update v2/cmd/wails/internal/commands/initialise/templates/templates/svelte/frontend/README.md
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* feat(website): sync documents and add content
- Add a directory to the website
- Update site navigation menu
- Update site tagline(Emphasis on cross-platform)
- Sync the changelog of the latest version to the website
* docs: remove the `appendix` directory
* 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.
* Fix using runtime.WindowFullscreen on Linux ARM64.
* 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.
* [v2] Add support for post build hooks
Currently only supports build-level hooks
* [v2] Improve build assets handling and use single source for manifest generation
The manifest asset files are now a go template and data will be
resolved before they are included into the build output.
Breaking Change: Windows manifest file must be named
“wails.exe.manifest” and doesn’t depend on the project name
anymore.
* [v2, windows] NSIS installer generation
* Add os.O_WRONLY to icon.ico to avoid bad file descriptor error
* Wrap errors coming from winres.LoadICO()
If the file exists but is empty, a blunt "Unexpected EOF" is returned, and propagated as is.
This is not super helpful when trying to pin point what's going on.
Wrapping the error helps to locate the problem.
* [v2, windows] Apply suggested window size during DPI changed event
This adjusts the window size if the window is moved from one
monitor to another with a different DPI scaling
* [v2, windows] Do not block processing of messages during frameless drag/resize
* [v2, windows] Bump winc
Improves the HiDPI handling by using newer APIs if available
* [v2, windows] Constrain frameless maximize to MaxWidth/MaxHeight
* [linux] Move SetTitle and startDrag to main thread
* [linux] Move SetPosition, Center, Fullscreen and UnFullscreen to main thread
* Fix runtime Window Get/Set Position signatures
* Fix vanilla template keyboard handling
* [windows] Fix pos/getpos calls
* [linux] Move SetTitle and startDrag to main thread
* [linux] Move SetPosition, Center, Fullscreen and UnFullscreen to main thread
* Fix runtime Window Get/Set Position signatures
* Fix vanilla template keyboard handling
* feat(website): update dependencies and optimize some terms
* docs: optimize english documents
* docs: sync documents
* chore(website): the website project adds the recommended configuration of the vscode plugin
* ensure data doesn't get garbage collected too soon (#1113)
* ensure data doesn't get garbage collected too soon
* Update v2/internal/frontend/desktop/linux/frontend.go
Co-authored-by: stffabi <stffabi@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: stffabi <stffabi@users.noreply.github.com>
* revert: undo lock-file changes
* Feature/v2 linux menus (#1114)
* Render menubar + text menu items
* Support disabled menuitems + callbacks
* Support checkboxes
* Support reusing checkboxes
* Support submenus
* Support Radio menuitems
* Support Menu Accelerators
* Support MenuUpdateApplicationMenu
* Fixes#1108 (#1115)
* chore(action): add auto sync script (#1109)
* Support RGBA, fix compilation error
* Fix fullscreen drag
* Ignore setenv error
* ensure data doesn't get garbage collected too soon (#1113)
* ensure data doesn't get garbage collected too soon
* Update v2/internal/frontend/desktop/linux/frontend.go
Co-authored-by: stffabi <stffabi@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: stffabi <stffabi@users.noreply.github.com>
* Feature/v2 linux menus (#1114)
* Render menubar + text menu items
* Support disabled menuitems + callbacks
* Support checkboxes
* Support reusing checkboxes
* Support submenus
* Support Radio menuitems
* Support Menu Accelerators
* Support MenuUpdateApplicationMenu
* Fixes#1108 (#1115)
* chore(action): add auto sync script (#1109)
* Support RGBA, fix compilation error
* Fix fullscreen drag
* Ignore setenv error
* feat(website): update dependencies and optimize some terms
* docs: optimize english documents
* docs: sync documents
* chore(website): the website project adds the recommended configuration of the vscode plugin
* revert: undo lock-file changes
* [linux] better error handling
* [linux] Better Go 1.16 support
* [linux] Remove Go based dispatcher
* feat(website): update dependencies and optimize some terms
Co-authored-by: Travis McLane <tmclane@gmail.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
Co-authored-by: stffabi <stffabi@users.noreply.github.com>
* Render menubar + text menu items
* Support disabled menuitems + callbacks
* Support checkboxes
* Support reusing checkboxes
* Support submenus
* Support Radio menuitems
* Support Menu Accelerators
* Updated windows window/frontend to fix issue with html select positioning
* Moved notifyParentWindowPositionChanged to the Window struct and moved RegMsgHandler to Run
* Update v2/internal/frontend/desktop/windows/window.go
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Moved winc.RegMsgHandler back to old location
* fixed error with merge
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
The following features are now supported for framless windows
- Allow aero snap
- Minimize and maximize animations
- Allow minimizing/restoring by clicking onto the taskbar icon
- If EnableFramelessBorder is used, the default application border with glass effect is used
Change: If a menu is used, it won't be displayed anymore if the window is frameless.
Frameless windows are always not resizable per default and
the resizing for those will be initiated by the frontend see
processMessage.
If EnableSizable is enabled for frameless windows, a small white
titlebar will be shown.
Fix#1049
Build desktop applications using Go & Web Technologies.<br/><br/>
@@ -52,53 +52,50 @@
- [4. Features](#nav-4)
- [5. Sponsors](#nav-5)
- [6. Installation](#nav-6)
- [6.1 MacOS](#nav-6-1)
- [6.2 Linux](#nav-6-2)
- [6.2.1 Debian/Ubuntu](#nav-6-2-1)
- [6.2.2 Arch Linux / ArchLabs / Ctlos Linux](#nav-6-2-2)
- [6.2.3 Centos](#nav-6-2-3)
- [6.2.4 Fedora](#nav-6-2-4)
- [6.2.5 VoidLinux & VoidLinux-musl](#nav-6-2-5)
- [6.2.6 Gentoo](#nav-6-2-6)
- [6.3 Windows](#nav-6-3)
- [7. Usage](#nav-7)
- [7.1 Next Steps](#nav-7-1)
- [8. FAQ](#nav-8)
- [9. Contributors](#nav-9)
- [10. Special Mentions](#nav-10)
- [12. Special Thanks](#nav-11)
- [7. FAQ](#nav-8)
- [8. Contributors](#nav-9)
- [9. Special Mentions](#nav-10)
- [10. Special Thanks](#nav-11)
</details>
<span id="nav-3"></span>
## Introductions
## Introduction
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!
<span id="nav-3-1"></span>
<hr/>
<h3><strong>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.</strong></h3>
<hr/>
### Official Website
### Version 2
The official docs can be found at [https://wails.app](https://wails.app).
Wails v2 has been released in Beta for all 3 platforms. Check out the [new website](https://wails.io) if you are
interested in trying it out.
Click [here](https://wails.io) if you are interested in trying out v2 Beta for Windows.
### Legacy v1 Website
The legacy v1 docs can be found at [https://wails.app](https://wails.app).
<span id="nav-4"></span>
## 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
- Use any frontend technology you are already familiar with to build your UI
- Quickly create rich frontends for your Go programs using pre-built templates
- Easily call Go methods from Javascript
-Auto-generated Typescript definitions for your Go structs and methods
-Native Dialogs & Menus
-Supports modern translucency and "frosted window" effects
-Unified eventing system between Go and Javascript
- Powerful cli tool to quickly generate and build your projects
@@ -15,8 +15,6 @@ The build command processes the Wails project and generates an application binar
| -ldflags "custom ld flags" | Use given ldflags | |
| -o path/to/binary | Compile to given path/filename | |
| -k | Keep generated assets | |
| -package | Create a platform specific package | |
| -production | Compile in production mode: -ldflags="-w -s" + "-h windows" on Windows | |
| -tags | Build tags to pass to Go compiler (quoted and space separated) | |
| -upx | Compress final binary with UPX (if installed) | |
| -upxflags "custom flags" | Flags to pass to upx | |
@@ -36,13 +34,13 @@ The build process is as follows:
- The frontend is then built. This command is read from the project file `wails.json` under the key `frontend:install` and executed in the `frontend` directory. If this is not defined, it is ignored.
- The project directory is checked to see if the `build` directory exists. If not, it is created and default project assets are copied to it.
- An asset bundle is then created by reading the `html` key from `wails.json` and loading the referenced file. This is then parsed, looking for local Javascript and CSS references. Those files are in turn loaded into memory, converted to C data and saved into the asset bundle located at `build/assets.h`, which also includes the original HTML.
- The application icon is then processed: if there is no `build/appicon.png`, a default icon is copied. On Windows, an `app.ico` file is generated from this png. On Mac, `icons.icns` is generated.
- If there are icons in the `build/tray` directory, these are processed, converted to C data and saved as `build/trayicons.h`, ready for the compilation step.
-If there are icons in the `build/dialog` directory, these are processed, converted to C data and saved as`build/userdialogicons.h`, ready for the compilation step.
- If the `-package` flag is given for a Windows target, the Windows assets in the `build/windows` directory are processed: manifest + icons compiled to a `.syso` file (deleted after compilation).
- If we are building a universal binary for Mac, the application is compiled for both `arm64` and `amd64`. The `lipo` tool is then executed to create the universal binary.
- The application icon is then processed: if there is no `build/appicon.png`, a default icon is copied. On Windows,
an `app.ico` file is generated from this png. On Mac, `icons.icns` is generated.
-The platform assets in the `build/<platform>` directory are processed: manifest + icons compiled to a `.syso` file (
deleted after compilation), `info.plist` copied to `.app` on Mac.
- If we are building a universal binary for Mac, the application is compiled for both `arm64` and `amd64`. The `lipo`
tool is then executed to create the universal binary.
- If we are not building a universal binary for Mac, the application is built using `go build`, using build tags to indicate type of application and build mode (debug/production).
- If the `-upx` flag was provided, `upx` is invoked to compress the binary. Custom flags may be provided using the `-upxflags` flag.
- If the `package` flag is given for a non Windows target, the application is bundled for the platform. On Mac, this creates a `.app` with the processed icons, the `Info.plist` in `build/darwin` and the compiled binary.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.