跳到主要内容
版本:下个版本 🚧

参数选项

应用程序参数选项

Options.App结构包含应用程序配置。 它被传递给wails.Run()方法:

Example
import "github.com/wailsapp/wails/v2/pkg/options"

func main() {

err := wails.Run(&options.App{
Title: "Menus Demo",
Width: 800,
Height: 600,
DisableResize: false,
Fullscreen: false,
Frameless: true,
MinWidth: 400,
MinHeight: 400,
MaxWidth: 1280,
MaxHeight: 1024,
StartHidden: false,
HideWindowOnClose: false,
BackgroundColour: &options.RGBA{R: 0, G: 0, B: 0, A: 255},
AlwaysOnTop: false,
Assets: assets,
AssetsHandler: assetsHandler,
Menu: app.applicationMenu(),
Logger: nil,
LogLevel: logger.DEBUG,
LogLevelProduction: logger.ERROR,
OnStartup: app.startup,
OnDomReady: app.domready,
OnShutdown: app.shutdown,
OnBeforeClose: app.beforeClose,
WindowStartState: options.Maximised,
CSSDragProperty: "--wails-draggable",
CSSDragValue: "drag",
Bind: []interface{}{
app,
},
Windows: &windows.Options{
WebviewIsTransparent: false,
WindowIsTranslucent: false,
DisableWindowIcon: false,
DisableFramelessWindowDecorations: false,
WebviewUserDataPath: "",
WebviewBrowserPath: "",
Theme: windows.SystemDefault,
CustomTheme: &windows.ThemeSettings{
DarkModeTitleBar: windows.RGB(20, 20, 20),
DarkModeTitleText: windows.RGB(200, 200, 200),
DarkModeBorder: windows.RGB(20, 0, 20),
LightModeTitleBar: windows.RGB(200, 200, 200),
LightModeTitleText: windows.RGB(20, 20, 20),
LightModeBorder: windows.RGB(200, 200, 200),
},
// User messages that can be customised
Messages *windows.Messages
},
Mac: &mac.Options{
TitleBar: &mac.TitleBar{
TitlebarAppearsTransparent: true,
HideTitle: false,
HideTitleBar: false,
FullSizeContent: false,
UseToolbar: false,
HideToolbarSeparator: true,
},
Appearance: mac.NSAppearanceNameDarkAqua,
WebviewIsTransparent: true,
WindowIsTranslucent: false,
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
Linux: &linux.Options{
Icon: icon,
},
})
if err != nil {
log.Fatal(err)
}
}

标题

窗口标题栏中显示的文本。

类型:string

宽度

窗口的初始宽度。

名称:Width

高度

窗口的初始高度。

类型:windows.Theme

禁用调整窗口尺寸

默认情况下,主窗口可调整大小。 将此设置为 true 将使其保持固定大小。

类型:int

Fullscreen

将此设置为 true 将在启动时使窗口全屏。

类型:int

无边框

设置为true时,窗口将没有边框或标题栏。 另请参阅无边框窗口

类型:int

最小宽度

这将设置窗口的最小宽度。 如果给出的值Width小于这个值,窗口将被设置为MinWidth默认值。

类型:bool

最小高度

这将设置窗口的最小高度。 如果给出的值Height小于这个值,窗口将被设置为MinHeight默认值。

类型:bool

最大宽度

这将设置窗口的最大宽度。 如果给出的值Width大于这个值,窗口将被设置为MaxWidth默认值。

类型:bool

最大高度

这将设置窗口的最大高度。 如果给出的值Height大于这个值,窗口将被设置为MaxHeight默认值。

类型:bool

启动时隐藏窗口

设置为true时,应用程序将被隐藏,直到调用显示窗口

类型:int

关闭时隐藏窗口

默认情况下,关闭窗口将关闭应用程序。 将此设置为true意味着关闭窗口将隐藏窗口。

窗口在失去焦点时应保持在其他窗口之上。

类型:int

RGBA

This value is the default background colour of the window. Default: white 类型:int (0xRRGGBBAA) 示例:0xFF000088 - 透明度为 50% 的红色

Type: *options.RGBA
Default: white

窗口固定在最顶层

窗口在失去焦点时应保持在其他窗口之上。

类型:int

资源

应用程序要使用的前端资源。 需要一个index.html文件。

名称:StartHidden

菜单

注意:在 Mac 上,如果未指定菜单,则将创建默认菜单。

WinMacLin
GET
POST
PUT
PATCH
DELETE
Request Headers
Request Body
Request Body Streaming
Response StatusCodes
Response Headers
Response Body
Response Body Streaming

NOTE: Linux is currently very limited due to targeting a WebKit2GTK Version < 2.36.0. In the future some features will be supported by the introduction of WebKit2GTK 2.36.0+ support. In the future some features will be 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. 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. Vite serves the index.html on every path, that does not contain a file extension.

类型:AppearanceType

日志

应用程序要使用的菜单。 菜单参考中有关菜单的更多详细信息。

备注

On Mac, if no menu is specified, a default menu will be created.

This value is the default background colour of the window. Default: white Default: white

日志级别

应用程序要使用的记录器。 有关日志记录的更多详细信息,请参阅日志参考

类型:bool

应用启动回调

默认日志级别。 有关日志记录的更多详细信息,请参阅日志参考

名称:Assets

前端 Dom 加载完成回调

The default log level for production builds. 有关日志记录的更多详细信息,请参阅日志参考。 有关日志记录的更多详细信息,请参阅日志参考

类型:logger.Logger

应用退出回调

此回调在前端创建之后调用,但在index.html加载之前调用。 它提供了应用程序上下文。

类型:*menu.Menu

关闭应用程序之前回调

在前端加载完毕index.html及其资源后调用此回调。 它提供了应用程序上下文。

类型:*menu.Menu

窗口启动状态

在前端被销毁之后,应用程序终止之前,调用此回调。 它提供了应用程序上下文。

类型:*menu.Menu

绑定

如果设置了此回调,它将在通过单击窗口关闭按钮或调用runtime.Quit即将退出应用程序时被调用. 返回 true 将导致应用程序继续,false 将继续正常关闭。 Returning true will cause the application to continue, false will continue shutdown as normal. 这有助于与用户确认他们希望退出程序。 这有助于与用户确认他们希望退出程序。

名称:Mac

windowsapp.go
func (b *App) beforeClose(ctx context.Context) (prevent bool) {
dialog, err := runtime.MessageDialog(ctx, runtime.MessageDialogOptions{
类型: runtime.QuestionDialog,
Title: "Quit?",
Message: "Are you sure you want to quit?",
})

if err != nil {
return false
}
return dialog != "Yes"

类型:func(ctx context.Context)

WindowStartState

名称:Linux

WinMacLin
Fullscreen
Maximised
Minimised

默认值:在开发模式下是Info,在生产模式下是Error

CSSDragProperty

Indicates the CSS property to use to identify which elements can be used to drag the window. Default: --wails-draggable.

类型:string

CSSDragValue

Indicates what value the CSSDragProperty style should have to drag the window. Default: drag.

类型:string

Bind

名称:WebviewIsTransparent

名称:OnStartup

Windows

名称:WindowIsTranslucent

名称:LogLevel

Mac

名称:DisableWindowIcon

类型:func(ctx context.Context)

Linux

名称:DisableFramelessWindowDecorations

名称:OnShutdown

Windows 特定选项

禁用窗口图标

设置为 true 时将使 WebView 背景透明。 这意味着如果你使用rgba(0,0,0,0),主窗口将显示。 通常与窗口半透明结合使用以制作冰霜效果的应用程序。

类型:int

禁用无边框窗口装饰

将此设置为 true 将使窗口半透明。 通常与网页透明 结合使用以制作冰霜效果的应用程序。

类型:int

Webview 用户数据路径

这定义了应用程序应该使用的主题:

类型:int

主题

将此设置为true将移除无边框模式下的窗口装饰。 这意味着将不会有Aero 阴影圆角显示在窗口上。 请注意,圆角只在 Windows 11 上支持。

类型:int

自定义主题

这定义了 WebView2 存储用户数据的路径。 如果为空将使用%APPDATA%\[BinaryName.exe]

类型:string

消息

This defines the path to a directory with WebView2 executable files and libraries. If empty, webview2 installed in the system will be used. If empty, webview2 installed in the system will be used.

Important information about distribution of fixed version runtime:

类型:string

标题栏

TitleBar 结构提供了配置标题栏外观的能力。

名称:Appearance

描述
SystemDefault默认. 主题将基于系统默认值。 The theme will be based on the system default. The theme will be based on the system default. 如果用户更改了他们的主题,应用程序将更新以使用新设置 The theme will be based on the system default. 如果用户更改了他们的主题,应用程序将更新以使用新设置 The theme will be based on the system default. 如果用户更改了他们的主题,应用程序将更新以使用新设置
Dark该应用程序将只使用深色主题
Light从样式掩码中移除 NSWindowStyleMaskTitled

类型:*mac.TitleBar

外观

类型:*mac.Options

类型:bool

Appearance 用于根据 Apple 的 NSAppearance 名称设置应用程序的样式。

外观

CustomTheme 结构使用 int32 指定颜色值. 这些是非标准 Windows 格式: 0x00BBGGAA。 These are in the standard(!) Windows format of: 0x00BBGGAA. These are in the standard(!) Windows format of: 0x00BBGGAA. 提供了一个辅助函数来将 RGB 转换为这种格式:windows.RGB(r,g,b uint8)

名称:WindowIsTranslucent

type ThemeSettings struct {
DarkModeTitleBar int32
DarkModeTitleBarInactive int32
DarkModeTitleText int32
DarkModeTitleTextInactive int32
DarkModeBorder int32
DarkModeBorderInactive int32
LightModeTitleBar int32
LightModeTitleBarInactive int32
LightModeTitleText int32
LightModeTitleTextInactive int32
LightModeBorder int32
LightModeBorderInactive int32
}

名称:Mac

    CustomTheme: &windows.ThemeSettings{
// Theme to use when window is active
DarkModeTitleBar: windows.RGB(255, 0, 0), // Red
DarkModeTitleText: windows.RGB(0, 255, 0), // Green
DarkModeBorder: windows.RGB(0, 0, 255), // Blue
LightModeTitleBar: windows.RGB(200, 200, 200),
LightModeTitleText: windows.RGB(20, 20, 20),
LightModeBorder: windows.RGB(200, 200, 200),
// Theme to use when window is inactive
DarkModeTitleBarInactive: windows.RGB(128, 0, 0),
DarkModeTitleTextInactive: windows.RGB(0, 128, 0),
DarkModeBorderInactive: windows.RGB(0, 0, 128),
LightModeTitleBarInactive: windows.RGB(100, 100, 100),
LightModeTitleTextInactive: windows.RGB(10, 10, 10),
LightModeBorderInactive: windows.RGB(100, 100, 100),
},

网页透明

一个如果找不到有效的 webview2 运行时,webview2 安装程序所使用的字符串结构。

名称:About

您可以选择支持的任意语言定制此选项。

窗口半透明

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. The default value (0) will perform redraws as fast as it can.

Type: *mac.Options

关于

您可以指定应用程序的外观

类型:bool

OnResume

“关于”菜单项将出现在应用程序菜单中:

类型:bool

Mac 特定选项

TitleBar

The TitleBar struct provides the ability to configure the look and feel of the title bar.

类型:bool

Appearance

Appearance is used to set the style of your app in accordance with Apple's NSAppearance names.

类型:string

禁用窗口图标

设置为 true 时将使 WebView 背景透明。 这意味着如果你使用rgba(0,0,0,0),主窗口将显示。 通常与窗口半透明结合使用以制作冰霜效果的应用程序。

类型:int

禁用无边框窗口装饰

将此设置为 true 将使窗口半透明。 通常与网页透明 结合使用以制作冰霜效果的应用程序。

类型:int

About

This configuration lets you set the title, message and icon for the "About" menu item in the app menu created by the "AppMenu" role.

名称:CustomTheme

标题栏结构

预设的标题栏设置可用:

type TitleBar struct {
TitlebarAppearsTransparent bool
HideTitle bool
HideTitleBar bool
FullSizeContent bool
UseToolbar bool
HideToolbarSeparator bool
}
设置描述
TitlebarAppearsTransparent使标题栏透明。 This has the effect of hiding the titlebar and the content fill the window. This has the effect of hiding the titlebar and the content fill the window. Apple Docs
HideTitle隐藏窗口的标题。 Apple Docs
HideTitleBarRemoves NSWindowStyleMaskTitled from the style mask
FullSizeContent使 webview 填满整个窗口。 Apple Docs
UseToolbar向窗口添加默认工具栏。 Apple Docs
HideToolbarSeparator删除工具栏下方的线条。 Apple Docs

Preconfigured titlebar settings are available:

描述
mac.TitleBarDefault()
mac.TitleBarHidden()
mac.TitleBarHiddenInset()

名称:Mac

Mac: &mac.Options{
TitleBar: mac.TitleBarHiddenInset(),
}

Click here for some inspiration on customising the titlebar.

外观类型

You can specify the application's appearance.

描述
DefaultAppearance使用默认系统值
NSAppearanceNameAqua标准日间系统外观
NSAppearanceNameDarkAqua标准黑夜系统外观
NSAppearanceNameVibrantLight轻盈灵动的外观
NSAppearanceNameAccessibilityHighContrastAqua标准白天系统外观的高对比度版本
NSAppearanceNameAccessibilityHighContrastDarkAqua标准黑夜系统外观的高对比度版本
NSAppearanceNameAccessibilityHighContrastVibrantLight轻盈灵动外观的高对比度版本
NSAppearanceNameAccessibilityHighContrastVibrantDark深色活力外观的高对比度版本

名称:Mac

Mac: &mac.Options{
Appearance: mac.NSAppearanceNameDarkAqua,
}

关于结构

type AboutInfo struct {
Title string
Message string
Icon []byte
}

如果提供了这些设置,“关于”菜单项将出现在应用程序菜单中(使用AppMenu role 时)。 建议这样配置:

//go:embed build/appicon.png
var icon []byte

func main() {
err := wails.Run(&options.App{
...
Mac: &mac.Options{
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
})
Mac: &mac.Options{
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
})
Mac: &mac.Options{
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
})

The "About" menu item will appear in the app menu:


When clicked, that will open an about message box:


Linux 特定选项

Icon

设置代表窗口的图标。 当窗口最小化(也称为图标化)时使用此图标。

名称:Appearance

一些窗口管理器或桌面环境也可能将其放置在窗口框架中,或在其他上下文中显示。 在其他情况下,根本不使用该图标,因此您的预计情况可能会有所不同。

注意:Wayland 上的 Gnome 至少不显示此图标。 要在那里有一个应用程序图标,必须使用一个.desktop文件。 在 KDE 上它应该可以工作。

图标应该以自然绘制的任何尺寸提供;也就是说,在传递图像之前不要缩放图像。 缩放将延迟到当所需的最终尺寸已知的最后一刻,以获得最佳质量。