Compare commits

..

124 Commits

Author SHA1 Message Date
Travis McLane d8e7df4226 move linux -> gtk & remove qt tag 2023-12-13 17:14:16 -06:00
Benjamin Quinn b83b386169 Fix unminimize 2023-12-13 17:14:16 -06:00
Benjamin Quinn a0503653ac Fix window close 2023-12-13 17:14:16 -06:00
Benjamin Quinn 7895cc8675 Better window center 2023-12-13 17:14:16 -06:00
Benjamin Quinn abf5d3256c More window functions 2023-12-13 17:14:16 -06:00
Benjamin Quinn 0a3d94988f Center window 2023-12-13 17:14:16 -06:00
Benjamin Quinn 1968630e6d Save dialog 2023-12-13 17:14:16 -06:00
Benjamin Quinn 1d4b74ef27 Print 2023-12-13 17:14:16 -06:00
Benjamin Quinn 61e6ce81aa Clipboard 2023-12-13 17:14:14 -06:00
Benjamin Quinn 00020e165f Multi file dialog 2023-12-13 17:12:53 -06:00
Benjamin Quinn 31bb5b0460 Directory dialog 2023-12-13 17:12:53 -06:00
Benjamin Quinn 4052c20f12 File dialog 2023-12-13 17:12:53 -06:00
Benjamin Quinn dbb37e4ab5 Message dialogs 2023-12-13 17:12:53 -06:00
Benjamin Quinn 09f86fd066 Screens and javascript 2023-12-13 17:12:53 -06:00
Benjamin Quinn 615ba63e56 More window functions 2023-12-13 17:12:53 -06:00
Benjamin Quinn 13005bd116 Reformat c++ code 2023-12-13 17:12:53 -06:00
Benjamin Quinn 66d2dce2e6 Initial work on the qt frontend 2023-12-13 17:12:53 -06:00
github-actions[bot] 3aaa1f8e34 chore: update sponsors.svg (#3122)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-12-13 23:15:03 +11:00
Yong Hui aaa65ff7c2 docs: fix doc typos (#3119)
(cherry picked from commit acf55033e2e7dabb480fa3c00e18f945fcc18d93)
2023-12-12 20:38:30 +11:00
imgbot[bot] 5f412d0bfb [ImgBot] Optimize images (#3094)
*Total -- 454.86kb -> 406.40kb (10.65%)

/website/static/img/showcase/snippetexpandergui-select-snippet.png -- 140.27kb -> 113.72kb (18.93%)
/website/static/img/showcase/snippetexpandergui-search-and-paste.png -- 86.16kb -> 70.75kb (17.88%)
/website/static/img/showcase/snippetexpandergui-add-snippet.png -- 36.61kb -> 30.74kb (16.04%)
/website/static/img/icon-linux-dark.svg -- 2.56kb -> 2.38kb (7.02%)
/v2/pkg/templates/templates/preact/frontend/src/assets/preact.svg -- 1.54kb -> 1.49kb (3.54%)
/website/static/img/sponsors.svg -- 187.71kb -> 187.32kb (0.21%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2023-12-12 20:33:21 +11:00
Ali Torabi aa8cd7ce67 Add the esp studio show case (#3114) 2023-12-11 19:05:27 +11:00
Lea Anthony ae99d7a973 Update version in changelog 2023-12-10 10:41:14 +11:00
Lea Anthony a632ac5068 v2.7.1 2023-12-10 10:25:14 +11:00
atterpac e3af0945d0 Fix Nil pointer if GPU does not provide device info (#3108)
* Fix Nil pointer if GPU does not provide device info
* Updated changelog format

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-12-10 10:21:21 +11:00
Lea Anthony 975c55a3d5 Add better macos guard for elementFullscreenEnabled (#3111)
* Add better macos guard for elementFullscreenEnabled

* Disable go linters as they constantly error

* Run full check on bugfix branches

* Update to Go 1.20+1.21

* Update github.com/tc-hib/winres to v0.2.1

* Update setup-go to v4

* Try fix for Go 1.20

* Fix go.mod

* Update go sum

* Revert to builds on Go 1.18 + 1.19

* Update Go version to 1.19 for all workflows and modules

The Go version is updated to 1.19 across all GitHub Actions workflows and go.mod files. All builds and tests will now only run on Go 1.19, simplifying our build matrix, and ensuring we're testing on the latest stable Go version.

* Update build-and-test workflow for MacOS version and Go version

The build-and-test workflow has been updated to run tests on 'macos-11' in addition to 'macos-latest'. Furthermore, Go version for the tests has been set to '1.19' only.

* Update actions versions

* Move to go 1.20 and improve caching

* Move to go 1.20 and improve caching

* Add additional guards
2023-12-10 10:12:14 +11:00
Lea Anthony c3d57d05c3 Update github.com/tc-hib/winres to v0.2.1 2023-12-10 07:40:00 +11:00
Lea Anthony e9cc68fe3a Update to Go 1.20+1.21 2023-12-10 07:34:49 +11:00
Lea Anthony 5d9fe49cf9 Include macos-11 build 2023-12-10 07:33:53 +11:00
Lea Anthony fd3d1801ed Run full check on bugfix branches 2023-12-10 07:32:48 +11:00
Lea Anthony f517c8b980 Update README.md
Use updated starchart
2023-12-09 20:45:02 +11:00
YOSHIKI HIDAKA 73b547a730 update Star History Chart url (#3106) 2023-12-09 20:43:08 +11:00
Lea Anthony 6a8322cdb5 v2.7.0 2023-12-09 17:29:56 +11:00
github-actions[bot] 07fc8e3707 chore: update sponsors.svg (#3105)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-12-09 11:20:45 +11:00
venkadeshshiva 4cbc7f3eec added wails-template-nextjs-app-router under react (#3082) 2023-12-04 18:51:27 +11:00
gurshan a1f067377f add .gitignore modification to sveltekit doc (#3074)
* add gitignore modification to sveltekit doc

* Fix Typo

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-12-04 18:49:34 +11:00
github-actions[bot] 3c5d850a30 chore: update sponsors.svg (#3088)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-12-04 18:47:20 +11:00
semgrep.dev on behalf of @leaanthony 92c9f546eb Add Semgrep CI 2023-12-03 21:42:21 +00:00
github-actions[bot] 7d14a75ff3 chore: update sponsors.svg (#3085)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-11-29 19:25:54 +11:00
Marcus Crane 5547792b68 Update Gon usage to reflect Bearer fork (#3063)
Signed-off-by: Marcus Crane <marcus@utf9k.net>
2023-11-27 19:27:32 +11:00
Andrey Pshenkin b2839ed719 Pass obfuscation settings from wails.json (#3080)
* pass obfuscation settings from wails.json

* add to changelog
2023-11-26 23:14:50 +11:00
Andrey Pshenkin 674042df36 fix obfuscated build binding ordering (#3071)
* fix obfuscated build binding ordering

* remove unused string method

* add to changelog

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-11-26 07:16:24 +11:00
Andrey Pshenkin b9de31e38e Add support for interface generation and enums (#3047)
* Add support to output ts models as interfaces

* Add support to generate enums from golang

* cleanup logs

* add missing documentation

* fix package names for enum. Fix processing enums that are in separate packages

* revert golang 1.21

* Fix spelling

* Add support for simplified version of Enum for typescriptify

* update docs

* removed unused logs

* Add tests. Fix imported enums types in models

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-11-26 06:50:49 +11:00
Ian M. Jones 929dfb4123 docs: add Snippet Expander to Showcase (#3079)
* docs: add Snippet Expander to Showcase

* Remove package-lock.json
2023-11-26 05:05:02 +11:00
github-actions[bot] 11fdc6a558 chore: update sponsors.svg (#3072)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-11-23 22:14:48 +11:00
dependabot[bot] 801cf3c84a Bump sharp and sponsorkit in /scripts/sponsors (#3060)
Bumps [sharp](https://github.com/lovell/sharp) to 0.32.6 and updates ancestor dependency [sponsorkit](https://github.com/antfu/sponsorkit). These dependencies need to be updated together.


Updates `sharp` from 0.31.3 to 0.32.6
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/main/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.31.3...v0.32.6)

Updates `sponsorkit` from 0.8.2 to 0.8.9
- [Release notes](https://github.com/antfu/sponsorkit/releases)
- [Commits](https://github.com/antfu/sponsorkit/compare/v0.8.2...v0.8.9)

---
updated-dependencies:
- dependency-name: sharp
  dependency-type: indirect
- dependency-name: sponsorkit
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-17 20:04:22 +11:00
Lea Anthony 4efc8e358d [chore] fix go.mod 2023-11-12 14:04:48 +11:00
Lea Anthony 9ce0ddb4f8 [chore] lint fixes 2023-11-12 12:30:49 +11:00
github-actions[bot] d88a741ce7 chore: update sponsors.svg (#3053)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-11-12 11:45:55 +11:00
github-actions[bot] c76ced7daa docs: sync translations (#3041)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-11-10 14:23:47 +11:00
dependabot[bot] fc46455526 Bump golang.org/x/image from 0.5.0 to 0.10.0 in /v2 (#3023)
Bumps [golang.org/x/image](https://github.com/golang/image) from 0.5.0 to 0.10.0.
- [Commits](https://github.com/golang/image/compare/v0.5.0...v0.10.0)

---
updated-dependencies:
- dependency-name: golang.org/x/image
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-10 10:27:33 +11:00
Lykin 70b7aa1ec2 add Tiny RDM to showcase (#3030) 2023-11-09 22:08:02 +11:00
github-actions[bot] 03545e33d9 docs: sync translations (#3001)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-11-08 21:06:11 +11:00
github-actions[bot] e32c2b05e4 chore: update sponsors.svg (#3038)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-11-08 20:00:03 +11:00
github-actions[bot] 57c04ba740 chore: update sponsors.svg (#3034)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-11-06 20:46:14 +11:00
Andrey Pshenkin 426a569c89 Fix single instance lock for macOS sandbox app (#3029)
* fix single instance lock for sandbox app

* fix single instance lock for sandbox app
2023-11-05 14:10:01 +11:00
Denis Bernard 08e12de2a0 linux: workaround for #2977 (#3027)
In NewWindow, set options.Linux.WebviewGpuPolicy to WebviewGpuPolicyNever
if options.Linux is nil, disabling GPU acceleration by default on linux
until the upstream bugs https://bugs.webkit.org/show_bug.cgi?id=228268
and https://bugs.webkit.org/show_bug.cgi?id=261874 are fixed.
2023-11-04 18:03:12 +11:00
Bruno Borges 0a63215cde Resource efficient will often mean CPU/memory. Here, it saves download size. (#3028) 2023-11-04 06:55:03 +11:00
Andrey Pshenkin ae688aa07d Implement custom protocol association support (#3000)
* implement MacOS openFile/openFiles events

* wip: windows file association

* fix macro import

* add file icon copy

* try copy icon

* keep only required part of scripts

* update config schema

* fix json

* set fileAssociation for mac via config

* proper iconName handling

* add fileAssociation icon generator

* fix file association icons bundle

* don't break compatibility

* remove mimeType as not supported linux for now

* add documentation

* adjust config schema

* restore formatting

* try implement single instance lock with params passing

* fix focusing

* fix focusing

* formatting

* use channel buffer for second instance events

* handle errors

* add comment

* remove unused option in file association

* wip: linux single instance lock

* wip: linux single instance

* some experiments with making window active

* try to use unminimise

* remove unused

* try present for window

* try present for window

* fix build

* cleanup

* cleanup

* implement single instance lock on mac os

* implement proper show for windows

* proper unmimimise

* get rid of openFiles mac os. change configuration structure

* remove unused channel

* remove unused function

* add documentation for single instance lock

* add PR link

* wip mac os deeplinks

* put custom url listner on top to catch link on app opening

* put custom url listner on top to catch link on app opening

* try add custom url windows

* adjust custom url

* add docs

* merge master

* update documentation

* add comment for darwin

* add PR link

* change naming

* change naming

* change naming

* change naming

* fix formatting

* fix naming

* Fix typo

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-11-02 20:26:05 +11:00
github-actions[bot] e960798e85 chore: update sponsors.svg (#3019)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-11-01 20:02:59 +11:00
Lea Anthony 93335d7661 update docs 2023-11-01 08:05:17 +11:00
github-actions[bot] d96ec5d332 chore: update sponsors.svg (#3016)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-10-31 20:55:47 +11:00
biuaxia 0533d2e208 Update options.mdx (#3013)
Change the ZoomFactor and IsZoomControlEnabled in the document to the location of the new version
2023-10-30 23:54:03 +11:00
biuaxia b328f60172 Update changelog.mdx (#3014) 2023-10-30 23:53:21 +11:00
github-actions[bot] ac560a6526 chore: update sponsors.svg (#3010)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-10-30 19:49:25 +11:00
多啦b梦 2693de6822 I developed a window designer software that I hope can be added to the template window designer free open source designed specifically for wails (#3006) 2023-10-29 19:16:33 +11:00
github-actions[bot] 3c39b674d3 chore: update sponsors.svg (#3005)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-10-29 18:53:59 +11:00
stffabi afe922a4e3 [go-webview2] Bump to 1.0.10 (#3002) 2023-10-24 17:59:39 +11:00
Andrey Pshenkin c24bd5e3e8 Implement Single instance lock feature with passing arguments to initial instance (#2951)
* implement MacOS openFile/openFiles events

* wip: windows file association

* fix macro import

* add file icon copy

* try copy icon

* keep only required part of scripts

* update config schema

* fix json

* set fileAssociation for mac via config

* proper iconName handling

* add fileAssociation icon generator

* fix file association icons bundle

* don't break compatibility

* remove mimeType as not supported linux for now

* add documentation

* adjust config schema

* restore formatting

* try implement single instance lock with params passing

* fix focusing

* fix focusing

* formatting

* use channel buffer for second instance events

* handle errors

* add comment

* remove unused option in file association

* wip: linux single instance lock

* wip: linux single instance

* some experiments with making window active

* try to use unminimise

* remove unused

* try present for window

* try present for window

* fix build

* cleanup

* cleanup

* implement single instance lock on mac os

* implement proper show for windows

* proper unmimimise

* get rid of openFiles mac os. change configuration structure

* remove unused channel

* remove unused function

* add documentation for single instance lock

* add PR link

* changes after review

* update docs

* changes after review

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-23 21:31:56 +11:00
github-actions[bot] a59f8b2cf3 docs: sync translations (#2893)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-10-23 20:38:03 +11:00
stffabi 30d17a760d [assetserver] Inject runtime/IPC into all index html files (#2203)
It will also be injected into all html files returned when requesting a folder path.
2023-10-23 20:35:18 +11:00
Andrey Pshenkin 6c46f6b41c Implement file association Open a file from Finder/Explorer (#2918)
* implement MacOS openFile/openFiles events

* wip: windows file association

* fix macro import

* add file icon copy

* try copy icon

* keep only required part of scripts

* update config schema

* fix json

* set fileAssociation for mac via config

* proper iconName handling

* add fileAssociation icon generator

* fix file association icons bundle

* don't break compatibility

* remove mimeType as not supported linux for now

* add documentation

* adjust config schema

* restore formatting

* remove unused option in file association

* get rid of openFiles mac os. change configuration structure

* remove unused channel

* fix documentation

* fix typo

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-22 06:44:38 +11:00
Yuki Shindo 42708e7f40 Update README.ja.md (#2764)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-21 20:50:39 +11:00
多啦b梦 63c9baa466 Add tips to solve the problem that macos cannot be compiled. (#2925)
* Add tips to solve the problem that macos cannot be compiled.

* Add tips to solve the problem that macos cannot be compiled.

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-21 20:29:29 +11:00
Lea Anthony ee4ce1d3ef Add mac compile error troubleshooting tip 2023-10-21 20:24:56 +11:00
TuffenDuffen a9fb0713a1 Update zypper.go (#2941)
* Update zypper.go

* Update changelog.mdx
2023-10-21 16:50:02 +11:00
Mike b42a18be6b feat: add golangci workflow with some linters (#2957)
This implements the golangci-lint workflow to new PRs.
It includes a limited number of enabled linters including:
- errcheck
- errname
- gofmt
- gofumpt
- gosimple
- misspell

Signed-off-by: mikeee <hey@mike.ee>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-21 16:47:02 +11:00
dependabot[bot] 3e938a10aa Bump undici from 5.21.0 to 5.26.3 in /scripts/sponsors (#2987)
Bumps [undici](https://github.com/nodejs/undici) from 5.21.0 to 5.26.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.21.0...v5.26.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-21 16:43:21 +11:00
dependabot[bot] b9fc72bbc8 Bump @babel/traverse from 7.21.4 to 7.23.2 in /website (#2992)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.4 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-21 16:33:39 +11:00
Carl Seleborg b5406cb13e Add missing runtime.UnlockOSThread() (#2994)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-21 16:30:48 +11:00
Lea Anthony d51268b8d0 Add basic hardware detection to wails doctor 2023-10-15 20:15:19 +11:00
Light 4b376bcf0d Add new htmx/templ template (#2984)
* Add new htmx/templ template

* update template name

* Add new template changelog item
2023-10-14 17:10:33 +11:00
dependabot[bot] 8efa4698cf Bump golang.org/x/net from 0.10.0 to 0.17.0 in /v2/examples/customlayout (#2980)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.10.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.10.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-14 11:43:38 +11:00
dependabot[bot] 45c6f73132 Bump golang.org/x/net in /v2/internal/staticanalysis/test/standard (#2981)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.7.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.7.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-14 11:43:16 +11:00
dependabot[bot] d4500e89e2 Bump golang.org/x/net from 0.10.0 to 0.17.0 in /v2 (#2979)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.10.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.10.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-14 11:43:03 +11:00
github-actions[bot] 7637833898 chore: update sponsors.svg (#2974)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-10-14 08:34:15 +11:00
资深菜鸟 a774459cd7 Update templates.mdx (#2976)
Add a template for Wails with Vite + Vue + TypeScript + NavieUI + Pinia.
2023-10-12 23:20:11 +11:00
github-actions[bot] 90c9186dc6 chore: update sponsors.svg (#2967)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-10-09 19:15:14 +11:00
Sean 79db5a4657 docs: troubleshooting tips for cross-account admin perms and "Microsoft Edge can't read or write to its data directory" error (#2931)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-08 20:45:13 +11:00
dependabot[bot] 4257decf30 Bump postcss from 8.4.18 to 8.4.31 in /v2/internal/frontend/runtime (#2962)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.18 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.18...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 20:43:09 +11:00
dependabot[bot] 1f4b578bce Bump postcss from 8.4.21 to 8.4.31 in /website (#2963)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.21 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.21...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 20:42:57 +11:00
Nenba Jonathan d0b0b5d594 Add French README page (#2943)
* add french readme to the projet

* add french link to the other readme

* fix some typo in the table of contents

* fix markdown auto correct

* added change in  changelog.mdx

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-10-07 08:57:03 +11:00
github-actions[bot] c0d2c0447c chore: update sponsors.svg (#2961)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-10-04 22:30:09 +11:00
Fadi Khadra f6c82dcaba [v2 mac] add fullscreen option to preference (#2953)
* [v2 mac] add fullscreen option to preference

* update changelog

* replace space by tabs
2023-10-02 07:05:25 +11:00
Lea Anthony 1c9765096d Add webview2 error message to troubleshooting 2023-10-01 23:45:30 +11:00
ALMAS 18ee469c47 [v2/Mac] Change Window Level (#2944)
* Change Window Level in Mac
2023-09-30 20:59:50 +10:00
stffabi e31ad83472 [docs] Merge changed section (#2940) 2023-09-26 19:12:57 +10:00
Mohamed Gharib 3f9067c815 [v2] Devtools tag doesn't enable default context-menu (#2923)
* Devtools tag doesn't enable default context-menu

* Update changelog
2023-09-26 07:43:18 +10:00
David Haukeness ab0b0f8a7f filter the base directory from ignoreDirs (#2869)
* filter the base directory from ignoreDirs

* added PR 2869

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-09-25 19:50:17 +10:00
github-actions[bot] 6d1489bf8e chore: update sponsors.svg (#2938)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-09-25 19:25:51 +10:00
Fadi Khadra 05eddc65b1 [v2 mac] Allow to specify webview preferences (#2937)
* [mac] allow to specify webview preferences
2023-09-25 08:15:55 +10:00
FarDawn 787ca80770 Add minimal React template (#2935) 2023-09-23 19:06:31 +10:00
github-actions[bot] d228b2ad37 chore: update sponsors.svg (#2930)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-09-21 19:36:33 +10:00
stffabi e9519269ca [v2] Bump go-webview2 to 1.0.7 (#2929) 2023-09-21 06:43:28 +10:00
Mohamed Gharib 5a7b868e80 [Github] Exclude /website from language stats (#2927) 2023-09-21 05:48:19 +10:00
stffabi d370f72ede [v2, windows] Support async request processing on AssetServer (#2926) 2023-09-20 19:28:18 +02:00
Lea Anthony 3369327ad2 [v2] Support Enabling/Disabling swipe gestures (#2878)
* [v2] Support Enabling/Disabling swipe gestures

* [v2] Update change log

* [v2] Remove old call to PutIsSwipeNavigationEnabled

* Use latest webview2

* Update go-webview2 mod version
2023-09-20 08:23:38 +10:00
Denis Dvornikov eca6afc18c Describe a guide to build an app for all platforms in github actions (#2879)
* Describe a guide to build an app for all platforms in github actions

* Update changelog, remove tabs from an added guide

---------

Co-authored-by: Denis <denis@Deniss-Mac-mini.fritz.box>
2023-09-20 08:12:57 +10:00
Mohamed Gharib 34c725231c [v2] Refactor devtools (better naming to remove confusion) (#2921) 2023-09-19 20:56:49 +10:00
github-actions[bot] db519de1cd chore: update sponsors.svg (#2922)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-09-19 18:50:35 +10:00
Lea Anthony 6aa6762f12 Devtools hotkey (#2915)
* Add Ctrl/Cmd+Shift+F12 Hotkey to open devtools when `-devtools` flag used.
2023-09-19 05:56:14 +10:00
Lea Anthony 64e44b1b51 [docs] Add wrong webview2 architecture section in troubleshooting guide 2023-09-18 20:15:54 +10:00
Lea Anthony 3116c1a622 Update favicon.ico 2023-09-15 20:47:14 +10:00
github-actions[bot] c26f3ad7d1 chore: update sponsors.svg (#2909)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-09-15 16:35:00 +10:00
github-actions[bot] 40f645a864 chore: update sponsors.svg (#2903)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-09-14 08:33:15 +10:00
github-actions[bot] a419721dcd docs: sync translations (#2699)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-09-08 23:25:21 +10:00
Light e731e2591a Fix typo on https://wails.io/docs/reference/options#application-options (#2887)
* Update options.mdx

* Update changelog.mdx
2023-09-08 23:23:33 +10:00
Duoc Nguyen 59b25edb5c docs: make the install command easier to copy (#2891) 2023-09-08 13:56:40 +10:00
Zámbó, Levente 647bc87600 [v2, Linux] fix menu background color (#2873)
* fix menu background color

* remove commented line

* handle transparent window and background color

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-09-07 21:25:02 +10:00
dependabot[bot] ebf56f6585 Bump semver from 5.7.1 to 5.7.2 in /website (#2808)
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-07 21:22:43 +10:00
Lea Anthony 1644ee152e v2.6.0 2023-09-06 19:45:08 +10:00
David Haukeness 069fe18b9d Move watcher init to doWatcherLoop and implement -reloaddirs (#2871)
* remove random print statement

* move watcher into loop and implement reloaddirs

* Fixed -reloaddirs for issue #2829

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-09-06 19:33:22 +10:00
Lea Anthony acf8dea170 [chore] Big tidy up. Fix bullet point output. 2023-09-06 19:27:29 +10:00
github-actions[bot] 7a87b0476e chore: update sponsors.svg (#2885)
Co-authored-by: leaanthony <leaanthony@users.noreply.github.com>
2023-09-06 19:16:31 +10:00
Andreas Christou 886bcc7b47 Add print functionality to v2 (#2822)
* Add print functionality to v2

* Update changelog

* Update runtime docs

---------

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2023-09-06 07:55:36 +10:00
2339 changed files with 101816 additions and 78430 deletions
-119
View File
@@ -1,119 +0,0 @@
name: Build + Test v3 alpha
on:
push:
branches: [v3-alpha]
workflow_dispatch:
jobs:
test_go:
name: Run Go Tests
if: github.repository == 'wailsapp/wails'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
go-version: [1.21]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install linux dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go-version }}
- name: Run tests (mac)
if: matrix.os == 'macos-latest'
env:
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
working-directory: ./v3
run: go test -v ./...
- name: Run tests (!mac)
if: matrix.os != 'macos-latest'
working-directory: ./v3
run: go test -v ./...
test_js:
name: Run JS Tests
if: github.repository == 'wailsapp/wails'
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
working-directory: v2/internal/frontend/runtime
- name: Run tests
run: npm test
working-directory: v2/internal/frontend/runtime
test_templates:
name: Test Templates
needs: test_go
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
template:
[
svelte,
svelte-ts,
vue,
vue-ts,
react,
react-ts,
preact,
preact-ts,
lit,
lit-ts,
vanilla,
vanilla-ts,
plain,
]
go-version: [1.21]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go-version }}
- name: Build Wails3 CLI
run: |
cd ./v3/cmd/wails3
go install
wails3 -help
- name: Install linux dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config
- name: Generate template '${{ matrix.template }}'
run: |
go install github.com/go-task/task/v3/cmd/task@latest
mkdir -p ./test-${{ matrix.template }}
cd ./test-${{ matrix.template }}
wails3 init -n ${{ matrix.template }} -t ${{ matrix.template }} -ci
cd ${{ matrix.template }}
wails3 build
+13 -11
View File
@@ -2,7 +2,7 @@ name: Build + Test v2
on:
push:
branches: [release/*, master]
branches: [release/*, master, bugfix/*]
workflow_dispatch:
jobs:
@@ -12,31 +12,32 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
go-version: [1.18, 1.19]
os: [ubuntu-latest, windows-latest, macos-latest, macos-11]
go-version: ['1.20']
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install linux dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config
- name: Setup Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go-version }}
cache-dependency-path: ./v2/go.sum
- name: Run tests (mac)
if: matrix.os == 'macos-latest'
if: matrix.os == 'macos-latest' || matrix.os == 'macos-11'
env:
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
working-directory: ./v2
run: go test -v ./...
- name: Run tests (!mac)
if: matrix.os != 'macos-latest'
if: matrix.os != 'macos-latest' && matrix.os != 'macos-11'
working-directory: ./v2
run: go test -v ./...
@@ -50,7 +51,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
@@ -89,15 +90,16 @@ jobs:
vanilla-ts,
plain,
]
go-version: [1.18, 1.19]
go-version: ['1.20']
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go-version }}
cache-dependency-path: ./v2/go.sum
- name: Build Wails CLI
run: |
+24 -1
View File
@@ -26,6 +26,29 @@ jobs:
run: |
echo "::warning::Feature branch does not contain any changes to the website."
# lint_go:
# name: Run Go Linters
# runs-on: ubuntu-latest
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
#
# - name: Setup Go
# uses: actions/setup-go@v4
# with:
# go-version: "1.21"
#
# - name: Update go modules
# working-directory: ./v2
# run: go mod tidy
#
# - name: Run Linter
# uses: golangci/golangci-lint-action@v3
# with:
# version: v1.54
# working-directory: ./v2
# args: --timeout=10m0s --config ./.golangci.yml
test_go:
name: Run Go Tests
runs-on: ${{ matrix.os }}
@@ -33,7 +56,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
go-version: [1.18, 1.19]
go-version: [1.19]
steps:
- name: Checkout code
+24
View File
@@ -0,0 +1,24 @@
on:
workflow_dispatch: {}
pull_request: {}
push:
branches:
- main
- master
paths:
- .github/workflows/semgrep.yml
schedule:
# random HH:MM to avoid a load spike on GitHub Actions at 00:00
- cron: 14 16 * * *
name: Semgrep
jobs:
semgrep:
name: semgrep/ci
runs-on: ubuntu-20.04
env:
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
container:
image: returntocorp/semgrep
steps:
- uses: actions/checkout@v3
- run: semgrep ci
-28
View File
@@ -1,28 +0,0 @@
name: v3 docs
on:
push:
branches:
- v3-alpha
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./mkdocs-website
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v3
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: pip install -r requirements.insiders.txt
- run: pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
- run: mkdocs gh-deploy --force
+1 -1
View File
@@ -42,7 +42,7 @@
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
[Русский](README.ru.md)
[Русский](README.ru.md) · [Francais](README.fr.md)
</samp>
</strong>
+143
View File
@@ -0,0 +1,143 @@
<p align="center" style="text-align: center">
<img src="./assets/images/logo-universal.png" width="55%"><br/>
</p>
<p align="center">
Créer des applications de bureau avec Go et les technologies Web.
<br/>
<br/>
<a href="https://github.com/wailsapp/wails/blob/master/LICENSE">
<img alt="GitHub" src="https://img.shields.io/github/license/wailsapp/wails"/>
</a>
<a href="https://goreportcard.com/report/github.com/wailsapp/wails">
<img src="https://goreportcard.com/badge/github.com/wailsapp/wails" />
</a>
<a href="https://pkg.go.dev/github.com/wailsapp/wails">
<img src="https://pkg.go.dev/badge/github.com/wailsapp/wails.svg" alt="Go Reference"/>
</a>
<a href="https://github.com/wailsapp/wails/issues">
<img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat" alt="CodeFactor" />
</a>
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_shield" alt="FOSSA Status">
<img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fwailsapp%2Fwails.svg?type=shield" />
</a>
<a href="https://github.com/avelino/awesome-go" rel="nofollow">
<img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome" />
</a>
<a href="https://discord.gg/BrRSWTaxVK">
<img alt="Discord" src="https://dcbadge.vercel.app/api/server/BrRSWTaxVK?style=flat"/>
</a>
<br/>
<a href="https://github.com/wailsapp/wails/actions/workflows/build-and-test.yml" rel="nofollow">
<img src="https://img.shields.io/github/actions/workflow/status/wailsapp/wails/build-and-test.yml?branch=master&logo=Github" alt="Build" />
</a>
<a href="https://github.com/wailsapp/wails/tags" rel="nofollow">
<img alt="GitHub tag (latest SemVer pre-release)" src="https://img.shields.io/github/v/tag/wailsapp/wails?include_prereleases&label=version"/>
</a>
</p>
<div align="center">
<strong>
<samp>
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
[Русский](README.ru.md) · [Francais](README.fr.md)
</samp>
</strong>
</div>
## Sommaire
- [Sommaire](#sommaire)
- [Introduction](#introduction)
- [Fonctionnalités](#fonctionnalités)
- [Feuille de route](#feuille-de-route)
- [Démarrage](#démarrage)
- [Les sponsors](#les-sponsors)
- [Foire aux questions](#foire-aux-questions)
- [Les étoiles au fil du temps](#les-étoiles-au-fil-du-temps)
- [Les contributeurs](#les-contributeurs)
- [License](#license)
- [Inspiration](#inspiration)
## Introduction
La méthode traditionnelle pour fournir des interfaces web aux programmes Go consiste à utiliser un serveur web intégré. Wails propose une approche différente : il offre la possibilité d'intégrer à la fois le code Go et une interface web dans un seul binaire. Des outils sont fournis pour vous faciliter la tâche en gérant la création, la compilation et le regroupement des projets. Il ne vous reste plus qu'à faire preuve de créativité!
## Fonctionnalités
- Utiliser Go pour le backend
- Utilisez n'importe quelle technologie frontend avec laquelle vous êtes déjà familier pour construire votre interface utilisateur.
- Créez rapidement des interfaces riches pour vos programmes Go à l'aide de modèles prédéfinis.
- Appeler facilement des méthodes Go à partir de Javascript
- Définitions Typescript auto-générées pour vos structures et méthodes Go
- Dialogues et menus natifs
- Prise en charge native des modes sombre et clair
- Prise en charge des effets modernes de translucidité et de "frosted window".
- Système d'événements unifié entre Go et Javascript
- Outil puissant pour générer et construire rapidement vos projets
- Multiplateforme
- Utilise des moteurs de rendu natifs - _pas de navigateur intégré_ !
### Feuille de route
La feuille de route du projet peut être consultée [ici](https://github.com/wailsapp/wails/discussions/1484). Veuillez consulter avant d'ouvrir une demande d'amélioration.
## Démarrage
Les instructions d'installation se trouvent sur le site [site officiel](https://wails.io/docs/gettingstarted/installation).
## Les sponsors
Ce projet est soutenu par ces personnes aimables et entreprises:
<img src="website/static/img/sponsors.svg" style="width:100%;max-width:800px;"/>
<p align="center">
<img src="https://wails.io/img/sponsor/jetbrains-grayscale.webp" style="width: 100px"/>
</p>
## Foire aux questions
- S'agit-il d'une alternative à Electron ?
Cela dépend de vos besoins. Il est conçu pour permettre aux programmeurs Go de créer facilement des applications de bureau légères ou d'ajouter une interface à leurs applications existantes. Wails offre des éléments natifs tels que des menus et des boîtes de dialogue, il peut donc être considéré comme une alternative légère à electron.
- À qui s'adresse ce projet ?
Les programmeurs Go qui souhaitent intégrer une interface HTML/JS/CSS à leurs applications, sans avoir à créer un serveur et à ouvrir un navigateur pour l'afficher.
- Pourquoi ce nom ??
Lorsque j'ai vu WebView, je me suis dit : "Ce que je veux vraiment, c'est un outil pour construire une application WebView, un peu comme Rails l'est pour Ruby". Au départ, il s'agissait donc d'un jeu de mots (Webview on Rails). Il se trouve que c'est aussi un homophone du nom anglais du [Pays](https://en.wikipedia.org/wiki/Wales) d'où je viens. Il s'est donc imposé.
## Les étoiles au fil du temps
[![Graphique de l'histoire des étoiles](https://api.star-history.com/svg?repos=wailsapp/wails&type=Date)](https://star-history.com/#wailsapp/wails&Date)
## Les contributeurs
La liste des contributeurs devient trop importante pour le readme ! Toutes les personnes extraordinaires qui ont contribué à ce projet ont leur propre page [ici](https://wails.io/credits#contributors).
## License
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fwailsapp%2Fwails.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
## Inspiration
Ce projet a été principalement codé sur les albums suivants :
- [Manic Street Preachers - Resistance Is Futile](https://open.spotify.com/album/1R2rsEUqXjIvAbzM0yHrxA)
- [Manic Street Preachers - This Is My Truth, Tell Me Yours](https://open.spotify.com/album/4VzCL9kjhgGQeKCiojK1YN)
- [The Midnight - Endless Summer](https://open.spotify.com/album/4Krg8zvprquh7TVn9OxZn8)
- [Gary Newman - Savage (Songs from a Broken World)](https://open.spotify.com/album/3kMfsD07Q32HRWKRrpcexr)
- [Steve Vai - Passion & Warfare](https://open.spotify.com/album/0oL0OhrE2rYVns4IGj8h2m)
- [Ben Howard - Every Kingdom](https://open.spotify.com/album/1nJsbWm3Yy2DW1KIc1OKle)
- [Ben Howard - Noonday Dream](https://open.spotify.com/album/6astw05cTiXEc2OvyByaPs)
- [Adwaith - Melyn](https://open.spotify.com/album/2vBE40Rp60tl7rNqIZjaXM)
- [Gwidaith Hen Fran - Cedors Hen Wrach](https://open.spotify.com/album/3v2hrfNGINPLuDP0YDTOjm)
- [Metallica - Metallica](https://open.spotify.com/album/2Kh43m04B1UkVcpcRa1Zug)
- [Bloc Party - Silent Alarm](https://open.spotify.com/album/6SsIdN05HQg2GwYLfXuzLB)
- [Maxthor - Another World](https://open.spotify.com/album/3tklE2Fgw1hCIUstIwPBJF)
- [Alun Tan Lan - Y Distawrwydd](https://open.spotify.com/album/0c32OywcLpdJCWWMC6vB8v)
+19 -48
View File
@@ -44,7 +44,7 @@
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
[Русский](README.ru.md)
[Русский](README.ru.md) · [Francais](README.fr.md)
</samp>
</strong>
@@ -54,17 +54,16 @@
- [目次](#目次)
- [はじめに](#はじめに)
- [公式サイト](#公式サイト)
- [ロードマップ](#ロードマップ)
- [特徴](#特徴)
- [スポンサー](#スポンサー)
- [ロードマップ](#ロードマップ)
- [始め方](#始め方)
- [スポンサー](#スポンサー)
- [FAQ](#faq)
- [スター数の推移](#スター数の推移)
- [コントリビューター](#コントリビューター)
- [特記事項](#特記事項)
- [スペシャルサンクス](#スペシャルサンクス)
- [ライセンス](#ライセンス)
- [インスピレーション](#インスピレーション)
## はじめに
@@ -72,44 +71,35 @@ Go プログラムにウェブインタフェースを提供する従来の方
Wails では Go のコードとウェブフロントエンドを単一のバイナリにまとめる機能を提供します。
また、プロジェクトの作成、コンパイル、ビルドを行うためのツールが提供されています。あなたがすべきことは創造性を発揮することです!
### 公式サイト
Version 2:
Wails v2 が 3 つのプラットフォームでベータ版としてリリースされました。興味のある方は[新しいウェブサイト](https://wails.io)をご覧ください。
レガシー版 v1:
レガシー版 v1 のドキュメントは[https://wails.app](https://wails.app)で見ることができます。
### ロードマップ
プロジェクトのロードマップは[こちら](https://github.com/wailsapp/wails/discussions/1484)になります。
機能拡張のリクエストを出す前にご覧ください。
## 特徴
- バックエンドには Go を利用しています
- 使い慣れたフロントエンド技術を利用して UI を構築できます
- あらかじめ用意されたテンプレートを利用することで、リッチなフロントエンドを備えた Go プログラムを作成できます
- あらかじめ用意されたテンプレートを利用することで、リッチなフロントエンドを備えた Go プログラムを素早く作成できます
- JavaScript から Go のメソッドを簡単に呼び出すことができます
- あなたの書いた Go の構造体やメソットに応じた TypeScript の定義が自動生成されます
- ネイティブのダイアログとメニューが利用できます
- ネイティブなダーク/ライトモードをサポートします
- モダンな半透明や「frosted window」エフェクトをサポートしています
- Go と JavaScript 間で統一されたイベント・システムを備えています
- プロジェクトを素早く生成して構築する強力な cli ツールを用意しています
- マルチプラットフォームに対応しています
- ネイティブなレンダリングエンジンを使用しています - _つまりブラウザを埋め込んでいるわけではありません!_
## スポンサー
### ロードマップ
このプロジェクトは、以下の方々・企業によって支えられています。
<img src="website/static/img/sponsors.svg" style="width:100%;max-width:800px;"/>
プロジェクトのロードマップは[こちら](https://github.com/wailsapp/wails/discussions/1484)になります。
機能拡張のリクエストを出す前にご覧ください。
## 始め方
インストール方法は[公式サイト](https://wails.io/docs/gettingstarted/installation)に掲載されています。
## スポンサー
このプロジェクトは、以下の方々・企業によって支えられています。
<img src="website/static/img/sponsors.svg" style="width:100%;max-width:800px;"/>
## FAQ
- Electron の代替品になりますか?
@@ -130,20 +120,18 @@ Wails v2 が 3 つのプラットフォームでベータ版としてリリー
## スター数の推移
[![スター数の推移](https://starchart.cc/wailsapp/wails.svg)](https://starchart.cc/wailsapp/wails)
[![Star History Chart](https://api.star-history.com/svg?repos=wailsapp/wails&type=Date)](https://star-history.com/#wailsapp/wails&Date)
## コントリビューター
貢献してくれた方のリストが大きくなりすぎて、readme に入りきらなくなりました!
このプロジェクトに貢献してくれた素晴らしい方々のページは[こちら](https://wails.io/credits#contributors)です。
## 特記事項
## ライセンス
このプロジェクトは以下の方々の協力がなければ、実現しなかったと思います。
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fwailsapp%2Fwails.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
- [Dustin Krysak](https://wiki.ubuntu.com/bashfulrobot) - 彼のサポートとフィードバックはとても大きいものでした。
- [Serge Zaitsev](https://github.com/zserge) - Wails のウィンドウで使用している[Webview](https://github.com/zserge/webview)の作者です。
- [Byron](https://github.com/bh90210) - 時には Byron が一人でこのプロジェクトを存続させてくれたこともありました。彼の素晴らしいインプットがなければ v1 に到達することはなかったでしょう。
## インスピレーション
プロジェクトを進める際に、以下のアルバムたちも支えてくれています。
@@ -161,20 +149,3 @@ Wails v2 が 3 つのプラットフォームでベータ版としてリリー
- [Maxthor - Another World](https://open.spotify.com/album/3tklE2Fgw1hCIUstIwPBJF)
- [Alun Tan Lan - Y Distawrwydd](https://open.spotify.com/album/0c32OywcLpdJCWWMC6vB8v)
## スペシャルサンクス
<p align="center" style="text-align: center">
<a href="https://pace.dev"><img src="/assets/images/pace.jpeg"/></a><br/>
このプロジェクトを後援し、WailsをApple Siliconに移植する取り組みを支援してくれた <a href="https://pace.dev">Pace</a> に <i>とても</i>感謝しています!<br/><br/>
パワフルで素早く簡単に使えるプロジェクト管理ツールをお探しなら、ぜひチェックしてみてください!<br/><br/>
</p>
<p align="center" style="text-align: center">
ライセンスを提供していただいたJetBrains社に感謝します!<br/><br/>
ロゴをクリックして、感謝の気持ちを伝えてください!<br/><br/>
<a href="https://www.jetbrains.com?from=Wails"><img src="/assets/images/jetbrains-grayscale.png" width="30%"></a>
</p>
## ライセンス
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fwailsapp%2Fwails.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
+1 -1
View File
@@ -44,7 +44,7 @@
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
[Русский](README.ru.md)
[Русский](README.ru.md) · [Francais](README.fr.md)
</samp>
</strong>
+8 -2
View File
@@ -42,7 +42,7 @@
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
[Русский](README.ru.md)
[Русский](README.ru.md) · [Francais](README.fr.md)
</samp>
</strong>
@@ -122,7 +122,13 @@ This project is supported by these kind people / companies:
## Stargazers over time
[![Star History Chart](https://api.star-history.com/svg?repos=wailsapp/wails&type=Date)](https://star-history.com/#wailsapp/wails&Date)
<a href="https://star-history.com/#wailsapp/wails&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=wailsapp/wails&type=Date" />
</picture>
</a>
## Contributors
+1 -1
View File
@@ -41,7 +41,7 @@
<samp>
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md)
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) · [Francais](README.fr.md)
</samp>
</strong>
+2 -2
View File
@@ -41,7 +41,7 @@
<samp>
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Русский](README.ru.md)
[한국어](README.ko.md) · [Español](README.es.md) · [Русский](README.ru.md) · [Francais](README.fr.md)
</samp>
</strong>
@@ -52,7 +52,7 @@
- [Содержание](#содержание)
- [Вступление](#вступление)
- [Особенности](#особенности)
- [Roadmap](#roadmap)
- [Roadmap](#roadmap)
- [Быстрый старт](#быстрый-старт)
- [Спонсоры](#спонсоры)
- [FAQ](#faq)
+1 -1
View File
@@ -44,7 +44,7 @@
[English](README.md) · [简体中文](README.zh-Hans.md) · [日本語](README.ja.md) ·
[한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt-br.md) ·
[Русский](README.ru.md)
[Русский](README.ru.md) · [Francais](README.fr.md)
</samp>
</strong>
-5
View File
@@ -16,11 +16,6 @@ includes:
dir: v3
optional: true
docs:
taskfile: mkdocs-website
dir: mkdocs-website
optional: true
tasks:
contributors:check:
cmds:
-41
View File
@@ -1,41 +0,0 @@
# v3 Docs
This is the documentation for Wails v3. It is currently a work in progress.
## Recommended Setup Steps
Install the wails3 CLI if you haven't already:
```shell
go install github.com/wailsapp/wails/v3/cmd/wails3@latest
```
The documentation uses mkdocs, so you will need to install [Python](https://www.python.org/). Once installed,
you can setup the documentation by running the following command:
```bash
wails3 task docs:setup
```
This will install the required dependencies for you.
If you have installed the wails3 CLI, you can run the following command to build the documentation and serve it locally:
```bash
wails3 task docs:serve
```
### Manual Setup
To install manually, you will need to do the following:
- Install [Python](https://www.python.org/)
- Run `pip install -r requirements.txt` to install the required dependencies
- Run `mkdocs serve` to serve the documentation locally
- Run `mkdocs build` to build the documentation
## Contributing
If you would like to contribute to the documentation, please feel free to open a PR!
-53
View File
@@ -1,53 +0,0 @@
# https://taskfile.dev
version: '3'
tasks:
setup:
summary: Setup the project
preconditions:
- sh: python{{exeExt}} --version
msg: "Looks like Python isn't installed. Python is required to build the documentation: https://www.python.org/downloads/"
cmds:
- python -m pip install -r requirements.txt --user
setup:insiders:
summary: Setup the project (insiders)
preconditions:
- sh: python{{exeExt}} --version
msg: "Looks like Python isn't installed. Python is required to build the documentation: https://www.python.org/downloads/"
cmds:
- python -m pip install -r requirements.insiders.txt --user
upgrade:insiders:
summary: Upgrade the project (insiders)
preconditions:
- sh: python{{exeExt}} --version
msg: "Looks like Python isn't installed. Python is required to build the documentation: https://www.python.org/downloads/"
cmds:
- python -m pip install -r requirements.insiders.txt --upgrade --user
build:
summary: Builds the documentation
preconditions:
- sh: mkdocs --version
msg: "Looks like mkdocs isn't installed. Run `wails3 task setup` or `task setup` in the documentation directory to install it."
cmds:
- mkdocs build
serve:
summary: Builds the documentation and serves it locally
preconditions:
- sh: mkdocs --version
msg: "Looks like mkdocs isn't installed. Run `wails3 task setup` or `task setup` in the documentation directory to install it."
cmds:
- mkdocs serve
serve:insiders:
summary: Builds the documentation and serves it locally
preconditions:
- sh: mkdocs --version
msg: "Looks like mkdocs isn't installed. Run `wails3 task setup` or `task setup` in the documentation directory to install it."
cmds:
- mkdocs serve --config-file mkdocs.insiders.yml
-36
View File
@@ -1,36 +0,0 @@
# Changelog
<!--
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- `Added` for new features.
- `Changed` for changes in existing functionality.
- `Deprecated` for soon-to-be removed features.
- `Removed` for now removed features.
- `Fixed` for any bug fixes.
- `Security` in case of vulnerabilities.
-->
## [Unreleased]
### Added
* [darwin] add getPrimaryScreen/getScreens to impl by @tmclane in https://github.com/wailsapp/wails/pull/2618
### Fixed
- Fixed background colours of examples on Windows by [mmgvh](https://github.com/mmghv) in [#2750](https://github.com/wailsapp/wails/pull/2750).
- Fixed default context menus by [mmgvh](https://github.com/mmghv) in [#2753](https://github.com/wailsapp/wails/pull/2753).
### Changed
### Removed
### Deprecated
### Security
-359
View File
@@ -1,359 +0,0 @@
# Changes for v3
!!! note
This is currently an unsorted brain dump of changes. It will be organised into a more readable format soon.
## Options
The application options have been revised since v2.
## Events
In v3, there are 3 types of events:
- Application Events
- Window Events
- Custom Events
### Application Events
Application events are events that are emitted by the application. These events include native events such as `ApplicationDidFinishLaunching` on macOS.
### Window Events
Window events are events that are emitted by a window. These events include native events such as `WindowDidBecomeMain` on macOS. Common events are also defined, so they work cross-platform, e.g. `WindowClosing`.
### Custom Events
Events that the user defines are called `WailsEvents`. This is to differentiate them from the `Event` object that is used to communicate with the browser. WailsEvents are now objects that encapsulate all the details of an event. This includes the event name, the data, and the source of the event.
The data associated with a WailsEvent is now a single value. If multiple values are required, then a struct can be used.
### Event callbacks and `Emit` function signature
The signatures events callbacks (as used by `On`, `Once` & `OnMultiple`) have changed. In v2, the callback function received optional data. In v3, the callback function receives a `WailsEvent` object that contains all data related to the event.
Similarly, the `Emit` function has changed. Instead of taking a name and optional data, it now takes a single `WailsEvent` object that it will emit.
### `Off` and `OffAll`
In v2, `Off` and `OffAll` calls would remove events in both JS and Go. Due to the multi-window nature of v3, this has been changed so that these methods only apply to the context they are called in. For example, if you call `Off` in a window, it will only remove events for that window. If you use `Off` in Go, it will only remove events for Go.
### Hooks
Event Hooks are a new feature in v3. They allow you to hook into the event system and perform actions when certain events are emitted. For example, you can hook into the `WindowClosing` event and perform some cleanup before the window closes.
Hooks can be registered at the application level or at the window level using `RegisterHook`. Application level are for application events. Window level hooks will only be called for the window they are registered with.
### Logging
Logging in v2 was confusing as both application logs and system (internal) logs were using the same logger. We have simplified this as follows:
- Internal logs are now handled using the standard Go `slog` logger. This is configured using the `logger` option in the application options. By default, this uses the [tint](https://github.com/lmittmann/tint) logger.
- Application logs can now be achieved through the new `log` plugin which utilises `slog` under the hood. This plugin provides a simple API for logging to the console. It is available in both Go and JS.
### Developer notes
When emitting an event in Go, it will dispatch the event to local Go listeners and also each window in the application.
When emitting an event in JS, it now sends the event to the application. This will be processed as if it was emitted in Go, however the sender ID will be that of the window.
## Window
The Window API has largely remained the same, however the methods are now on an instance of a window rather than the runtime.
Some notable differences are:
- Windows now have a Name that identifies them. This is used to identify the window when emitting events.
- Windows have even more methods on the that were previously unavailable, such as `AbsolutePosition` and `ToggleDevTools`.
- Windows can now accept files via native drag and drop. See the Drag and Drop section for more details.
## ClipBoard
The clipboard API has been simplified. There is now a single `Clipboard` object that can be used to read and write to the clipboard. The `Clipboard` object is available in both Go and JS. `SetText()` to set the text and `Text()` to get the text.
## Bindings
Bindings work in a similar way to v2, by providing a means to bind struct methods to the frontend.
These can be called in the frontend using the binding wrappers generated by the `wails3 generate bindings` command:
```javascript
// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
import {main} from './models';
window.go = window.go || {};
window.go.main = {
GreetService: {
/**
* GreetService.Greet
* Greet greets a person
* @param name {string}
* @returns {Promise<string>}
**/
Greet: function(name) { wails.CallByID(1411160069, ...Array.prototype.slice.call(arguments, 0)); },
/**
* GreetService.GreetPerson
* GreetPerson greets a person
* @param person {main.Person}
* @returns {Promise<string>}
**/
GreetPerson: function(person) { wails.CallByID(4021313248, ...Array.prototype.slice.call(arguments, 0)); },
},
};
```
Bound methods are obfuscated by default, and are identified using uint32 IDs, calculated using the [FNV hashing algorithm](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function). This is to prevent the method name from being exposed in production builds.
In debug mode, the method IDs are logged along with the calculated ID of the method to aid in debugging. If you wish to add an extra layer of obfuscation, you can use the `BindAliases` option. This allows you to specify a map of alias IDs to method IDs. When the frontend calls a method using an ID, the method ID will be looked up in the alias map first for a match. If it does not find it, it assumes it's a standard method ID and tries to find the method in the usual way.
Example:
```go
app := application.New(application.Options{
Bind: []any{
&GreetService{},
},
BindAliases: map[uint32]uint32{
1: 1411160069,
2: 4021313248,
},
Assets: application.AssetOptions{
FS: assets,
},
Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
})
```
We can now call using this alias in the frontend: `wails.Call(1, "world!")`.
### Insecure calls
If you don't mind your calls being available in plain text in your binary and have no intention of using [garble](https://github.com/burrowers/garble),
then you can use the insecure `wails.CallByName()` method. This method takes the fully qualified name of the method to call and the arguments to pass to it.
Example:
```go
wails.CallByName("main.GreetService.Greet", "world!")
```
!!! danger
This is only provided as a convenience method for development. It is not recommended to use this in production.
## Dialogs
Dialogs are now available in JavaScript!
### Windows
Dialog buttons in Windows are not configurable and are constant depending on the type of dialog. To trigger a callback when a button is pressed, create a button with the same name as the button you wish to have the callback attached to.
Example: Create a button with the label `Ok` and use `OnClick()` to set the callback method:
```go
dialog := app.QuestionDialog().
SetTitle("Update").
SetMessage("The cancel button is selected when pressing escape")
ok := dialog.AddButton("Ok")
ok.OnClick(func() {
// Do something
})
no := dialog.AddButton("Cancel")
dialog.SetDefaultButton(ok)
dialog.SetCancelButton(no)
dialog.Show()
```
## Drag and Drop
Native drag and drop can be enabled per-window. Simply set the `EnableDragAndDrop` window config option to `true` and the window will allow files to be dragged onto it. When this happens, the `events.FilesDropped` event will be emitted. The filenames can then be retrieved from the `WindowEvent.Context()` using the `DroppedFiles()` method. This returns a slice of strings containing the filenames.
## Context Menus
Context menus are contextual menus that are shown when the user right-clicks on an element. Creating a context menu is the same as creating a standard menu , by using `app.NewMenu()`. To make the context menu available to a window, call `window.RegisterContextMenu(name, menu)`. The name will be the id of the context menu and used by the frontend.
To indicate that an element has a context menu, add the `data-contextmenu` attribute to the element. The value of this attribute should be the name of a context menu previously registered with the window.
It is possible to register a context menu at the application level, making it available to all windows. This can be done using `app.RegisterContextMenu(name, menu)`. If a context menu cannot be found at the window level, the application context menus will be checked. A demo of this can be found in `v3/examples/contextmenus`.
## Wails Markup Language (WML)
The Wails Markup Language is a simple markup language that allows you to add functionality to standard HTML elements without the use of Javascript.
The following tags are currently supported:
### `data-wml-event`
This specifies that a Wails event will be emitted when the element is clicked. The value of the attribute should be the name of the event to emit.
Example:
```html
<button data-wml-event="myevent">Click Me</button>
```
Sometimes you need the user to confirm an action. This can be done by adding the `data-wml-confirm` attribute to the element. The value of this attribute will be the message to display to the user.
Example:
```html
<button data-wml-event="delete-all-items" data-wml-confirm="Are you sure?">Delete All Items</button>
```
### `data-wml-window`
Any `wails.window` method can be called by adding the `data-wml-window` attribute to an element. The value of the attribute should be the name of the method to call. The method name should be in the same case as the method.
```html
<button data-wml-window="Close">Close Window</button>
```
### `data-wml-trigger`
This attribute specifies which javascript event should trigger the action. The default is `click`.
```html
<button data-wml-event="hover-box" data-wml-trigger="mouseover">Hover over me!</button>
```
## Systray
Wails 3 comes with a built-in systray. This is a fully featured systray that has been designed to be as simple as possible to use.
It is possible to set the icon, tooltip and menu of the systray. It is possible to also "attach" a window to the systray. Doing this will provide the following functionality:
- Clicking the systray icon with toggle the window visibility
- Right-clicking the systray will open the menu, if there is one
On macOS, if there is no attached window, the systray will use the default method of displaying the menu (any button).
If there is an attached window but no menu, the systray will toggle the window regardless of the button pressed.
## Plugins
Plugins are a way to extend the functionality of your Wails application.
### Creating a plugin
Plugins are standard Go structure that adhere to the following interface:
```go
type Plugin interface {
Name() string
Init(*application.App) error
Shutdown()
CallableByJS() []string
InjectJS() string
}
```
The `Name()` method returns the name of the plugin. This is used for logging purposes.
The `Init(*application.App) error` method is called when the plugin is loaded. The `*application.App`
parameter is the application that the plugin is being loaded into. Any errors will prevent
the application from starting.
The `Shutdown()` method is called when the application is shutting down.
The `CallableByJS()` method returns a list of exported functions that can be called from
the frontend. These method names must exactly match the names of the methods exported
by the plugin.
The `InjectJS()` method returns JavaScript that should be injected into all windows as they are created. This is useful for adding custom JavaScript functions that complement the plugin.
### Tips
#### Enums
In Go, enums are often defined as a type and a set of constants. For example:
```go
type MyEnum int
const (
MyEnumOne MyEnum = iota
MyEnumTwo
MyEnumThree
)
```
Due to incompatibility between Go and JavaScript, custom types cannot be used in this way. The best strategy is to use a type alias for float64:
```go
type MyEnum = float64
const (
MyEnumOne MyEnum = iota
MyEnumTwo
MyEnumThree
)
```
In Javascript, you can then use the following:
```js
const MyEnum = {
MyEnumOne: 0,
MyEnumTwo: 1,
MyEnumThree: 2
}
```
- Why use `float64`? Can't we use `int`?
- Because JavaScript doesn't have a concept of `int`. Everything is a `number`, which translates to `float64` in Go. There are also restrictions on casting types in Go's reflection package, which means using `int` doesn't work.
### BackgroundColour
In v2, this was a pointer to an `RGBA` struct. In v3, this is an `RGBA` struct value.
### WindowIsTranslucent
This flag has been removed. Now there is a `BackgroundType` flag that can be used to set the type of background the window should have.
This flag can be set to any of the following values:
- `BackgroundTypeSolid` - The window will have a solid background
- `BackgroundTypeTransparent` - The window will have a transparent background
- `BackgroundTypeTranslucent` - The window will have a translucent background
On Windows, if the `BackgroundType` is set to `BackgroundTypeTranslucent`, the type of translucency can be set using the
`BackdropType` flag in the `WindowsWindow` options. This can be set to any of the following values:
- `Auto` - The window will use an effect determined by the system
- `None` - The window will have no background
- `Mica` - The window will use the Mica effect
- `Acrylic` - The window will use the acrylic effect
- `Tabbed` - The window will use the tabbed effect
## Windows Application Options
### WndProcInterceptor
If this is set, the WndProc will be intercepted and the function will be called. This allows you to handle Windows
messages directly. The function should have the following signature:
```go
func(hwnd uintptr, msg uint32, wParam, lParam uintptr) (returnValue uintptr, shouldReturn)
```
The `shouldReturn` value should be set to `true` if the returnValue should be returned by the main wndProc method.
If it is set to `false`, the return value will be ignored and the message will continue to be processed by the main
wndProc method.
## Hide Window on Close + OnBeforeClose
In v2, there was the `HideWindowOnClose` flag to hide the window when it closed. There was a logical overlap between
this flag and the `OnBeforeClose` callback. In v3, the `HideWindowOnClose` flag has been removed and the `OnBeforeClose`
callback has been renamed to `ShouldClose`. The `ShouldClose` callback is called when the user attempts to close a
window. If the callback returns `true`, the window will close. If it returns `false`, the window will not close.
This can be used to hide the window instead of closing it.
## Window Drag
In v2, the `--wails-drag` attribute was used to indicate that an element could be used to drag the window.
In v3, this has been replaced with `--webkit-app-region` to be more in line with the way other frameworks
handle this. The `--webkit-app-region` attribute can be set to any of the following values:
- `drag` - The element can be used to drag the window
- `no-drag` - The element cannot be used to drag the window
We would have ideally liked to use `app-region`, however this is not supported by the `getComputedStyle` call on
webkit on macOS.
@@ -1,174 +0,0 @@
# Introduction
!!! note
This guide is a work in progress.
Thanks for wanting to help out with development of Wails! This guide will help you get started.
## Getting Started
- Git clone this repository. Checkout the `v3-alpha` branch.
- Install the CLI: `cd v3/cmd/wails3 && go install`
- Optional: If you are wanting to use the build system to build frontend code, you will need to install [npm](https://nodejs.org/en/download).
## Building
For simple programs, you can use the standard `go build` command. It's also possible to use `go run`.
Wails also comes with a build system that can be used to build more complex projects. It utilises the awesome [Task](https://taskfile.dev) build system.
For more information, check out the task homepage or run `wails task --help`.
## Project layout
The project has the following structure:
```
v3
├── cmd/wails3 // CLI
├── examples // Examples of Wails apps
├── internal // Internal packages
| ├── runtime // The Wails JS runtime
| └── templates // The supported project templates
├── pkg
| ├── application // The core Wails library
| └── events // The event definitions
| └── mac // macOS specific code used by plugins
| └── w32 // Windows specific code
├── plugins // Supported plugins
├── tasks // General tasks
└── Taskfile.yaml // Development tasks configuration
```
## Development
### Adding window functionality
The preferred way to add window functionality is to add a new function to the `pkg/application/webview_window.go` file. This should implement all the functionality required for all platforms. Any platform specific code should be called via a `webviewWindowImpl` interface method. This interface is implemented by each of the target platforms to provide the platform specific functionality. In some cases, this may do nothing.
Once you've added the interface method, ensure each platform implements it. A good example of this is the `SetMinSize` method.
- Mac: `webview_window_darwin.go`
- Windows: `webview_window_windows.go`
- Linux: `webview_window_linux.go`
Most, if not all, of the platform specific code should be run on the main thread. To simplify this, there are a number of `invokeSync` methods defined in `application.go`.
### Updating the runtime
The runtime is located in `v3/internal/runtime`. When the runtime is updated, the following steps need to be taken:
```shell
wails3 task runtime:build
```
### Events
Events are defined in `v3/pkg/events`. When adding a new event, the following steps need to be taken:
- Add the event to the `events.txt` file
- Run `wails3 task events:generate`
There are a number of types of events: platform specific application and window events + common events. The common events are useful for cross-platform event handling, but you aren't limited to the "lowest common denominator". You can use the platform specific events if you need to.
When adding a common event, ensure that the platform specific events are mapped. An example of this is in `window_webview_darwin.go`:
```go
// Translate ShouldClose to common WindowClosing event
w.parent.On(events.Mac.WindowShouldClose, func(_ *WindowEventContext) {
w.parent.emit(events.Common.WindowClosing)
})
```
NOTE: We may try to automate this in the future by adding the mapping to the event definition.
### Plugins
Plugins are a way to extend the functionality of your Wails application.
#### Creating a plugin
Plugins are standard Go structure that adhere to the following interface:
```go
type Plugin interface {
Name() string
Init(*application.App) error
Shutdown()
CallableByJS() []string
InjectJS() string
}
```
The `Name()` method returns the name of the plugin. This is used for logging purposes.
The `Init(*application.App) error` method is called when the plugin is loaded. The `*application.App`
parameter is the application that the plugin is being loaded into. Any errors will prevent
the application from starting.
The `Shutdown()` method is called when the application is shutting down.
The `CallableByJS()` method returns a list of exported functions that can be called from
the frontend. These method names must exactly match the names of the methods exported
by the plugin.
The `InjectJS()` method returns JavaScript that should be injected into all windows as they are created. This is useful for adding custom JavaScript functions that complement the plugin.
## Misc Tasks
### Upgrading Taskfile
The Wails CLI uses the [Task](https://taskfile.dev) build system. It is imported as a library and used to run the tasks defined in `Taskfile.yaml`.
The main interfacing with Task happens in `v3/internal/commands/task.go`.
To check if there's an upgrade for Taskfile, run `wails3 task -version` and check against the Task website.
To upgrade the version of Taskfile used, run:
```shell
wails3 task taskfile:upgrade
```
If there are incompatibilities then they should appear in the `v3/internal/commands/task.go` file.
Usually the best way to fix incompatibilities is to clone the task repo at `https://github.com/go-task/task` and look at the git history to determine what has changed and why.
To check all changes have worked correctly, re-install the CLI and check the version again:
```shell
wails3 task cli:install
wails3 task -version
```
## Opening a PR
Make sure that all PRs have a ticket associated with them providing context to the change. If there is no ticket, please create one first.
Ensure that all PRs have updated the CHANGELOG.md file with the changes made. The CHANGELOG.md file is located in the `v3` directory.
## Misc Tasks
### Upgrading Taskfile
The Wails CLI uses the [Task](https://taskfile.dev) build system. It is imported as a library and used to run the tasks defined in `Taskfile.yaml`.
The main interfacing with Task happens in `v3/internal/commands/task.go`.
To check if there's an upgrade for Taskfile, run `wails3 task -version` and check against the Task website.
To upgrade the version of Taskfile used, run:
```shell
wails3 task taskfile:upgrade
```
If there are incompatibilities then they should appear in the `v3/internal/commands/task.go` file.
Usually the best way to fix incompatibilities is to clone the task repo at `https://github.com/go-task/task` and look at the git history to determine what has changed and why.
To check all changes have worked correctly, re-install the CLI and check the version again:
```shell
wails3 task cli:install
wails3 task -version
```
-413
View File
@@ -1,413 +0,0 @@
# Status
Status of features in v3.
!!! note
This list is a mixture of public and internal API support.<br/>
It is not complete and probably not up to date.
## Known Issues
- Linux is not yet up to feature parity with Windows/Mac
## Application
Application interface methods
| Method | Windows | Linux | Mac | Notes |
|---------------------------------------------------------------|---------|-------|-----|-------|
| run() error | Y | Y | Y | |
| destroy() | | Y | Y | |
| setApplicationMenu(menu *Menu) | Y | Y | Y | |
| name() string | | Y | Y | |
| getCurrentWindowID() uint | Y | Y | Y | |
| showAboutDialog(name string, description string, icon []byte) | | Y | Y | |
| setIcon(icon []byte) | - | Y | Y | |
| on(id uint) | | | Y | |
| dispatchOnMainThread(fn func()) | Y | Y | Y | |
| hide() | Y | Y | Y | |
| show() | Y | Y | Y | |
| getPrimaryScreen() (*Screen, error) | | Y | Y | |
| getScreens() ([]*Screen, error) | | Y | Y | |
## Webview Window
Webview Window Interface Methods
| Method | Windows | Linux | Mac | Notes |
|----------------------------------------------------|---------|-------|-----|------------------------------------------|
| center() | Y | Y | Y | |
| close() | y | Y | Y | |
| destroy() | | Y | Y | |
| execJS(js string) | y | Y | Y | |
| focus() | Y | Y | | |
| forceReload() | | Y | Y | |
| fullscreen() | Y | Y | Y | |
| getScreen() (*Screen, error) | y | Y | Y | |
| getZoom() float64 | | Y | Y | |
| height() int | Y | Y | Y | |
| hide() | Y | Y | Y | |
| isFullscreen() bool | Y | Y | Y | |
| isMaximised() bool | Y | Y | Y | |
| isMinimised() bool | Y | Y | Y | |
| maximise() | Y | Y | Y | |
| minimise() | Y | Y | Y | |
| nativeWindowHandle() (uintptr, error) | Y | Y | | |
| on(eventID uint) | y | | Y | |
| openContextMenu(menu *Menu, data *ContextMenuData) | y | | Y | |
| relativePosition() (int, int) | Y | Y | Y | |
| reload() | y | Y | Y | |
| run() | Y | Y | Y | |
| setAlwaysOnTop(alwaysOnTop bool) | Y | Y | Y | |
| setBackgroundColour(color RGBA) | Y | Y | Y | |
| setEnabled(bool) | | Y | Y | |
| setFrameless(bool) | | Y | Y | |
| setFullscreenButtonEnabled(enabled bool) | - | Y | Y | There is no fullscreen button in Windows |
| setHTML(html string) | Y | Y | Y | |
| setMaxSize(width, height int) | Y | Y | Y | |
| setMinSize(width, height int) | Y | Y | Y | |
| setRelativePosition(x int, y int) | Y | Y | Y | |
| setResizable(resizable bool) | Y | Y | Y | |
| setSize(width, height int) | Y | Y | Y | |
| setTitle(title string) | Y | Y | Y | |
| setURL(url string) | Y | Y | Y | |
| setZoom(zoom float64) | Y | Y | Y | |
| show() | Y | Y | Y | |
| size() (int, int) | Y | Y | Y | |
| toggleDevTools() | Y | Y | Y | |
| unfullscreen() | Y | Y | Y | |
| unmaximise() | Y | Y | Y | |
| unminimise() | Y | Y | Y | |
| width() int | Y | Y | Y | |
| zoom() | | Y | Y | |
| zoomIn() | Y | Y | Y | |
| zoomOut() | Y | Y | Y | |
| zoomReset() | Y | Y | Y | |
## Runtime
### Application
| Feature | Windows | Linux | Mac | Notes |
|---------|---------|-------|-----|-------|
| Quit | Y | Y | Y | |
| Hide | Y | | Y | |
| Show | Y | | Y | |
### Dialogs
| Feature | Windows | Linux | Mac | Notes |
|----------|---------|-------|-----|-------|
| Info | Y | Y | Y | |
| Warning | Y | Y | Y | |
| Error | Y | Y | Y | |
| Question | Y | Y | Y | |
| OpenFile | Y | | Y | |
| SaveFile | Y | | Y | |
### Clipboard
| Feature | Windows | Linux | Mac | Notes |
|---------|---------|-------|-----|-------|
| SetText | Y | | Y | |
| Text | Y | | Y | |
### ContextMenu
| Feature | Windows | Linux | Mac | Notes |
|------------------|---------|-------|-----|-------|
| OpenContextMenu | Y | | Y | |
| On By Default | | | | |
| Control via HTML | Y | | | |
The default context menu is enabled by default for all elements that are `contentEditable: true`, `<input>`
or `<textarea>` tags or have the `--default-contextmenu: true` style set.
The `--default-contextmenu: show` style will always show the context menu
The `--default-contextmenu: hide` style will always hide the context menu
Anything nested under a tag with `--default-contextmenu: hide` style will not show the context menu unless it is
explicitly set with `--default-contextmenu: show`.
### Screens
| Feature | Windows | Linux | Mac | Notes |
|------------|---------|-------|-----|-------|
| GetAll | Y | Y | Y | |
| GetPrimary | Y | Y | Y | |
| GetCurrent | Y | Y | Y | |
### System
| Feature | Windows | Linux | Mac | Notes |
|------------|---------|-------|-----|-------|
| IsDarkMode | | | Y | |
### Window
Y = Supported
U = Untested
- = Not available
| Feature | Windows | Linux | Mac | Notes |
|---------------------|---------|-------|-----|--------------------------------------------------------------------------------------|
| Center | Y | Y | Y | |
| Focus | Y | Y | | |
| FullScreen | Y | Y | Y | |
| GetZoom | Y | Y | Y | Get current view scale |
| Height | Y | Y | Y | |
| Hide | Y | Y | Y | |
| Maximise | Y | Y | Y | |
| Minimise | Y | Y | Y | |
| RelativePosition | Y | Y | Y | |
| Screen | Y | Y | Y | Get screen for window |
| SetAlwaysOnTop | Y | Y | Y | |
| SetBackgroundColour | Y | Y | Y | https://github.com/MicrosoftEdge/WebView2Feedback/issues/1621#issuecomment-938234294 |
| SetEnabled | Y | U | U | Set the window to be enabled/disabled |
| SetMaxSize | Y | Y | Y | |
| SetMinSize | Y | Y | Y | |
| SetRelativePosition | Y | Y | Y | |
| SetResizable | Y | Y | Y | |
| SetSize | Y | Y | Y | |
| SetTitle | Y | Y | Y | |
| SetZoom | Y | Y | Y | Set view scale |
| Show | Y | Y | Y | |
| Size | Y | Y | Y | |
| UnFullscreen | Y | Y | Y | |
| UnMaximise | Y | Y | Y | |
| UnMinimise | Y | Y | Y | |
| Width | Y | Y | Y | |
| ZoomIn | Y | Y | Y | Increase view scale |
| ZoomOut | Y | Y | Y | Decrease view scale |
| ZoomReset | Y | Y | Y | Reset view scale |
### Window Options
A 'Y' in the table below indicates that the option has been tested and is applied when the window is created.
An 'X' indicates that the option is not supported by the platform.
| Feature | Windows | Linux | Mac | Notes |
|---------------------------------|---------|-------|-----|--------------------------------------------|
| AlwaysOnTop | Y | | | |
| BackgroundColour | Y | Y | | |
| BackgroundType | | | | Acrylic seems to work but the others don't |
| CSS | Y | Y | | |
| DevToolsEnabled | Y | Y | Y | |
| DisableResize | Y | Y | | |
| EnableDragAndDrop | | Y | | |
| EnableFraudulentWebsiteWarnings | | | | |
| Focused | Y | Y | | |
| Frameless | Y | Y | | |
| FullscreenButtonEnabled | Y | | | |
| Height | Y | Y | | |
| Hidden | Y | Y | | |
| HTML | Y | Y | | |
| JS | Y | Y | | |
| Mac | - | - | | |
| MaxHeight | Y | Y | | |
| MaxWidth | Y | Y | | |
| MinHeight | Y | Y | | |
| MinWidth | Y | Y | | |
| Name | Y | Y | | |
| OpenInspectorOnStartup | | | | |
| StartState | Y | | | |
| Title | Y | Y | | |
| URL | Y | Y | | |
| Width | Y | Y | | |
| Windows | Y | - | - | |
| X | Y | Y | | |
| Y | Y | Y | | |
| Zoom | | | | |
| ZoomControlEnabled | | | | |
### Log
To log or not to log? System logger vs custom logger.
## Menu
| Event | Windows | Linux | Mac | Notes |
|--------------------------|---------|-------|-----|-------|
| Default Application Menu | Y | Y | Y | |
## Tray Menus
| Feature | Windows | Linux | Mac | Notes |
|--------------------|---------|-------|-----|----------------------------------------------------------------------|
| Icon | Y | | Y | Windows has default icons for light/dark mode & supports PNG or ICO. |
| Label | - | | Y | |
| Label (ANSI Codes) | - | | | |
| Menu | Y | | Y | |
### Methods
| Method | Windows | Linux | Mac | Notes |
|-------------------------------|---------|-------|-----|-------|
| setLabel(label string) | - | | Y | |
| run() | Y | | Y | |
| setIcon(icon []byte) | Y | | Y | |
| setMenu(menu *Menu) | Y | | Y | |
| setIconPosition(position int) | - | | Y | |
| setTemplateIcon(icon []byte) | - | | Y | |
| destroy() | Y | | Y | |
| setDarkModeIcon(icon []byte) | Y | | Y | |
## Cross Platform Events
Mapping native events to cross-platform events.
| Event | Windows | Linux | Mac | Notes |
|--------------------------|---------|-------|-----------------|-------|
| WindowWillClose | | | WindowWillClose | |
| WindowDidClose | | | | |
| WindowDidResize | | | | |
| WindowDidHide | | | | |
| ApplicationWillTerminate | | | | |
... Add more
## Bindings Generation
Working well.
## Models Generation
Working well.
## Task file
Contains a lot needed for development.
## Theme
| Mode | Windows | Linux | Mac | Notes |
|--------|---------|-------|-----|-------|
| Dark | Y | | | |
| Light | Y | | | |
| System | Y | | | |
## NSIS Installer
TBD
## Templates
All templates are working.
## Plugins
Built-in plugin support:
| Plugin | Windows | Linux | Mac | Notes |
|-----------------|---------|-------|-----|-------|
| Browser | Y | | Y | |
| KV Store | Y | Y | Y | |
| Log | Y | Y | Y | |
| Single Instance | Y | | Y | |
| SQLite | Y | Y | Y | |
| Start at login | Y | | Y | |
| Server | | | | |
TODO:
- Ensure each plugin has a JS wrapper that can be injected into the window.
## Packaging
| | Windows | Linux | Mac | Notes |
|-----------------|---------|-------|-----|-------|
| Icon Generation | Y | | Y | |
| Icon Embedding | Y | | Y | |
| Info.plist | - | | Y | |
| NSIS Installer | | | - | |
| Mac bundle | - | | Y | |
| Windows exe | Y | | - | |
## Frameless Windows
| Feature | Windows | Linux | Mac | Notes |
|---------|---------|-------|-----|------------------------------------------------|
| Resize | Y | | Y | |
| Drag | Y | Y | Y | Linux - can always drag with `Meta`+left mouse |
## Mac Specific
- [x] Translucency
### Mac Options
| Feature | Default | Notes |
|-------------------------|-------------------|------------------------------------------------------|
| Backdrop | MacBackdropNormal | Standard solid window |
| DisableShadow | false | |
| TitleBar | | Standard window decorations by default |
| Appearance | DefaultAppearance | |
| InvisibleTitleBarHeight | 0 | Creates an invisible title bar for frameless windows |
| DisableShadow | false | Disables the window drop shadow |
## Windows Specific
- [x] Translucency
- [x] Custom Themes
### Windows Options
| Feature | Default | Notes |
|-----------------------------------|---------------|---------------------------------------------|
| BackdropType | Solid | |
| DisableIcon | false | |
| Theme | SystemDefault | |
| CustomTheme | nil | |
| DisableFramelessWindowDecorations | false | |
| WindowMask | nil | Makes the window the contents of the bitmap |
## Linux Specific
Implementation details for the functions utilized by the `*_linux.go` files are located in the following files:
- linux_cgo.go: CGo implementation
- linux_purego.go: PureGo implementation
### CGO
By default CGO is utilized to compile the Linux port. This prevents easy cross-compilation and so the PureGo
implementation is also being simultaneously developed.
### Purego
The examples can be compiled using the following command:
CGO_ENABLED=0 go build -tags purego
Note: things are currently not working after the refactor
## Examples
| Example | Windows | Linux | Mac |
|--------------|----------------------|-------|-----|
| binding | NO | | |
| build | Yes (Debug + Prod) | | |
| clipboard | Yes | | |
| contextmenus | Yes | | |
| dialogs | Almost | | |
| drag-n-drop | NO | | |
| events | NO | | |
| frameless | Yes | | |
| kitchensink | Yes | | |
| menu | Yes | | |
| plain | Yes | | |
| plugins | Yes | | |
| screen | Yes | | |
| systray | Yes | | Yes |
| window | Yes | | |
| windowjs | Example not complete | | |
| wml | Yes | | |
# Alpha Release TODO
- [ ] Check all runtime methods are available in the JS runtime
# Beta Release TODO
- [ ] Make better looking examples

Some files were not shown because too many files have changed in this diff Show More