--- sidebar_position: 3 --- # 参数选项 ## 应用程序参数选项 该 `Options.App` 结构包含应用程序配置。 它被传递给 `wails.Run()` 方法: ```go title="Example" 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, }, 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 ### 禁用调整窗口尺寸 默认情况下,主窗口可调整大小。 将此设置为 `true` 将使其保持固定大小。 名称:DisableResize
类型:`bool` ### 全屏 已弃用:请使用 [窗口启动状态](#窗口启动状态). ### 窗口启动状态 定义窗口在启动时应如何呈现。 | 值 | Win | Mac | Lin | | -------------- | --- | --- | --- | | Fullscreen(全屏) | ✅ | ✅ | ✅ | | Maximised(最大化) | ✅ | ✅ | ✅ | | Minimised(最小化) | ✅ | ❌ | ✅ | 名称:WindowStartState
类型:`options.WindowStartState` ### 无边框 设置为`true`时,窗口将没有边框或标题栏。 另请参阅 [无边框窗口](../guides/frameless)。 名称:Frameless
类型:`bool` ### 最小宽度 这将设置窗口的最小宽度。 如果给出的值 `Width` 小于这个值,窗口将被设置为 `MinWidth` 默认值。 名称:MinWidth
类型:`int` ### 最小高度 这将设置窗口的最小高度。 如果给出的值 `Height` 小于这个值,窗口将被设置为 `MinHeight` 默认值。 名称:MinHeight
类型:`int` ### 最大宽度 这将设置窗口的最大宽度。 如果给出的值 `Width` 大于这个值,窗口将被设置为 `MaxWidth` 默认值。 名称:MaxWidth
类型:`int` ### 最大高度 这将设置窗口的最大高度。 如果给出的值 `Height` 大于这个值,窗口将被设置为 `MaxHeight` 默认值。 名称:MaxHeight
类型:`int` ### 启动时隐藏窗口 设置为 `true` 时,应用程序将被隐藏,直到调用 [显示窗口](../reference/runtime/window#显示窗口)。 名称:StartHidden
类型:`bool` ### 关闭时隐藏窗口 默认情况下,关闭窗口将关闭应用程序。 将此设置为 `true` 意味着关闭窗口将隐藏窗口。 隐藏窗口。 名称:HideWindowOnClose
类型:`bool` ### 背景颜色 此值是窗口的默认背景颜色。 示例:options.NewRGBA(255,0,0,128) - 红色,透明度为 50% 名称:BackgroundColour
类型:`*options.RGBA`
默认值:white ### 窗口固定在最顶层 窗口在失去焦点时应保持在其他窗口之上。 名称:AlwaysOnTop
类型:`bool` ### 资产 已弃用:请在 [AssetServer 特定选项](#资产服务器) 上使用资产。 ### 资产处理程序 已弃用:请在 [AssetServer 特定选项](#资产服务器) 上使用资产处理程序。 ### 资产服务器 这定义了资产服务器特定的选项。 它允许使用静态资产自定义资产服务器,使用 `http.Handler` 动态地提供资产或使用 `assetsserver.Middleware` 钩到请求链。 并非当前支持 `http.Request` 的所有功能,请参阅以下功能矩阵: | 功能 | Win | Mac | Lin | | ----------------------- | --- | --- | ------ | | GET | ✅ | ✅ | ✅ | | POST | ✅ | ✅ | ✅ [^1] | | PUT | ✅ | ✅ | ✅ [^1] | | PATCH | ✅ | ✅ | ✅ [^1] | | DELETE | ✅ | ✅ | ✅ [^1] | | Request Headers | ✅ | ✅ | ✅ [^1] | | Request Body | ✅ | ✅ | ✅ [^2] | | Request Body Streaming | ✅ | ✅ | ✅ [^2] | | Response StatusCodes | ✅ | ✅ | ✅ [^1] | | Response Headers | ✅ | ✅ | ✅ [^1] | | Response Body | ✅ | ✅ | ✅ | | Response Body Streaming | ❌ | ✅ | ✅ | | WebSockets | ❌ | ❌ | ❌ | | HTTP Redirects 30x | ✅ | ❌ | ❌ | 名称: AssetServer
类型: `*assetserver.Options` #### 资产 应用程序要使用的静态前端资产。 首先尝试从 `fs.FS` 提供 GET 请求。 如果 `fs.FS` 为该文件返回 `os.ErrNotExist`,则请求处理将回退到 [处理程序](#处理程序) 并尝试服务来自它的 GET 请求。 如果设置为 nil,则所有 GET 请求都将转发给 [处理程序](#处理程序)。 名称: Assets
类型: `fs.FS` #### 处理程序 资产处理程序是一个通用的 `http.Handler`,用于对无法找到的资产进行后备处理。 由于 `os.ErrNotExist`,对于每个无法从 [资产](#资产) 提供服务的 GET 请求,都会调用该处理程序。 此外,所有非 GET 请求将始终从此处理程序提供服务。 如果未定义,则调用处理程序的结果如下: - GET 请求: `http.StatusNotFound` - 其他请求: `http.StatusMethodNotAllowed` :::info This does not work with vite v5.0.0+ and wails v2 due to changes in vite. Changes are planned in v3 to support similar functionality under vite v5.0.0+. If you need this feature, stay with vite v4.0.0+. See [issue 3240](https://github.com/wailsapp/wails/issues/3240) for details ::: 注意:当与前端 DevServer 结合使用时,可能会有一些限制,例如。 Vite 在不包含文件扩展名的每个路径上提供 index.html。 名称:AssetsHandler
类型:`http.Handler` #### 中间件 中间件是一个 HTTP 中间件,它允许挂钩到资产服务器请求链。 它允许动态跳过默认请求处理程序,例如实现专门的路由等。 调用中间件来构建资产服务器使用的新 `http.Handler`,它还接收资产服务器使用的默认处理程序作为参数。 如果未定义,则执行默认的资产服务器请求链。 名称: Middleware
类型: `assetserver.Middleware` ### 菜单 应用程序要使用的菜单。 [菜单参考](../reference/runtime/menu) 中有关菜单的更多详细信息。 :::note 在 Mac 上,如果未指定菜单,将创建一个默认菜单。 ::: 名称:Menu
类型:`*menu.Menu` ### 日志 应用程序要使用的记录器。 有关日志记录的更多详细信息,请参阅 [日志参考](../reference/runtime/log)。 名称:Logger
类型:`logger.Logger`
默认值:Logs to Stdout ### 日志级别 默认日志级别。 有关日志记录的更多详细信息,请参阅 [日志参考](../reference/runtime/log)。 名称:LogLevel
类型:`logger.LogLevel`
默认值:开发模式为 `Info`, 生产模式为 `Error` ### 生产日志级别 生产构建的默认日志级别。 有关日志记录的更多详细信息,请参阅 [日志参考](../reference/runtime/log)。 名称:LogLevelProduction
类型:`logger.LogLevel`
默认值:`Error` ### 应用启动回调 此回调在前端创建之后调用,但在 `index.html` 加载之前调用。 它提供了应用程序上下文。 名称:OnStartup
类型:`func(ctx context.Context)` ### 前端 Dom 加载完成回调 在前端加载完毕 `index.html` 及其资源后调用此回调。 它提供了应用程序上下文。 名称:OnDomReady
类型:`func(ctx context.Context)` ### 应用退出回调 在前端被销毁之后,应用程序终止之前,调用此回调。 它提供了应用程序上下文。 名称:OnShutdown
类型:`func(ctx context.Context)` ### 应用关闭前回调 如果设置了此回调,它将在通过单击窗口关闭按钮或调用`runtime.Quit`即将退出应用程序时被调用. 返回 `true` 将导致应用程序继续,`false` 将继续正常关闭。 返回 true 将导致应用程序继续,false 将继续正常关闭。 这有助于与用户确认他们希望退出程序。 示例: ```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?", }) if err != nil { return false } return dialog != "Yes" } ``` 名称:OnBeforeClose
类型:`func(ctx context.Context) bool` ### CSS 拖动属性 指示用于标识哪些元素可用于拖动窗口的 CSS 属性。 默认值:`--wails-draggable` 名称:CSSDragProperty
类型:`string` ### CSS 拖动值 指示 `CSSDragProperty` 样式应该具有什么值才能拖动窗口。 默认值:`drag` 名称:CSSDragValue
类型:`string` ### EnableDefaultContextMenu EnableDefaultContextMenu enables the browser's default context-menu in production. By default, the browser's default context-menu is only available in development and in a `-debug` [build](../reference/cli.mdx#build) along with the devtools inspector, Using this option you can enable the default context-menu in `production` while the devtools inspector won't be available unless the `-devtools` build flag is used. When this option is enabled, by default the context-menu will only be shown for text contexts (where Cut/Copy/Paste is needed), to override this behavior, you can use the CSS property `--default-contextmenu` on any HTML element (including the `body`) with the following values : | CSS Style | Behavior | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--default-contextmenu: auto;` | (**default**) will show the default context menu only if :
contentEditable is true OR text has been selected OR element is input or textarea | | `--default-contextmenu: show;` | will always show the default context menu | | `--default-contextmenu: hide;` | will always hide the default context menu | This rule is inherited like any normal CSS rule, so nesting works as expected. :::note This filtering functionality is only enabled in production, so in development and in debug build, the full context-menu is always available everywhere. ::: :::warning This filtering functionality is NOT a security measure, the developer should expect that the full context-menu could be leaked anytime which could contain commands like (Download image, Reload, Save webpage), if this is a concern, the developer SHOULD NOT enable the default context-menu. ::: Name: EnableDefaultContextMenu
Type: `bool` ### 启用欺诈网站检测 EnableFraudulentWebsiteDetection 启用针对欺诈内容(例如恶意软件或网络钓鱼尝试)的扫描服务。 这些服务可能会从你的应用中发送信息,比如导航到苹果和微软的云服务的url和其他内容。 名称:EnableFraudulentWebsiteDetection
类型:`bool` ### 缩放比例 名称:ZoomFactor
类型:`float64` 这定义了 WebView2 的缩放比例。 这是匹配 Edge 用户激活放大或缩小的选项 ### 启用缩放比例 名称:IsZoomControlEnabled
类型:`bool` 这将允许用户更改缩放比例。 请注意,可以在选项中设置缩放比例,但不允许在运行时更改它。 适用于屏幕固定的或类似的应用程序。 ### 绑定 定义需要绑定到前端的方法的结构实例切片。 名称:Bind
类型:`[]interface{}` ### EnumBind A slice of Enum arrays that need to be bound to the frontend. Name: EnumBind
Type: `[]interface{}` ### ErrorFormatter A function that determines how errors are formatted when returned by a JS-to-Go method call. The returned value will be marshalled as JSON. Name: ErrorFormatter
Type: `func (error) any` ### SingleInstanceLock Enables single instance locking. This means that only one instance of your application can be running at a time. Name: SingleInstanceLock
Type: `*options.SingleInstanceLock` #### UniqueId This id is used to generate the mutex name on Windows and macOS and the dbus name on Linux. Use a UUID to ensure that the id is unique. Name: UniqueId
Type: `string` #### OnSecondInstanceLaunch Callback that is called when a second instance of your app is launched. Name: OnSecondInstanceLaunch
Type: `func(secondInstanceData SecondInstanceData)` ### Windows 这定义了 [Windows 特定的选项](#windows)。 名称:Windows
类型:`*windows.Options` #### Webview 透明 当使用 `alpha` 值 `0` 时,将此设置为 true 将使 webview 背景透明。 这意味着如果您在 CSS 中使用 `rgba(0,0,0,0)` 作为 `background-color`,则主机窗口将显示出来。 通常与 [窗口半透明](#窗口半透明) 结合使用以制作看起来冷冰冰的应用程序。 名称:WebviewIsTransparent
类型:`bool` #### 窗口半透明 将此设置为 `true` 将使窗口半透明。 通常与 [Webview 透明](#webview-透明) 结合使用。 对于 build 22621 之前的 Windows 11 版本,将使用 [BlurBehind](https://learn.microsoft.com/en-us/windows/win32/dwm/blur-ovw) 方法来实现半透明,这可能会很慢。 对于构建 build 22621 之后的 Windows 11 版本,这将启用速度更快的新半透明类型。 默认情况下,使用的半透明类型将由 Windows 确定。 要对此进行配置,请使用 [背景类型](#背景类型) 选项。 名称:WindowIsTranslucent
类型:`bool` #### 背景类型 :::note 需要 Windows 11 build 22621 或更高版本。 ::: 设置窗口的半透明类型。 这仅在 [窗口半透明](#窗口半透明) 设置为 `true` 时适用。 名称:BackdropType
类型:`windows.BackdropType` 值可以是以下之一: | 值 | 描述 | | ------- | -------------------------------------------------------------------------------- | | Auto | 让 Windows 决定使用哪个背景 | | None | 不要使用半透明 | | Acrylic | 使用 [亚克力](https://learn.microsoft.com/en-us/windows/apps/design/style/acrylic) 效果 | | Mica | 使用 [Mica](https://learn.microsoft.com/en-us/windows/apps/design/style/mica) 效果 | | Tabbed | 使用 Tabbed。 这是一个类似于 Mica 的背景。 | #### DisablePinchZoom Setting this to `true` will disable pinch zoom gestures. Name: DisablePinchZoom
Type: `bool` #### 禁用窗口图标 将此设置为 `true` 将删除标题栏左上角的图标。 名称:DisableWindowIcon
类型:`bool` #### 禁用无边框窗口装饰 将此设置为 `true` 将移除 [无边框](#无边框) 模式下的窗口装饰。 这意味着将不会有`Aero 阴影` 和 `圆角`显示在窗口上。 请注意,'圆角' 只在 Windows 11 上支持。 名称:DisableFramelessWindowDecorations
类型:`bool` #### Webview 用户数据路径 这定义了 WebView2 存储用户数据的路径。 如果为空将使用 `%APPDATA%\[BinaryName.exe]`。 名称:WebviewUserDataPath
类型:`string` #### Webview 浏览器路径 这定义了带有 WebView2 可执行文件和库的目录的路径 如果为空,则使用系统中安装的 webview2 有关固定版本运行时分发的重要信息: - [如何获取和提取运行时](https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#details-about-the-fixed-version-runtime-distribution-mode) - [固定版本的已知问题](https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#known-issues-for-fixed-version) - [WebView2 Runtime 固定版本的路径不应包含 \Edge\Application](https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/webview2-idl?view=webview2-1.0.1245.22#createcorewebview2environmentwithoptions) 名称:WebviewBrowserPath
类型:`string` #### 主题 最低 Windows 版本:Windows 10 2004/20H1 这定义了应用程序应该使用的主题: | 值 | 描述 | | ------------- | -------------------------------------------- | | SystemDefault | _默认_。 主题将基于系统默认值。 如果用户更改了他们的主题,应用程序将更新以使用新设置 | | Dark | 该应用程序将只使用深色主题 | | Light | 该应用程序将专门使用浅色主题 | 名称:Theme
类型:`windows.Theme` #### 自定义主题 :::note 最低 Windows 版本:Windows 10/11 2009/21H2 Build 22000 ::: 允许您为浅色和深色模式以及窗口处于活动或非活动状态的 TitleBar、TitleText 和 Border 指定自定义颜色。 名称:CustomTheme
类型:`windows.CustomTheme` ##### 自定义主题类型 CustomTheme 结构体使用 `int32` 指定颜色值。 它们采用标准(!)Windows 格式:`0x00BBGGAA`。 These are in the standard(!) Windows format of: `0x00BBGGAA`. 提供了一个辅助函数来将 RGB 转换为这种格式:`windows.RGB(r,g,b uint8)`。 注意:任何未提供的值都将默认为黑色。 ```go 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 } ``` 示例: ```go 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 安装程序所使用的字符串结构。 名称:Messages
类型:`*windows.Messages` 您可以选择支持的任意语言定制此选项。 #### 重置尺寸防抖间隔 ResizeDebounceMS 是调整窗口大小时去抖动 webview2 重绘的时间量。 默认值 (0) 将尽可能快地执行重绘。 名称:ResizeDebounceMS
类型:`uint16` #### 待机回调 如果设置,当 Windows 启动切换到低功耗模式(挂起/休眠)时将调用此函数 名称:OnSuspend
类型:`func()` #### 恢复回调 如果设置,当 Windows 从低功耗模式(挂起/休眠)恢复时将调用此函数 名称:OnResume
类型:`func()` #### 禁用 Webview GPU 硬件加速 设置为 `true` 将禁用 webview 的 GPU 硬件加速。 名称:WebviewGpuIsDisabled
类型:`bool` #### EnableSwipeGestures Setting this to `true` will enable swipe gestures for the webview. Name: EnableSwipeGestures
Type: `bool` ### Mac 这定义了 [Mac 特定的选项](#mac)。 名称:Mac
类型:`*mac.Options` #### 标题栏 TitleBar 结构提供了配置标题栏外观的能力。 名称:TitleBar
类型:[`*mac.TitleBar`](#标题栏结构体) ##### 标题栏结构体 可以使用 TitleBar 选项自定义应用程序的标题栏: ```go type TitleBar struct { TitlebarAppearsTransparent bool HideTitle bool HideTitleBar bool FullSizeContent bool UseToolbar bool HideToolbarSeparator bool } ``` | 设置 | 描述 | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | TitlebarAppearsTransparent | 使标题栏透明。 这具有隐藏标题栏和内容填充窗口的效果。 [苹果文档](https://developer.apple.com/documentation/appkit/nswindow/1419167-titlebarappearstransparent?language=objc) | | HideTitle | 隐藏窗口的标题。 [苹果文档](https://developer.apple.com/documentation/appkit/nswindowtitlevisibility?language=objc) | | HideTitleBar | 从 style mask 中删除 [NSWindowStyleMaskTitled](https://developer.apple.com/documentation/appkit/nswindowstylemask/nswindowstylemasktitled/) | | FullSizeContent | 使 webview 填满整个窗口。 [苹果文档](https://developer.apple.com/documentation/appkit/nswindowstylemask/nswindowstylemaskfullsizecontentview) | | UseToolbar | 向窗口添加默认工具栏。 [苹果文档](https://developer.apple.com/documentation/appkit/nstoolbar?language=objc) | | HideToolbarSeparator | 删除工具栏下方的线条。 [苹果文档](https://developer.apple.com/documentation/appkit/nstoolbar/1516954-showsbaselineseparator?language=objc) | 预配置的标题栏设置可用: | 设置 | 示例 | | --------------------------- | ---------------------------------------------- | | `mac.TitleBarDefault()` | ![](/img/reference/titlebar-default.webp) | | `mac.TitleBarHidden()` | ![](/img/reference/titlebar-hidden.webp) | | `mac.TitleBarHiddenInset()` | ![](/img/reference/titlebar-hidden-inset.webp) | 示例: ```go Mac: &mac.Options{ TitleBar: mac.TitleBarHiddenInset(), } ``` 单击 [此处](https://github.com/lukakerr/NSWindowStyles) 获取有关自定义标题栏的一些灵感。 #### 外观 Appearance 用于根据 Apple 的 [NSAppearance](https://developer.apple.com/documentation/appkit/nsappearancename?language=objc) 名称设置您的应用程序的样式。 名称:Appearance
类型:[`mac.AppearanceType`](#外观类型) ##### 外观类型 您可以指定应用程序的 [外观](https://developer.apple.com/documentation/appkit/nsappearance?language=objc)。 | 值 | 描述 | | ----------------------------------------------------- | --------------- | | DefaultAppearance | 使用默认系统值 | | NSAppearanceNameAqua | 标准日间系统外观 | | NSAppearanceNameDarkAqua | 标准黑夜系统外观 | | NSAppearanceNameVibrantLight | 轻盈灵动的外观 | | NSAppearanceNameAccessibilityHighContrastAqua | 标准白天系统外观的高对比度版本 | | NSAppearanceNameAccessibilityHighContrastDarkAqua | 标准黑夜系统外观的高对比度版本 | | NSAppearanceNameAccessibilityHighContrastVibrantLight | 轻盈灵动外观的高对比度版本 | | NSAppearanceNameAccessibilityHighContrastVibrantDark | 深色活力外观的高对比度版本 | 示例: ```go Mac: &mac.Options{ Appearance: mac.NSAppearanceNameDarkAqua, } ``` #### Webview 透明 当使用 `alpha` 值 `0` 时,将此设置为 true 将使 webview 背景透明。 这意味着如果您在 CSS 中使用 `rgba(0,0,0,0)` 作为 `background-color`,则主机窗口将显示出来。 通常与 [窗口半透明](#窗口半透明-1) 结合使用以制作看起来冷冰冰的应用程序。 名称:WebviewIsTransparent
类型:`bool` #### 窗口半透明 将此设置为 `true` 将使窗口半透明。 通常与[Webview 透明](#webview-透明) 结合使用以制作冰霜效果的应用程序。 名称:WindowIsTranslucent
类型:`bool` #### OnFileOpen Callback that is called when a file is opened with the application. Name: OnFileOpen
Type: `func(filePath string)` #### OnUrlOpen Callback that is called when a URL is opened with the application. Name: OnUrlOpen
Type: `func(filePath string)` #### Preferences The Preferences struct provides the ability to configure the Webview preferences. Name: Preferences
Type: [`*mac.Preferences`](#preferences-struct) ##### Preferences struct You can specify the webview preferences. ```go type Preferences struct { TabFocusesLinks u.Bool TextInteractionEnabled u.Bool FullscreenEnabled u.Bool } ``` | 设置 | 描述 | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TabFocusesLinks | A Boolean value that indicates whether pressing the tab key changes the focus to links and form controls. [Apple Docs](https://developer.apple.com/documentation/webkit/wkpreferences/2818595-tabfocuseslinks?language=objc) | | TextInteractionEnabled | A Boolean value that indicates whether to allow people to select or otherwise interact with text. [Apple Docs](https://developer.apple.com/documentation/webkit/wkpreferences/3727362-textinteractionenabled?language=objc) | | FullscreenEnabled | A Boolean value that indicates whether a web view can display content full screen. [Apple Docs](https://developer.apple.com/documentation/webkit/wkpreferences/3917769-elementfullscreenenabled?language=objc) | 示例: ```go Mac: &mac.Options{ Preferences: &mac.Preferences{ TabFocusesLinks: mac.Enabled, TextInteractionEnabled: mac.Disabled, FullscreenEnabled: mac.Enabled, } } ``` #### 关于 此配置允许您在“AppMenu”角色创建的应用程序菜单中设置“关于”菜单项的标题、消息和图标。 名称:About
类型:[`*mac.AboutInfo`](#关于结构体) ##### 关于结构体 ```go type AboutInfo struct { Title string Message string Icon []byte } ``` 如果提供了这些设置,“关于”菜单项将出现在应用程序菜单中(使用`AppMenu` role 时)。 建议这样配置: ```go //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, }, }, }) ``` “关于”菜单项将出现在应用程序菜单中: ```mdx-code-block

``` 单击后,将打开一个关于消息框: ```mdx-code-block

``` ### Linux 这定义了 [Linux 特定的选项](#linux)。 名称:Linux
类型:`*linux.Options` #### 图标 设置代表窗口的图标。 当窗口最小化(也称为图标化)时使用此图标。 名称:Icon
类型:`[]byte` 一些窗口管理器或桌面环境也可能将其放置在窗口框架中,或在其他上下文中显示。 在其他情况下,根本不使用该图标,因此您的预计情况可能会有所不同。 注意:Wayland 上的 Gnome 至少不显示此图标。 要在那里有一个应用程序图标,必须使用一个`.desktop`文件。 在 KDE 上它应该可以工作。 图标应该以自然绘制的任何尺寸提供;也就是说,在传递图像之前不要缩放图像。 缩放将延迟到当所需的最终尺寸已知的最后一刻,以获得最佳质量。 #### 窗口半透明 将此设置为 `true` 将使窗口半透明。 某些窗口管理员可能忽略它,或导致黑窗口。 名称:WindowIsTranslucent
类型:`bool` #### Webview GPU 策略 该选项用于决定 webview 的硬件加速策略。 名称:WebviewGpuPolicy
类型:[`options.WebviewGpuPolicy`](#webviewgpupolicy-type)
默认:`WebviewGpuPolicyAlways` ##### Webview GPU 策略类型 | 值 | 描述 | | ------------------------ | --------------------- | | WebviewGpuPolicyAlways | 始终启用硬件加速 | | WebviewGpuPolicyOnDemand | 根据 Web 内容的请求启用/禁用硬件加速 | | WebviewGpuPolicyNever | 硬件加速始终处于禁用状态 | #### ProgramName This option is used to set the program's name for the window manager via GTK's g_set_prgname(). This name should not be localized, [see the docs](https://docs.gtk.org/glib/func.set_prgname.html). When a .desktop file is created this value helps with window grouping and desktop icons when the .desktop file's `Name` property differs form the executable's filename. Name: ProgramName
Type: string
### 调试 这定义了用于调试构建的 [调试特定选项](#调试)。 名称: Debug
类型: `options.Debug` #### 启动时打开检查器 设置为 `true` 将在应用程序启动时打开 Web 检查器。 名称: OpenInspectorOnStartup
类型: `bool` [^1]: 这需要 WebKit2GTK 2.36+ 支持,并且您的应用程序需要使用构建标签 `webkit2_36` 来构建以激活对此功能的支持。 这也会将您应用程序的 WebKit2GTK 最低要求提高到 2.36。 [^2]: 这需要 WebKit2GTK 2.40+ 支持,并且您的应用程序需要使用构建标签 `webkit2_40` 来构建以激活对此功能的支持。 这也将您的应用程序的 WebKit2GTK 最低要求提高到 2.40。