* [v2, darwin] Fix nullreference exception when dev watcher failed to start and the user stopped wails dev with ctrl-c
* [v2] Improve starting of dev watcher command
Wails dev now also fails if the dev watcher could not be started. Since
the dev watcher is used to start e.g. vite to serve the frontend, it does
not make much sense to let Wails dev be running if the dev
watcher failed to start.
* [v2] Improve killing and cleanup of debug binary
- Make sure to kill the debug process in all cases even if an error occured.
- Make sure to kill the last started binary process
* chore: use createRoot for react-ts
* chore: use createRoot for react-js
* fix: quotes
* fix: remove semi
* chore: update react templates to use createRoot instead of ReactDOM.render
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Improve theme change at runtime
* Handle change to dark mode
* Refactor theme calculation
* Ensure theme is updated for WM_ACTIVATE and WM_SETTINGCHANGE events
* [v2, windows] CompareBrowserVersions needs a int32 pointer
Otherwise 4294967295 will be returned instead of -1 and the
minimum version check can't detect an older version.
So an older version than the minimum might be used and will
result in AccessViolationExceptions.
* [v2, windows] Use the correct minimum runtime version for SDK 1.0.992.28
The Webview2Loader.dll are already at version 1.0.992.28 for all platforms.
* [v2, windows] Remove unnecessary LockOSThread
Form.Invoke makes sure the call is on the correct thread and does
lock the OSThread during the call.
* [v2, windows] Unlock OSThread after native calls have been finished
This makes sure the OSThread can be reused by other go
routines after a native call has been finished. Otherwise the
OSThread will be destroyed as soon as the goroutine has
finished.
Make sure no pointers to the stack are passed to g_idle_add,
because at the time the callback gets executed on the
main thread, the pointer might be invalid.
Go might have reused the stack or grown the stack and the
pointer is invalid.
The concept used on Windows has been ported to Linux.
For users who wish to keep the wailsjs directory out of source control, the `wails generate module` command is valuable in a CI environment where wails build does not automatically generate the needed javascript module.
- Make sure to reset the default Arch of the build options and not keep the previous one.
- Expand to the full platform in outputBinaries so e.g. `-platform windows` can be used with `-nsis`
* [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.
Before opening a feature request, please check the [Roadmap](https://github.com/wailsapp/wails/discussions/1484) to see if it has already been requested.
***Please note: No new feature requests are being accepted for Wails v1***
- type:textarea
attributes:
label:Is your feature request related to a problem? Please describe.
description:A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
validations:
required:false
- type:textarea
attributes:
label:Describe the solution you'd like
description:A clear and concise description of what you want to happen.
validations:
required:true
- type:textarea
attributes:
label:Describe alternatives you've considered
description:A clear and concise description of any alternative solutions or features you've considered.
validations:
required:false
- type:textarea
attributes:
label:Additional context
description:Add any other context or screenshots about the feature request here.
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
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.