From 5a3af947728feba6c8ebfb6ddb79822cc9ac9590 Mon Sep 17 00:00:00 2001
From: Lea Anthony
Date: Sat, 27 Aug 2022 11:17:03 +1000
Subject: [PATCH] Documentation update + refactor
---
website/docs/introduction.mdx | 40 ++-
website/docs/reference/options.mdx | 303 ++++++++-------------
website/docs/reference/runtime/browser.mdx | 10 +-
website/docs/reference/runtime/dialog.mdx | 12 +-
website/docs/reference/runtime/events.mdx | 38 ++-
website/docs/reference/runtime/intro.mdx | 40 ++-
website/docs/reference/runtime/log.mdx | 86 +++---
website/docs/reference/runtime/menu.mdx | 10 +-
website/docs/reference/runtime/window.mdx | 172 +++++-------
9 files changed, 304 insertions(+), 407 deletions(-)
diff --git a/website/docs/introduction.mdx b/website/docs/introduction.mdx
index e4d540c8e..49f314a9e 100644
--- a/website/docs/introduction.mdx
+++ b/website/docs/introduction.mdx
@@ -4,14 +4,26 @@ sidebar_position: 1
# Introduction
-## Overview
-
Wails is a project that enables you to write desktop apps using Go and web technologies.
Consider it a lightweight and fast Electron alternative for Go. You can easily build applications with the flexibility
and power of Go, combined with a rich, modern frontend.
-Wails doesn't hold back with the eye candy either! This is [varly](https://varly.app) - a desktop application for
+### Features
+
+- Native Menus, Dialogs, Theming and Translucency
+- Windows, macOS and linux support
+- Built in templates for Svelte, React, Preact, Vue, Lit and Vanilla JS
+- Easily call Go methods from Javascript
+- Automatic Go struct to Typescript model generation
+- No CGO or external DLLs required on Windows
+- Live development mode using the power of [Vite](https://vite.net/)
+- Powerful CLI to easily Create, Build and Package applications
+- A rich [runtime library](/docs/next/reference/runtime)
+- Applications built with Wails are Apple & Microsoft Store compliant
+
+
+This is [varly](https://varly.app) - a desktop application for
MacOS & Windows written using Wails. Not only does it look great, it uses native menus and translucency - everything
you'd expect from a modern native app.
@@ -21,13 +33,13 @@ you'd expect from a modern native app.
-## Quick Start Templates
+### Quick Start Templates
Wails comes with a number of pre-configured templates that allow you to get your application up and running quickly.
There are templates for the following frameworks: Svelte, React, Vue, Preact, Lit and Vanilla. There are both Javascript
and Typescript versions for each template.
-## Native Elements
+### Native Elements
Wails uses a purpose built library for handling native elements such as Window, Menus, Dialogs, etc, so you can build
good-looking, feature rich desktop applications.
@@ -35,43 +47,43 @@ good-looking, feature rich desktop applications.
**It does not embed a browser**, so it is resource efficient. Instead, it uses the native rendering engine for the
platform. On Windows, this is the new Microsoft Webview2 library, built on Chromium.
-## Go & Javascript Interoperability
+### Go & Javascript Interoperability
Wails automatically makes your Go methods available to Javascript, so you can call them by name from your frontend!
-It even generates Typescript versions of the structs used by your Go methods, so you can pass the same data structures
+It even generates Typescript models for the structs used by your Go methods, so you can pass the same data structures
between Go and Javascript.
-## Runtime Library
+### Runtime Library
Wails provides a runtime library, for both Go and Javascript, that handles a lot of the things modern applications need,
like Eventing, Logging, Dialogs, etc.
-## Live Development Experience
+### Live Development Experience
-### Automatic Rebuilds
+#### Automatic Rebuilds
When you run your application in "dev" mode, Wails will build your application as a native desktop application, but will
read your assets from disk. It will detect any changes to your Go code and automatically rebuild and relaunch your
application.
-### Automatic Reloads
+#### Automatic Reloads
When changes to your application assets are detected, your running application will "reload", reflecting your changes
almost immediately.
-### Develop your application in a Browser
+#### Develop your application in a Browser
If you prefer to debug and develop in a browser then Wails has you covered. The running application also has a webserver
that will run your application in any browser that connects to it. It will even refresh when your assets change on disk.
-## Production-ready Native Binaries
+### Production-ready Native Binaries
When you're ready to do the final build of your application, the CLI will compile it down to a single executable, with
all the assets bundled into it. On Windows and MacOS, it is possible to create a native package for distribution. The
assets used in packaging (icon, info.plist, manifest file, etc) are part of your project and may be customised, giving
you total control over how your applications are built.
-## Tooling
+### Tooling
The Wails CLI provides a hassle-free way to generate, build and bundle your applications. It will do the heavy lifting
of creating icons, compiling your application with optimal settings and delivering a distributable, production ready
diff --git a/website/docs/reference/options.mdx b/website/docs/reference/options.mdx
index 99ced1c2d..87e54bc8d 100644
--- a/website/docs/reference/options.mdx
+++ b/website/docs/reference/options.mdx
@@ -93,143 +93,109 @@ func main() {
### Title
-Name: Title
-
-Type: string
-
The text shown in the window's title bar.
+Type: `string`
+
### Width
-Name: Width
-
-Type: int
-
The initial width of the window.
+
+Type: `int`
Default: 1024.
### Height
-Name: Height
-
-Type: int
-
The initial height of the window.
+
+Type: `int`
Default: 768
### DisableResize
-Name: DisableResize
-
-Type: bool
-
By default, the main window is resizable. Setting this to `true` will keep it a fixed size.
+Type: `bool`
+
### Fullscreen
-Name: Fullscreen
-
-Type: bool
-
Setting this to `true` will make the window fullscreen at startup.
+Type: `bool`
+
### Frameless
-Name: Frameless
-
-Type: bool
-
When set to `true`, the window will have no borders or title bar.
Also see [Frameless Windows](../guides/frameless.mdx).
+Type: `bool`
+
### MinWidth
-Name: MinWidth
-
-Type: int
-
This sets the minimum width for the window. If the value given in `Width` is less than this value,
the window will be set to `MinWidth` by default.
+Type: `int`
+
### MinHeight
-Name: MinHeight
-
-Type: int
-
This sets the minimum height for the window. If the value given in `Height` is less than this value,
the window will be set to `MinHeight` by default.
+Type: `int`
+
### MaxWidth
-Name: MaxWidth
-
-Type: int
-
This sets the maximum width for the window. If the value given in `Width` is more than this value,
the window will be set to `MaxWidth` by default.
+Type: `int`
+
### MaxHeight
-Name: MaxHeight
-
-Type: int
-
This sets the maximum height for the window. If the value given in `Height` is more than this value,
the window will be set to `MaxHeight` by default.
+Type: `int`
+
### StartHidden
-Name: StartHidden
-
-Type: bool
-
When set to `true`, the application will be hidden until [WindowShow](../reference/runtime/window.mdx#windowshow)
is called.
+Type: `bool`
### HideWindowOnClose
-Name: HideWindowOnClose
-
-Type: bool
-
By default, closing the window will close the application. Setting this to `true` means closing the window will
+
hide the window instead.
+Type: `bool`
+
### BackgroundColour
-Name: BackgroundColour
-
-Type: \*options.RGBA
+This value is the default background colour of the window.
Example: options.NewRGBA(255,0,0,128) - Red at 50% transparency
-This value is the default background colour of the window.
+Type: `*options.RGBA`
Default: white
### AlwaysOnTop
-Name: AlwaysOnTop
-
-Type: bool
-
Indicates that the window should stay above other windows when losing focus.
+Type: `bool`
+
### Assets
-Name: Assets
-
-Type: embed.FS
-
The frontend assets to be used by the application. Requires an `index.html` file.
+Type: `embed.FS`
+
### AssetsHandler
-Name: AssetsHandler
-
-Type: http.Handler
-
The assets handler is a generic `http.Handler` which will be called for any non GET request on the assets server
and for GET requests which can not be served from the `assets` because the file is not found.
@@ -254,79 +220,62 @@ supported by the introduction of WebKit2GTK 2.36.0+ support.
NOTE: When used in combination with a Frontend DevServer there might be limitations, eg. Vite serves the index.html
on every path, that does not contain a file extension.
+Type: `http.Handler`
+
### Menu
-Name: Menu
-
-Type: \*menu.Menu
-
The menu to be used by the application. More details about Menus in the [Menu Reference](../reference/runtime/menu.mdx).
-NOTE: On Mac, if no menu is specified, a default menu will be created.
+:::note
+On Mac, if no menu is specified, a default menu will be created.
+:::
+
+Type: `*menu.Menu`
### Logger
-Name: Logger
-
-Type: logger.Logger
-
-Default: Logger to Stdout
-
The logger to be used by the application. More details about logging in the [Log Reference](../reference/runtime/log.mdx).
+Type: `logger.Logger`
+Default: Logs to Stdout
+
### LogLevel
-Name: LogLevel
-
-Type: logger.LogLevel
-
-Default: `Info` in dev mode, `Error` in production mode
-
The default log level. More details about logging in the [Log Reference](../reference/runtime/log.mdx).
+Type: `logger.LogLevel`
+Default: `Info` in dev mode, `Error` in production mode
+
### LogLevelProduction
-Name: LogLevelProduction
-
-Type: logger.LogLevel
-
-Default: `Error`
-
The default log level for production builds. More details about logging in the [Log Reference](../reference/runtime/log.mdx).
+Type: `logger.LogLevel`
+Default: `Error`
+
### OnStartup
-Name: OnStartup
-
-Type: func(ctx context.Context)
-
This callback is called after the frontend has been created, but before `index.html` has been loaded. It is given
the application context.
+Type: `func(ctx context.Context)`
+
### OnDomReady
-Name: OnDomReady
-
-Type: func(ctx context.Context)
-
This callback is called after the frontend has loaded `index.html` and its resources. It is given
the application context.
+Type: `func(ctx context.Context)`
+
### OnShutdown
-Name: OnShutdown
-
-Type: func(ctx context.Context)
-
This callback is called after the frontend has been destroyed, just before the application terminates. It is given
the application context.
+Type: `func(ctx context.Context)`
+
### OnBeforeClose
-Name: OnBeforeClose
-
-Type: func(ctx context.Context) bool
-
If this callback is set, it will be called when the application is about to quit, either by clicking the window close
button or calling `runtime.Quit`. Returning true will cause the application to continue, false will continue shutdown
as normal. This is good for confirming with the user that they wish to exit the program.
@@ -336,9 +285,11 @@ Example:
```go title=windowsapp.go
func (b *App) beforeClose(ctx context.Context) (prevent bool) {
dialog, err := runtime.MessageDialog(ctx, runtime.MessageDialogOptions{
- Type: runtime.QuestionDialog,
Title: "Quit?",
Message: "Are you sure you want to quit?",
+
+ Type: ` runtime`.QuestionDialog,
+
})
if err != nil {
@@ -348,12 +299,10 @@ func (b *App) beforeClose(ctx context.Context) (prevent bool) {
}
```
+Type: `func(ctx context.Context) bool`
+
### WindowStartState
-Name: WindowStartState
-
-Type: options.WindowStartState
-
Defines how the window should present itself at startup.
| Value | Win | Mac | Lin |
@@ -362,91 +311,71 @@ Defines how the window should present itself at startup.
| Maximised | ✅ | ✅ | ✅ |
| Minimised | ✅ | ❌ | ✅ |
+Type: `options.WindowStartState`
+
### Bind
-Name: Bind
-
-Type: []interface{}
-
A slice of struct instances defining methods that need to be bound to the frontend.
+Type: `[]interface{}`
+
### Windows
-Name: Windows
-
-Type: \*windows.Options
-
This defines [Windows specific options](#windows-specific-options).
+Type: `*windows.Options`
+
### Mac
-Name: Mac
-
-Type: \*mac.Options
-
This defines [Mac specific options](#mac-specific-options).
+Type: `*mac.Options`
+
### Linux
-Name: Linux
-
-Type: \*linux.Options
-
This defines [Linux specific options](#linux-specific-options).
+Type: `*linux.Options`
+
## Windows Specific Options
### WebviewIsTransparent
-Name: WebviewIsTransparent
-
-Type: bool
-
Setting this to `true` will make the webview background transparent when an alpha value of `0` is used.
This means that if you use `rgba(0,0,0,0)` for `background-color` in your CSS, the host window will show through.
Often combined with [WindowIsTranslucent](#WindowIsTranslucent) to make frosty-looking applications.
+Type: `bool`
+
### WindowIsTranslucent
-Name: WindowIsTranslucent
-
-Type: bool
-
Setting this to `true` will make the window background translucent. Often combined
with [WebviewIsTransparent](#WebviewIsTransparent) to make frosty-looking applications.
+Type: `bool`
+
### DisableWindowIcon
-Name: DisableWindowIcon
-
-Type: bool
-
Setting this to `true` will remove the icon in the top left corner of the title bar.
+Type: `bool`
+
### DisableFramelessWindowDecorations
-Name: DisableFramelessWindowDecorations
-
-Type: bool
-
Setting this to `true` will remove the window decorations in [Frameless](#Frameless) mode. This means there will be no
'Aero Shadow' and no 'Rounded Corners' shown for the window. Please note that 'Rounded Corners' are only supported on
Windows 11.
+Type: `bool`
+
### WebviewUserDataPath
-Name: WebviewUserDataPath
-
-Type: string
-
This defines the path where the WebView2 stores the user data. If empty `%APPDATA%\[BinaryName.exe]` will be used.
+Type: `string`
+
### WebviewBrowserPath
-Name: WebviewBrowserPath
-
-Type: string
-
This defines the path to a directory with WebView2 executable files and libraries. If empty, webview2 installed in the system will be used.
Important information about distribution of fixed version runtime:
@@ -455,12 +384,10 @@ Important information about distribution of fixed version runtime:
- [Known issues for fixed version](https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#known-issues-for-fixed-version)
- [The path of fixed version of the WebView2 Runtime should not contain \Edge\Application\.](https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/webview2-idl?view=webview2-1.0.1245.22#createcorewebview2environmentwithoptions)
+Type: `string`
+
### Theme
-Name: Theme
-
-Type: `windows.Theme`
-
Minimum Windows Version: Windows 10 2004/20H1
This defines the theme that the application should use:
@@ -471,18 +398,20 @@ This defines the theme that the application should use:
| Dark | The application will use a dark theme exclusively |
| Light | The application will use a light theme exclusively |
+Type: `windows.Theme`
+
### CustomTheme
-Name: CustomTheme
-
-Type: `windows.CustomTheme`
-
+:::note
Minimum Windows Version: Windows 10/11 2009/21H2 Build 22000
+:::
Allows you to specify custom colours for TitleBar, TitleText and Border for both light and dark mode, as well as
when the window is active or inactive.
-#### CustomTheme
+Type: `windows.CustomTheme`
+
+#### CustomTheme Type
The CustomTheme struct uses `int32` to specify the colour values. These are in the standard(!) Windows format of:
`0x00BBGGAA`. A helper function is provided to do RGB conversions into this format: `windows.RGB(r,g,b uint8)`.
@@ -529,83 +458,68 @@ Example:
### Messages
-Name: Messages
+A struct of strings used by the webview2 installer if a valid webview2 runtime is not found.
Type: `*windows.Messages`
-A struct of strings used by the webview2 installer if a valid webview2 runtime is not found.
Customise this for any language you choose to support.
### ResizeDebounceMS
-Name: ResizeDebounceMS
-
-Type: uint16
-
ResizeDebounceMS is the amount of time to debounce redraws of webview2 when resizing the window.
The default value (0) will perform redraws as fast as it can.
+Type: `uint16`
+
### OnSuspend
-Name: OnSuspend
-
-Type: func()
-
If set, this function will be called when windows initiates a switch to low power mode (suspend/hibernate)
+Type: `func()`
+
### OnResume
-Name: OnResume
-
-Type: func()
-
If set, this function will be called when windows resumes from low power mode (suspend/hibernate)
+Type: `func()`
+
## Mac Specific Options
### TitleBar
-Name: TitleBar
-
-Type: [\*mac.TitleBar](#titlebar-struct)
-
The TitleBar struct provides the ability to configure the look and feel of the title bar.
+Type: [`*mac.TitleBar`](#titlebar-struct)
+
+
### Appearance
-Name: Appearance
-
-Type: [AppearanceType](#appearance-type)
-
Appearance is used to set the style of your app in accordance with Apple's [NSAppearance](https://developer.apple.com/documentation/appkit/nsappearancename?language=objc) names.
+Type: [`AppearanceType`](#appearance-type)
+
### WebviewIsTransparent
-Name: WebviewIsTransparent
-
-Type: bool
-
Setting this to `true` will make the webview background transparent when an alpha value of `0` is used.
This means that if you use `rgba(0,0,0,0)` for `background-color` in your CSS, the host window will show through.
Often combined with [WindowIsTranslucent](#WindowIsTranslucent) to make frosty-looking applications.
+Type: `bool`
+
### WindowIsTranslucent
-Name: WindowIsTranslucent
-
-Type: bool
-
Setting this to `true` will make the window background translucent. Often combined
with [WebviewIsTransparent](#WebviewIsTransparent) to make frosty-looking applications.
+Type: `bool`
+
### About
-Name: About
-
-Type: [About](#about-struct)
-
This configuration lets you set the title, message and icon for the "About" menu item in the app menu created by the "AppMenu" role.
+Type: [`About`](#about-struct)
+
+
#### Titlebar struct
The titlebar of the application can be customised by using the TitleBar options:
@@ -726,11 +640,10 @@ When clicked, that will open an about message box:
### Icon
-Name: Icon
-
-Type: []byte
-
Sets up the icon representing the window. This icon is used when the window is minimized (also known as iconified).
+
+Type: `[]byte`
+
Some window managers or desktop environments may also place it in the window frame, or display it in other contexts.
On others, the icon is not used at all, so your mileage may vary.
diff --git a/website/docs/reference/runtime/browser.mdx b/website/docs/reference/runtime/browser.mdx
index 22f05d838..263c5897c 100644
--- a/website/docs/reference/runtime/browser.mdx
+++ b/website/docs/reference/runtime/browser.mdx
@@ -4,14 +4,12 @@ sidebar_position: 7
# Browser
-## Overview
-
These methods are related to the system browser.
### BrowserOpenURL
-Go Signature: `BrowserOpenURL(ctx context.Context, url string)`
-
-JS Signature: `BrowserOpenURL(url string)`
-
Opens the given URL in the system browser.
+
+Go: `BrowserOpenURL(ctx context.Context, url string)`
+JS: `BrowserOpenURL(url string)`
+
diff --git a/website/docs/reference/runtime/dialog.mdx b/website/docs/reference/runtime/dialog.mdx
index 2d2cb6a0f..5f679b1b2 100644
--- a/website/docs/reference/runtime/dialog.mdx
+++ b/website/docs/reference/runtime/dialog.mdx
@@ -4,8 +4,6 @@ sidebar_position: 5
# Dialog
-## Overview
-
This part of the runtime provides access to native dialogs, such as File Selectors and Message boxes.
:::info Javascript
@@ -16,7 +14,7 @@ Dialog is currently unsupported in the JS runtime.
Opens a dialog that prompts the user to select a directory. Can be customised using [OpenDialogOptions](#opendialogoptions).
-Go Signature: `OpenDirectoryDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)`
+Go: `OpenDirectoryDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)`
Returns: Selected directory (blank if the user cancelled) or an error
@@ -24,7 +22,7 @@ Returns: Selected directory (blank if the user cancelled) or an error
Opens a dialog that prompts the user to select a file. Can be customised using [OpenDialogOptions](#opendialogoptions).
-Go Signature: `OpenFileDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)`
+Go: `OpenFileDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)`
Returns: Selected file (blank if the user cancelled) or an error
@@ -32,7 +30,7 @@ Returns: Selected file (blank if the user cancelled) or an error
Opens a dialog that prompts the user to select multiple files. Can be customised using [OpenDialogOptions](#opendialogoptions).
-Go Signature: `OpenMultipleFilesDialog(ctx context.Context, dialogOptions OpenDialogOptions) ([]string, error)`
+Go: `OpenMultipleFilesDialog(ctx context.Context, dialogOptions OpenDialogOptions) ([]string, error)`
Returns: Selected files (nil if the user cancelled) or an error
@@ -40,7 +38,7 @@ Returns: Selected files (nil if the user cancelled) or an error
Opens a dialog that prompts the user to select a filename for the purposes of saving. Can be customised using [SaveDialogOptions](#savedialogoptions).
-Go Signature: `SaveFileDialog(ctx context.Context, dialogOptions SaveDialogOptions) (string, error)`
+Go: `SaveFileDialog(ctx context.Context, dialogOptions SaveDialogOptions) (string, error)`
Returns: The selected file (blank if the user cancelled) or an error
@@ -48,7 +46,7 @@ Returns: The selected file (blank if the user cancelled) or an error
Displays a message using a message dialog. Can be customised using [MessageDialogOptions](#messagedialogoptions).
-Go Signature: `MessageDialog(ctx context.Context, dialogOptions MessageDialogOptions) (string, error)`
+Go: `MessageDialog(ctx context.Context, dialogOptions MessageDialogOptions) (string, error)`
Returns: The text of the selected button or an error
diff --git a/website/docs/reference/runtime/events.mdx b/website/docs/reference/runtime/events.mdx
index c08f83c8a..5b286c21e 100644
--- a/website/docs/reference/runtime/events.mdx
+++ b/website/docs/reference/runtime/events.mdx
@@ -4,48 +4,42 @@ sidebar_position: 2
# Events
-## Overview
-
The Wails runtime provides a unified events system, where events can be emitted or received by either Go or Javascript.
Optionally, data may be passed with the events. Listeners will receive the data in the local data types.
### EventsOn
-Go Signature: `EventsOn(ctx context.Context, eventName string, callback func(optionalData ...interface{}))`
-
-JS Signature: `EventsOn(eventName string, callback function(optionalData?: any))`
-
This method sets up a listener for the given event name. When an event of type `eventName` is [emitted](#EventsEmit),
the callback is triggered. Any additional data sent with the emitted event will be passed to the callback.
+Go: `EventsOn(ctx context.Context, eventName string, callback func(optionalData ...interface{}))`
+JS: `EventsOn(eventName string, callback function(optionalData?: any))`
+
### EventsOff
-Go Signature: `EventsOff(ctx context.Context, eventName string)`
-
-JS Signature: `EventsOff(eventName string)`
-
This method unregisters the listener for the given event name.
+Go: `EventsOff(ctx context.Context, eventName string)`
+JS: `EventsOff(eventName string)`
+
### EventsOnce
-Go Signature: `EventsOnce(ctx context.Context, eventName string, callback func(optionalData ...interface{}))`
-
-JS Signature: `EventsOnce(eventName string, callback function(optionalData?: any))`
-
This method sets up a listener for the given event name, but will only trigger once.
+Go: `EventsOnce(ctx context.Context, eventName string, callback func(optionalData ...interface{}))`
+JS: `EventsOnce(eventName string, callback function(optionalData?: any))`
+
### EventsOnMultiple
-Go Signature: `EventsOnMultiple(ctx context.Context, eventName string, callback func(optionalData ...interface{}), counter int)`
-
-JS Signature: `EventsOnMultiple(eventName string, callback function(optionalData?: any), counter int)`
-
This method sets up a listener for the given event name, but will only trigger a maximum of `counter` times.
+Go: `EventsOnMultiple(ctx context.Context, eventName string, callback func(optionalData ...interface{}), counter int)`
+JS: `EventsOnMultiple(eventName string, callback function(optionalData?: any), counter int)`
+
### EventsEmit
-Go Signature: `EventsEmit(ctx context.Context, eventName string, optionalData ...interface{})`
-
-JS Signature: `EventsEmit(ctx context, optionalData function(optionalData?: any))`
-
This method emits the given event. Optional data may be passed with the event. This will trigger any event listeners.
+
+Go: `EventsEmit(ctx context.Context, eventName string, optionalData ...interface{})`
+JS: `EventsEmit(ctx context, optionalData function(optionalData?: any))`
+
diff --git a/website/docs/reference/runtime/intro.mdx b/website/docs/reference/runtime/intro.mdx
index 740929b7f..4310bab57 100644
--- a/website/docs/reference/runtime/intro.mdx
+++ b/website/docs/reference/runtime/intro.mdx
@@ -7,6 +7,15 @@ sidebar_position: 1
The runtime is a library that provides utility methods for your application. There is both a Go and Javascript runtime
and the aim is to try and keep them at parity where possible.
+It has utility methods for:
+
+- [Window](window.mdx)
+- [Menu](menu.mdx)
+- [Dialog](dialog.mdx)
+- [Events](events.mdx)
+- [Browser](browser.mdx)
+- [Log](log.mdx)
+
The Go Runtime is available through importing `github.com/wailsapp/wails/v2/pkg/runtime`. All methods in this package
take a context as the first parameter. This context should be obtained from the [OnStartup](../options.mdx#onstartup)
or [OnDomReady](../options.mdx#ondomready) hooks.
@@ -26,7 +35,8 @@ frontend directory.
### Hide
-Go Signature: `Hide(ctx context.Context)`
+Go: `Hide(ctx context.Context)`
+JS: `Hide()`
Hides the application.
@@ -38,8 +48,6 @@ For Windows and Linux, this is currently the same as `WindowHide`.
### Show
-Go Signature: `Show(ctx context.Context)`
-
Shows the application.
:::info Note
@@ -47,22 +55,38 @@ On Mac, this will bring the application back into the foreground.
For Windows and Linux, this is currently the same as `WindowShow`.
:::
-### Quit
+Go: `Show(ctx context.Context)`
+JS: `Show()`
-Go Signature: `Quit(ctx context.Context)`
+### Quit
Quits the application.
-### Environment
+Go: `Quit(ctx context.Context)`
+JS: `Quit()`
-Go Signature: `Environment(ctx context.Context) EnvironmentInfo`
+### Environment
Returns details of the current environment.
+Go: `Environment(ctx context.Context) EnvironmentInfo`
+JS: `Environment(): Promise`
+
#### EnvironmentInfo
+Go:
```go
type EnvironmentInfo struct {
- BuildType string // Either "production", "debug" or "dev"
+ BuildType string
+ Platform string
+ Arch string
+}
+```
+JS:
+```ts
+interface EnvironmentInfo {
+ buildType: string;
+ platform: string;
+ arch: string;
}
```
diff --git a/website/docs/reference/runtime/log.mdx b/website/docs/reference/runtime/log.mdx
index e1e697686..d38ee9526 100644
--- a/website/docs/reference/runtime/log.mdx
+++ b/website/docs/reference/runtime/log.mdx
@@ -4,8 +4,6 @@ sidebar_position: 3
# Log
-## Overview
-
The Wails runtime provides a logging mechanism that may be called from Go or Javascript. Like most
loggers, there are a number of log levels:
@@ -21,108 +19,97 @@ level will output all messages except `Trace` messages.
### LogPrint
-Go Signature: `LogPrint(ctx context.Context, message string)`
-
-JS Signature: `LogPrint(message: string)`
-
Logs the given message as a raw message.
+Go: `LogPrint(ctx context.Context, message string)`
+JS: `LogPrint(message: string)`
+
### LogPrintf
-Go Signature: `LogPrintf(ctx context.Context, format string, args ...interface{})`
-
Logs the given message as a raw message.
+Go: `LogPrintf(ctx context.Context, format string, args ...interface{})`
+
### LogTrace
-Go Signature: `LogTrace(ctx context.Context, message string)`
-
-JS Signature: `LogTrace(message: string)`
-
Logs the given message at the `Trace` log level.
+Go: `LogTrace(ctx context.Context, message string)`
+JS: `LogTrace(message: string)`
+
### LogTracef
-Go Signature: `LogTracef(ctx context.Context, format string, args ...interface{})`
-
Logs the given message at the `Trace` log level.
+Go: `LogTracef(ctx context.Context, format string, args ...interface{})`
+
### LogDebug
-Go Signature: `LogDebug(ctx context.Context, message string)`
-
-JS Signature: `LogDebug(message: string)`
-
Logs the given message at the `Debug` log level.
+Go: `LogDebug(ctx context.Context, message string)`
+JS: `LogDebug(message: string)`
+
### LogDebugf
-Go Signature: `LogDebugf(ctx context.Context, format string, args ...interface{})`
-
Logs the given message at the `Debug` log level.
+Go: `LogDebugf(ctx context.Context, format string, args ...interface{})`
+
### LogInfo
-Go Signature: `LogInfo(ctx context.Context, message string)`
-
-JS Signature: `LogInfo(message: string)`
-
Logs the given message at the `Info` log level.
+Go: `LogInfo(ctx context.Context, message string)`
+JS: `LogInfo(message: string)`
+
### LogInfof
-Go Signature: `LogInfof(ctx context.Context, format string, args ...interface{})`
-
Logs the given message at the `Info` log level.
+Go: `LogInfof(ctx context.Context, format string, args ...interface{})`
+
### LogWarning
-Go Signature: `LogWarning(ctx context.Context, message string)`
-
-JS Signature: `LogWarning(message: string)`
-
Logs the given message at the `Warning` log level.
+Go: `LogWarning(ctx context.Context, message string)`
+JS: `LogWarning(message: string)`
+
### LogWarningf
-Go Signature: `LogWarningf(ctx context.Context, format string, args ...interface{})`
-
Logs the given message at the `Warning` log level.
+Go: `LogWarningf(ctx context.Context, format string, args ...interface{})`
+
### LogError
-Go Signature: `LogError(ctx context.Context, message string)`
-
-JS Signature: `LogError(message: string)`
-
Logs the given message at the `Error` log level.
+Go: `LogError(ctx context.Context, message string)`
+JS: `LogError(message: string)`
+
### LogErrorf
-Go Signature: `LogErrorf(ctx context.Context, format string, args ...interface{})`
-
Logs the given message at the `Error` log level.
+Go: `LogErrorf(ctx context.Context, format string, args ...interface{})`
+
### LogFatal
-Go Signature: `LogFatal(ctx context.Context, message string)`
-
-JS Signature: `LogFatal(message: string)`
-
Logs the given message at the `Fatal` log level.
+Go: `LogFatal(ctx context.Context, message string)`
+JS: `LogFatal(message: string)`
+
### LogFatalf
-Go Signature: `LogFatalf(ctx context.Context, format string, args ...interface{})`
-
Logs the given message at the `Fatal` log level.
+Go: `LogFatalf(ctx context.Context, format string, args ...interface{})`
+
### LogSetLogLevel
-Go Signature: `LogSetLogLevel(ctx context.Context, level logger.LogLevel)`
-
-JS Signature: `LogSetLogLevel(level: number)`
-
Sets the log level. In Javascript, the number relates to the following log levels:
| Value | Log Level |
@@ -133,6 +120,9 @@ Sets the log level. In Javascript, the number relates to the following log level
| 4 | Warning |
| 5 | Error |
+Go: `LogSetLogLevel(ctx context.Context, level logger.LogLevel)`
+JS: `LogSetLogLevel(level: number)`
+
## Using a Custom Logger
A custom logger may be used by providing it using the [Logger](../options.mdx#logger)
diff --git a/website/docs/reference/runtime/menu.mdx b/website/docs/reference/runtime/menu.mdx
index ec6ae451d..6a7e06cf9 100644
--- a/website/docs/reference/runtime/menu.mdx
+++ b/website/docs/reference/runtime/menu.mdx
@@ -4,8 +4,6 @@ sidebar_position: 6
# Menu
-## Overview
-
These methods are related to the application menu.
:::info Javascript
@@ -14,12 +12,12 @@ Menu is currently unsupported in the JS runtime.
### MenuSetApplicationMenu
-Go Signature: `MenuSetApplicationMenu(ctx context.Context, menu *menu.Menu)`
+Sets the application menu to the given [menu](../menus.mdx).
-Sets the application menu to the given [menu](../menus.mdx) .
+Go: `MenuSetApplicationMenu(ctx context.Context, menu *menu.Menu)`
### MenuUpdateApplicationMenu
-Go Signature: `MenuUpdateApplicationMenu(ctx context.Context)`
-
Updates the application menu, picking up any changes to the menu passed to `MenuSetApplicationMenu`.
+
+Go: `MenuUpdateApplicationMenu(ctx context.Context)`
diff --git a/website/docs/reference/runtime/window.mdx b/website/docs/reference/runtime/window.mdx
index 9ff48cf03..dcc381f27 100644
--- a/website/docs/reference/runtime/window.mdx
+++ b/website/docs/reference/runtime/window.mdx
@@ -4,226 +4,196 @@ sidebar_position: 4
# Window
-## Overview
-
These methods give control of the application window.
### WindowSetTitle
-Go Signature: `WindowSetTitle(ctx context.Context, title string)`
-
-JS Signature: `WindowSetTitle(title: string)`
-
Sets the text in the window title bar.
+Go: `WindowSetTitle(ctx context.Context, title string)`
+JS: `WindowSetTitle(title: string)`
+
### WindowFullscreen
-Go Signature: `WindowFullscreen(ctx context.Context)`
-
-JS Signature: `WindowFullscreen()`
-
Makes the window full screen.
+Go: `WindowFullscreen(ctx context.Context)`
+JS: `WindowFullscreen()`
+
### WindowUnfullscreen
-Go Signature: `WindowUnfullscreen(ctx context.Context)`
-
-JS Signature: `WindowUnfullscreen()`
-
Restores the previous window dimensions and position prior to full screen.
+Go: `WindowUnfullscreen(ctx context.Context)`
+JS: `WindowUnfullscreen()`
+
### WindowCenter
-Go Signature: `WindowCenter(ctx context.Context)`
-
-JS Signature: `WindowCenter()`
-
Centers the window on the monitor the window is currently on.
+Go: `WindowCenter(ctx context.Context)`
+JS: `WindowCenter()`
+
### WindowReload
-Go Signature: `WindowReload(ctx context.Context)`
-
-JS Signature: `WindowReload()`
-
Performs a "reload" (Reloads current page).
+Go: `WindowReload(ctx context.Context)`
+JS: `WindowReload()`
+
### WindowReloadApp
-Go Signature: `WindowReloadApp(ctx context.Context)`
-
-JS Signature: `WindowReloadApp()`
-
Reloads the application frontend.
-### WindowSetSy
+Go: `WindowReloadApp(ctx context.Context)`
+JS: `WindowReloadApp()`
### WindowSetSystemDefaultTheme
-Go Signature: `WindowSetSystemDefaultTheme(ctx context.Context)`
-
-JS Signature: `WindowSetSystemDefaultTheme()`
-
Windows only.
+Go: `WindowSetSystemDefaultTheme(ctx context.Context)`
+JS: `WindowSetSystemDefaultTheme()`
+
Sets window theme to system default (dark/light).
### WindowSetLightTheme
-Go Signature: `WindowSetLightTheme(ctx context.Context)`
-
-JS Signature: `WindowSetLightTheme()`
-
Windows only.
+Go: `WindowSetLightTheme(ctx context.Context)`
+JS: `WindowSetLightTheme()`
+
Sets window theme to light.
### WindowSetDarkTheme
-Go Signature: `WindowSetDarkTheme(ctx context.Context)`
-
-JS Signature: `WindowSetDarkTheme()`
-
Windows only.
+Go: `WindowSetDarkTheme(ctx context.Context)`
+JS: `WindowSetDarkTheme()`
+
Sets window theme to dark.
### WindowShow
-Go Signature: `WindowShow(ctx context.Context)`
-
-JS Signature: `WindowShow()`
-
Shows the window, if it is currently hidden.
+Go: `WindowShow(ctx context.Context)`
+JS: `WindowShow()`
+
### WindowHide
-Go Signature: `WindowHide(ctx context.Context)`
-
-JS Signature: `WindowHide()`
-
Hides the window, if it is currently visible.
+Go: `WindowHide(ctx context.Context)`
+JS: `WindowHide()`
+
### WindowSetSize
-Go Signature: `WindowSetSize(ctx context.Context, width int, height int)`
-
-JS Signature: `WindowSetSize(size: Size)`
-
Sets the width and height of the window.
+Go: `WindowSetSize(ctx context.Context, width int, height int)`
+JS: `WindowSetSize(size: Size)`
+
### WindowGetSize
-Go Signature: `WindowGetSize(ctx context.Context) (width int, height int)`
-
-JS Signature: `WindowGetSize() : Size`
-
Gets the width and height of the window.
+Go: `WindowGetSize(ctx context.Context) (width int, height int)`
+JS: `WindowGetSize() : Size`
+
### WindowSetMinSize
-Go Signature: `WindowSetMinSize(ctx context.Context, width int, height int)`
-
-JS Signature: `WindowSetMinSize(size: Size)`
-
Sets the minimum window size.
Will resize the window if the window is currently smaller than the given dimensions.
Setting a size of `0,0` will disable this constraint.
+Go: `WindowSetMinSize(ctx context.Context, width int, height int)`
+JS: `WindowSetMinSize(size: Size)`
+
### WindowSetMaxSize
-Go Signature: `WindowSetMaxSize(ctx context.Context, width int, height int)`
-
-JS Signature: `WindowSetMaxSize(size: Size)`
-
Sets the maximum window size.
Will resize the window if the window is currently larger than the given dimensions.
Setting a size of `0,0` will disable this constraint.
+Go: `WindowSetMaxSize(ctx context.Context, width int, height int)`
+JS: `WindowSetMaxSize(size: Size)`
+
### WindowSetAlwaysOnTop
-Go Signature: `WindowSetAlwaysOnTop(ctx context.Context, b bool)`
-
-JS Signature: `WindowSetAlwaysOnTop(b: Boolen)`
-
Sets the window AlwaysOnTop or not on top.
+Go: `WindowSetAlwaysOnTop(ctx context.Context, b bool)`
+JS: `WindowSetAlwaysOnTop(b: Boolen)`
+
### WindowSetPosition
-Go Signature: `WindowSetPosition(ctx context.Context, x int, y int)`
-
-JS Signature: `WindowSetPosition(position: Position)`
-
Sets the window position relative to the monitor the window is currently on.
+Go: `WindowSetPosition(ctx context.Context, x int, y int)`
+JS: `WindowSetPosition(position: Position)`
+
### WindowGetPosition
-Go Signature: `WindowGetPosition(ctx context.Context) (x int, y int)`
-
-JS Signature: `WindowGetPosition() : Position`
-
Gets the window position relative to the monitor the window is currently on.
+Go: `WindowGetPosition(ctx context.Context) (x int, y int)`
+JS: `WindowGetPosition() : Position`
+
### WindowMaximise
-Go Signature: `WindowMaximise(ctx context.Context)`
-
-JS Signature: `WindowMaximise()`
-
Maximises the window to fill the screen.
+Go: `WindowMaximise(ctx context.Context)`
+JS: `WindowMaximise()`
+
### WindowUnmaximise
-Go Signature: `WindowUnmaximise(ctx context.Context)`
-
-JS Signature: `WindowUnmaximise()`
-
Restores the window to the dimensions and position prior to maximising.
+Go: `WindowUnmaximise(ctx context.Context)`
+JS: `WindowUnmaximise()`
+
### WindowToggleMaximise
-Go Signature: `WindowToggleMaximise(ctx context.Context)`
-
-JS Signature: `WindowToggleMaximise()`
-
Toggles between Maximised and UnMaximised.
+Go: `WindowToggleMaximise(ctx context.Context)`
+JS: `WindowToggleMaximise()`
+
### WindowMinimise
-Go Signature: `WindowMinimise(ctx context.Context)`
-
-JS Signature: `WindowMinimise()`
-
Minimises the window.
+Go: `WindowMinimise(ctx context.Context)`
+JS: `WindowMinimise()`
+
### WindowUnminimise
-Go Signature: `WindowUnminimise(ctx context.Context)`
-
-JS Signature: `WindowUnminimise()`
-
Restores the window to the dimensions and position prior to minimising.
+Go: `WindowUnminimise(ctx context.Context)`
+JS: `WindowUnminimise()`
+
### WindowSetBackgroundColour
-Go Signature: `WindowSetBackgroundColour(ctx context.Context, R, G, B, A uint8)`
-
-JS Signature: `WindowSetBackgroundColour(R, G, B, A)`
-
Sets the background colour of the window to the given RGBA colour definition.
This colour will show through for all transparent pixels.
Valid values for R, G, B and A are 0-255.
:::info Windows
-
On Windows, only alpha values of 0 or 255 are supported.
Any value that is not 0 will be considered 255.
-
:::
+Go: `WindowSetBackgroundColour(ctx context.Context, R, G, B, A uint8)`
+JS: `WindowSetBackgroundColour(R, G, B, A)`
+
## Typescript Object Definitions
### Position