options.App
结构包含应用程序配置。 它被传递给 wails.Run()
方法:
import (
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
"github.com/wailsapp/wails/v2/pkg/options/linux"
"github.com/wailsapp/wails/v2/pkg/options/mac"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
func main() {
err := wails.Run(&options.App{
Title: "Menus Demo",
Width: 800,
Height: 600,
DisableResize: false,
Fullscreen: false,
WindowStartState: options.Maximised,
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,
AssetServer: &assetserver.Options{
Assets: assets,
Handler: assetsHandler,
Middleware: assetsMidldeware,
},
Menu: app.applicationMenu(),
Logger: nil,
LogLevel: logger.DEBUG,
LogLevelProduction: logger.ERROR,
OnStartup: app.startup,
OnDomReady: app.domready,
OnShutdown: app.shutdown,
OnBeforeClose: app.beforeClose,
CSSDragProperty: "--wails-draggable",
CSSDragValue: "drag",
EnableDefaultContextMenu: false,
EnableFraudulentWebsiteDetection: false,
Bind: []interface{}{
app,
},
EnumBind: []interface{}{
AllWeekdays,
},
ErrorFormatter: func(err error) any { return err.Error() },
SingleInstanceLock: &options.SingleInstanceLock{
UniqueId: "c9c8fd93-6758-4144-87d1-34bdb0a8bd60",
OnSecondInstanceLaunch: app.onSecondInstanceLaunch,
},
DragAndDrop: &options.DragAndDrop{
EnableFileDrop: false,
DisableWebViewDrop: false,
CSSDropProperty: "--wails-drop-target",
CSSDropValue: "drop",
},
Windows: &windows.Options{
WebviewIsTransparent: false,
WindowIsTranslucent: false,
BackdropType: windows.Mica,
DisablePinchZoom: 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),
},
// ZoomFactor is the zoom factor for the WebView2. 这是匹配 Edge 用户激活放大或缩小的选项
ZoomFactor: float64,
// IsZoomControlEnabled enables the zoom factor to be changed by the user.
IsZoomControlEnabled: bool,
// User messages that can be customised
Messages: *windows.Messages
// OnSuspend is called when Windows enters low power mode
OnSuspend: func()
// OnResume is called when Windows resumes from low power mode
OnResume: func(),
// Disable GPU hardware acceleration for the webview
WebviewGpuDisabled: false,
},
Mac: &mac.Options{
TitleBar: &mac.TitleBar{
TitlebarAppearsTransparent: true,
HideTitle: false,
HideTitleBar: false,
FullSizeContent: false,
UseToolbar: false,
HideToolbarSeparator: true,
OnFileOpen: app.onFileOpen,
OnUrlOpen: app.onUrlOpen,
},
Appearance: mac.NSAppearanceNameDarkAqua,
WebviewIsTransparent: true,
WindowIsTranslucent: false,
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
Linux: &linux.Options{
Icon: icon,
WindowIsTranslucent: false,
WebviewGpuPolicy: linux.WebviewGpuPolicyAlways,
ProgramName: "wails"
},
Debug: options.Debug{
OpenInspectorOnStartup: false,
},
})
if err != nil {
log.Fatal(err)
}
}
窗口标题栏中显示的文本。
Title
string
窗口的初始宽度。
Width
int
1024
窗口的初始高度。
Height
int
768
这将设置窗口的最小宽度。 如果给出的值 Width
小于这个值,窗口将被设置为 MinWidth
默认值。
MinWidth
int
这将设置窗口的最小高度。 如果给出的值 Height
小于这个值,窗口将被设置为 MinHeight
默认值。
MinHeight
int
这将设置窗口的最大宽度。 如果给出的值 Width
大于这个值,窗口将被设置为 MaxWidth
默认值。
名称:MaxWidth
类型:int
这将设置窗口的最大高度。 如果给出的值 Height
大于这个值,窗口将被设置为 MaxHeight
默认值。
名称:MaxHeight
类型:int
默认情况下,主窗口可调整大小。 将此设置为 true
将使其保持固定大小。
DisableResize
bool
定义窗口在启动时应如何呈现。
值 | Win | Mac | Lin |
---|---|---|---|
Fullscreen (全屏) |
✅ | ✅ | ✅ |
Maximised (最大化) |
✅ | ✅ | ✅ |
Minimised (最小化) |
✅ | ❌ | ✅ |
WindowStartState
options.WindowStartState
设置为true
时,窗口将没有边框或标题栏。
Frameless
bool
设置为 true
时,应用程序将被隐藏。
StartHidden
bool
默认情况下,关闭窗口将关闭应用程序。 将此设置为 true
意味着关闭窗口将隐藏窗口。
HideWindowOnClose
bool
此值是窗口的默认背景颜色。 示例:options.NewRGBA(255,0,0,128)
,红色,透明度为 50%
BackgroundColour
*options.RGBA
white
窗口在失去焦点时应保持在其他窗口之上。
名称:AlwaysOnTop
类型:bool
应用程序要使用的菜单。
Menu
*menu.Menu
应用程序要使用的记录器。
Logger
logger.Logger
Logs to Stdout
默认日志级别。
LogLevel
logger.LogLevel
Info
, 生产模式为 Error
生产构建的默认日志级别。
LogLevelProduction
logger.LogLevel
Error
此回调在前端创建之后调用,但在 index.html
加载之前调用。 它提供了应用程序上下文。
OnStartup
func(ctx context.Context)
在前端加载完毕 index.html
及其资源后调用此回调。 它提供了应用程序上下文。
OnDomReady
func(ctx context.Context)
在前端被销毁之后,应用程序终止之前,调用此回调。 它提供了应用程序上下文。
OnShutdown
func(ctx context.Context)
如果设置了此回调,它将在通过单击窗口关闭按钮或调用runtime.Quit
即将退出应用程序时被调用。
OnBeforeClose
func(ctx context.Context) bool
true
将导致应用程序继续,false
将继续正常关闭。这有助于与用户确认他们希望退出程序。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?",
})
if err != nil {
return false
}
return dialog != "Yes"
}
指示用于标识哪些元素可用于拖动窗口的 CSS 属性。 默认值:--wails-draggable
CSSDragProperty
string
指示 CSSDragProperty
样式应该具有什么值才能拖动窗口。 默认值:drag
CSSDragValue
string
EnableFraudulentWebsiteDetection
启用了欺诈性内容的扫描服务,如恶意软件或网络钓鱼尝试。这些服务可能会从您的应用程序发送信息,如导航到的URL,以及可能的其他内容,发送到苹果和微软的云服务。
EnableFraudulentWebsiteDetection
bool
定义需要绑定到前端的方法的结构体实例的切片。
Bind
[]interface{}
需要绑定到前端的枚举数组的切片。
EnumBind
[]interface{}
启用单实例锁定。这意味着您的应用程序一次只能运行一个实例。
名称:SingleInstanceLock
类型:*options.SingleInstanceLock
此ID用于在Windows和macOS上生成互斥名称,在Linux上生成dbus名称。使用UUID来确保ID是唯一的。
名称:UniqueId
类型:string
启动应用程序的第二个实例时调用的回调。
名称:OnSecondInstanceLaunch
类型:func(secondInstanceData SecondInstanceData)
定义窗口上拖放事件的行为。
DragAndDrop
options.DragAndDrop
EnableFileDrop
启用了wails的拖放功能,该功能可以返回文件的绝对路径中的拖放。
EnableFileDrop
bool
false
Windows
*windows.Options
当使用0
的alpha值时,将此设置为true
将使webview背景透明。这意味着,如果您在CSS中使用rgba(0,0,0,0)
作为background-color
,主机窗口将显示。
名称:WebviewIsTransparent
类型:bool
将此设置为true
将使窗口背景半透明。通常与WebviewIsTransparent
结合使用。
名称:WindowIsTranslucent
类型:bool
将此设置为true
将删除标题栏左上角的图标。
名称:DisableWindowIcon
类型:bool