---
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()` |  |
| `mac.TitleBarHidden()` |  |
| `mac.TitleBarHiddenInset()` |  |
示例:
```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