4、App 参数

参数

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)
    }
}

窗口相关

标题

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

尺寸相关

宽度

窗口的初始宽度。

高度

窗口的初始高度。

最小宽度

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

最小高度

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

最大宽度

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

名称:MaxWidth

类型:int

最大高度

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

名称:MaxHeight

类型:int

禁用调整窗口尺寸

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

窗口启动状态

定义窗口在启动时应如何呈现。

Win Mac Lin
Fullscreen(全屏)
Maximised(最大化)
Minimised(最小化)

无边框

设置为true时,窗口将没有边框或标题栏。

启动时隐藏窗口

设置为 true 时,应用程序将被隐藏。

关闭时隐藏窗口

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

背景颜色

此值是窗口的默认背景颜色。 示例:options.NewRGBA(255,0,0,128) ,红色,透明度为 50%

窗口固定在最顶层

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

名称:AlwaysOnTop

类型:bool

菜单

应用程序要使用的菜单。

日志相关

应用程序要使用的记录器。

日志级别

默认日志级别。

生产日志级别

生产构建的默认日志级别。

生命周期相关

应用启动回调

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

前端 Dom 加载完成回调

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

应用退出回调

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

应用关闭前回调

如果设置了此回调,它将在通过单击窗口关闭按钮或调用runtime.Quit即将退出应用程序时被调用。

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 拖动属性

指示用于标识哪些元素可用于拖动窗口的 CSS 属性。 默认值:--wails-draggable

CSS 拖动值

指示 CSSDragProperty 样式应该具有什么值才能拖动窗口。 默认值:drag

启用欺诈网站检测

EnableFraudulentWebsiteDetection启用了欺诈性内容的扫描服务,如恶意软件或网络钓鱼尝试。这些服务可能会从您的应用程序发送信息,如导航到的URL,以及可能的其他内容,发送到苹果和微软的云服务。

绑定前端相关

绑定

定义需要绑定到前端的方法的结构体实例的切片。

枚举绑定

需要绑定到前端的枚举数组的切片。

单实例锁定

启用单实例锁定。这意味着您的应用程序一次只能运行一个实例。

名称:SingleInstanceLock

类型:*options.SingleInstanceLock

独特的ID

此ID用于在Windows和macOS上生成互斥名称,在Linux上生成dbus名称。使用UUID来确保ID是唯一的。

名称:UniqueId

类型:string

在SecondInstanceLaunch上

启动应用程序的第二个实例时调用的回调。

名称:OnSecondInstanceLaunch

类型:func(secondInstanceData SecondInstanceData)

拖放

定义窗口上拖放事件的行为。

启用文件Drop

EnableFileDrop启用了wails的拖放功能,该功能可以返回文件的绝对路径中的拖放。

Windows Option

Webview 透明

当使用0的alpha值时,将此设置为true将使webview背景透明。这意味着,如果您在CSS中使用rgba(0,0,0,0)作为background-color,主机窗口将显示。

名称:WebviewIsTransparent

类型:bool

窗口透明

将此设置为true将使窗口背景半透明。通常与WebviewIsTransparent结合使用。

名称:WindowIsTranslucent

类型:bool

禁用窗口图标

将此设置为true将删除标题栏左上角的图标。

名称:DisableWindowIcon

类型:bool