mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 21:29:09 +08:00
973 lines
37 KiB
Plaintext
973 lines
37 KiB
Plaintext
---
|
||
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,
|
||
},
|
||
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<br/> 类型:`string`
|
||
|
||
### 宽度
|
||
|
||
窗口的初始宽度。
|
||
|
||
名称:Width<br/> 类型:`int`<br/> 默认值:1024.
|
||
|
||
### 高度
|
||
|
||
窗口的初始高度。
|
||
|
||
名称:Height<br/> 类型:`int`<br/> 默认值:768
|
||
|
||
### 禁用调整窗口尺寸
|
||
|
||
默认情况下,主窗口可调整大小。 将此设置为 `true` 将使其保持固定大小。
|
||
|
||
名称:DisableResize<br/> 类型:`bool`
|
||
|
||
### 全屏
|
||
|
||
已弃用:请使用 [窗口启动状态](#窗口启动状态).
|
||
|
||
### 窗口启动状态
|
||
|
||
定义窗口在启动时应如何呈现。
|
||
|
||
| 值 | Win | Mac | Lin |
|
||
| -------------- | --- | --- | --- |
|
||
| Fullscreen(全屏) | ✅ | ✅ | ✅ |
|
||
| Maximised(最大化) | ✅ | ✅ | ✅ |
|
||
| Minimised(最小化) | ✅ | ❌ | ✅ |
|
||
|
||
名称:WindowStartState<br/> 类型:`options.WindowStartState`
|
||
|
||
### 无边框
|
||
|
||
设置为`true`时,窗口将没有边框或标题栏。 另请参阅 [无边框窗口](../guides/frameless)。
|
||
|
||
名称:Frameless<br/> 类型:`bool`
|
||
|
||
### 最小宽度
|
||
|
||
这将设置窗口的最小宽度。 如果给出的值 `Width` 小于这个值,窗口将被设置为 `MinWidth` 默认值。
|
||
|
||
名称:MinWidth<br/> 类型:`int`
|
||
|
||
### 最小高度
|
||
|
||
这将设置窗口的最小高度。 如果给出的值 `Height` 小于这个值,窗口将被设置为 `MinHeight` 默认值。
|
||
|
||
名称:MinHeight<br/> 类型:`int`
|
||
|
||
### 最大宽度
|
||
|
||
这将设置窗口的最大宽度。 如果给出的值 `Width` 大于这个值,窗口将被设置为 `MaxWidth` 默认值。
|
||
|
||
名称:MaxWidth<br/> 类型:`int`
|
||
|
||
### 最大高度
|
||
|
||
这将设置窗口的最大高度。 如果给出的值 `Height` 大于这个值,窗口将被设置为 `MaxHeight` 默认值。
|
||
|
||
名称:MaxHeight<br/> 类型:`int`
|
||
|
||
### 启动时隐藏窗口
|
||
|
||
设置为 `true` 时,应用程序将被隐藏,直到调用 [显示窗口](../reference/runtime/window#显示窗口)。
|
||
|
||
名称:StartHidden<br/> 类型:`bool`
|
||
|
||
### 关闭时隐藏窗口
|
||
|
||
默认情况下,关闭窗口将关闭应用程序。 将此设置为 `true` 意味着关闭窗口将隐藏窗口。
|
||
|
||
隐藏窗口。
|
||
|
||
名称:HideWindowOnClose<br/> 类型:`bool`
|
||
|
||
### 背景颜色
|
||
|
||
此值是窗口的默认背景颜色。 示例:options.NewRGBA(255,0,0,128) - 红色,透明度为 50%
|
||
|
||
名称:BackgroundColour<br/> 类型:`*options.RGBA`<br/> 默认值:white
|
||
|
||
### 窗口固定在最顶层
|
||
|
||
窗口在失去焦点时应保持在其他窗口之上。
|
||
|
||
名称:AlwaysOnTop<br/> 类型:`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<br/> 类型: `*assetserver.Options`
|
||
|
||
#### 资产
|
||
|
||
应用程序要使用的静态前端资产。
|
||
|
||
首先尝试从 `fs.FS` 提供 GET 请求。 如果 `fs.FS` 为该文件返回 `os.ErrNotExist`,则请求处理将回退到 [处理程序](#处理程序) 并尝试服务来自它的 GET 请求。
|
||
|
||
如果设置为 nil,则所有 GET 请求都将转发给 [处理程序](#处理程序)。
|
||
|
||
名称: Assets<br/> 类型: `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<br/> 类型:`http.Handler`
|
||
|
||
#### 中间件
|
||
|
||
中间件是一个 HTTP 中间件,它允许挂钩到资产服务器请求链。 它允许动态跳过默认请求处理程序,例如实现专门的路由等。 调用中间件来构建资产服务器使用的新 `http.Handler`,它还接收资产服务器使用的默认处理程序作为参数。
|
||
|
||
如果未定义,则执行默认的资产服务器请求链。
|
||
|
||
名称: Middleware<br/> 类型: `assetserver.Middleware`
|
||
|
||
### 菜单
|
||
|
||
应用程序要使用的菜单。 [菜单参考](../reference/runtime/menu) 中有关菜单的更多详细信息。
|
||
|
||
:::note
|
||
|
||
在 Mac 上,如果未指定菜单,将创建一个默认菜单。
|
||
|
||
:::
|
||
|
||
名称:Menu<br/> 类型:`*menu.Menu`
|
||
|
||
### 日志
|
||
|
||
应用程序要使用的记录器。 有关日志记录的更多详细信息,请参阅 [日志参考](../reference/runtime/log)。
|
||
|
||
名称:Logger<br/> 类型:`logger.Logger`<br/> 默认值:Logs to Stdout
|
||
|
||
### 日志级别
|
||
|
||
默认日志级别。 有关日志记录的更多详细信息,请参阅 [日志参考](../reference/runtime/log)。
|
||
|
||
名称:LogLevel<br/> 类型:`logger.LogLevel`<br/> 默认值:开发模式为 `Info`, 生产模式为 `Error`
|
||
|
||
### 生产日志级别
|
||
|
||
生产构建的默认日志级别。 有关日志记录的更多详细信息,请参阅 [日志参考](../reference/runtime/log)。
|
||
|
||
名称:LogLevelProduction<br/> 类型:`logger.LogLevel`<br/> 默认值:`Error`
|
||
|
||
### 应用启动回调
|
||
|
||
此回调在前端创建之后调用,但在 `index.html` 加载之前调用。 它提供了应用程序上下文。
|
||
|
||
名称:OnStartup<br/> 类型:`func(ctx context.Context)`
|
||
|
||
### 前端 Dom 加载完成回调
|
||
|
||
在前端加载完毕 `index.html` 及其资源后调用此回调。 它提供了应用程序上下文。
|
||
|
||
名称:OnDomReady<br/> 类型:`func(ctx context.Context)`
|
||
|
||
### 应用退出回调
|
||
|
||
在前端被销毁之后,应用程序终止之前,调用此回调。 它提供了应用程序上下文。
|
||
|
||
名称:OnShutdown<br/> 类型:`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<br/> 类型:`func(ctx context.Context) bool`
|
||
|
||
### CSS 拖动属性
|
||
|
||
指示用于标识哪些元素可用于拖动窗口的 CSS 属性。 默认值:`--wails-draggable`
|
||
|
||
名称:CSSDragProperty<br/> 类型:`string`
|
||
|
||
### CSS 拖动值
|
||
|
||
指示 `CSSDragProperty` 样式应该具有什么值才能拖动窗口。 默认值:`drag`
|
||
|
||
名称:CSSDragValue<br/> 类型:`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 :<br/> 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<br/> Type: `bool`
|
||
|
||
### 启用欺诈网站检测
|
||
|
||
EnableFraudulentWebsiteDetection 启用针对欺诈内容(例如恶意软件或网络钓鱼尝试)的扫描服务。 这些服务可能会从你的应用中发送信息,比如导航到苹果和微软的云服务的url和其他内容。
|
||
|
||
名称:EnableFraudulentWebsiteDetection<br/> 类型:`bool`
|
||
|
||
### 绑定
|
||
|
||
定义需要绑定到前端的方法的结构实例切片。
|
||
|
||
名称:Bind<br/> 类型:`[]interface{}`
|
||
|
||
### EnumBind
|
||
|
||
A slice of Enum arrays that need to be bound to the frontend.
|
||
|
||
Name: EnumBind<br/> 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<br/> 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<br/> 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<br/> Type: `string`
|
||
|
||
#### OnSecondInstanceLaunch
|
||
|
||
Callback that is called when a second instance of your app is launched.
|
||
|
||
Name: OnSecondInstanceLaunch<br/> Type: `func(secondInstanceData SecondInstanceData)`
|
||
|
||
### Drag and Drop
|
||
|
||
Defines the behavior of drag and drop events on the window.
|
||
|
||
Name: DragAndDrop<br/> Type: `options.DragAndDrop`
|
||
|
||
#### EnableFileDrop
|
||
|
||
EnableFileDrop enables wails' drag and drop functionality that returns the dropped in files' absolute paths.
|
||
|
||
When it is set to `true` the [runtime methods](../reference/runtime/draganddrop.mdx) can be used. <br/> Or you can listen for the `wails:file-drop` event with [runtime EventsOn method](../reference/runtime/events.mdx#eventson) both on the Javascript and GO side to implement any functionality you would like.
|
||
|
||
The event returns the coordinates of the drop and a file path slice.
|
||
|
||
Name: EnableFileDrop<br/> Type: `bool`<br/> Default: `false`
|
||
|
||
#### DisableWebViewDrop
|
||
|
||
Disables the webview's drag and drop functionality.
|
||
|
||
It can be used to prevent accidental opening of dragged in files in the webview, when there is no need for drag and drop.
|
||
|
||
Name: DisableWebViewDrop<br/> Type: `bool`<br/> Default: `false`
|
||
|
||
#### CSSDropProperty
|
||
|
||
CSS property to test for drag and drop target elements.
|
||
|
||
Name: CSSDropProperty<br/> Type: `string`<br/> Default: `--wails-drop-target`
|
||
|
||
#### CSSDropValue
|
||
|
||
The CSS Value that the CSSDropProperty must have to be a valid drop target. Default "drop"
|
||
|
||
Name: CSSDropValue<br/> Type: `string`<br/> Default: `drop`
|
||
|
||
### Windows
|
||
|
||
这定义了 [Windows 特定的选项](#windows)。
|
||
|
||
名称:Windows<br/> 类型:`*windows.Options`
|
||
|
||
#### Webview 透明
|
||
|
||
当使用 `alpha` 值 `0` 时,将此设置为 true 将使 webview 背景透明。 这意味着如果您在 CSS 中使用 `rgba(0,0,0,0)` 作为 `background-color`,则主机窗口将显示出来。 通常与 [窗口半透明](#窗口半透明) 结合使用以制作看起来冷冰冰的应用程序。
|
||
|
||
名称:WebviewIsTransparent<br/> 类型:`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<br/> 类型:`bool`
|
||
|
||
#### 背景类型
|
||
|
||
:::note
|
||
|
||
需要 Windows 11 build 22621 或更高版本。
|
||
|
||
:::
|
||
|
||
设置窗口的半透明类型。 这仅在 [窗口半透明](#窗口半透明) 设置为 `true` 时适用。
|
||
|
||
名称:BackdropType<br/> 类型:`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 的背景。 |
|
||
|
||
#### 缩放比例
|
||
|
||
名称:ZoomFactor<br/> 类型:`float64`
|
||
|
||
这定义了 WebView2 的缩放比例。 这是匹配 Edge 用户激活放大或缩小的选项
|
||
|
||
#### 启用缩放比例
|
||
|
||
名称:IsZoomControlEnabled<br/> 类型:`bool`
|
||
|
||
这将允许用户更改缩放比例。 请注意,可以在选项中设置缩放比例,但不允许在运行时更改它。 适用于屏幕固定的或类似的应用程序。
|
||
|
||
#### DisablePinchZoom
|
||
|
||
Setting this to `true` will disable pinch zoom gestures.
|
||
|
||
Name: DisablePinchZoom<br/> Type: `bool`
|
||
|
||
#### 禁用窗口图标
|
||
|
||
将此设置为 `true` 将删除标题栏左上角的图标。
|
||
|
||
名称:DisableWindowIcon<br/> 类型:`bool`
|
||
|
||
#### 禁用无边框窗口装饰
|
||
|
||
将此设置为 `true` 将移除 [无边框](#无边框) 模式下的窗口装饰。 这意味着将不会有`Aero 阴影` 和 `圆角`显示在窗口上。 请注意,'圆角' 只在 Windows 11 上支持。
|
||
|
||
名称:DisableFramelessWindowDecorations<br/> 类型:`bool`
|
||
|
||
#### Webview 用户数据路径
|
||
|
||
这定义了 WebView2 存储用户数据的路径。 如果为空将使用 `%APPDATA%\[BinaryName.exe]`。
|
||
|
||
名称:WebviewUserDataPath<br/> 类型:`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<br/> 类型:`string`
|
||
|
||
#### 主题
|
||
|
||
最低 Windows 版本:Windows 10 2004/20H1
|
||
|
||
这定义了应用程序应该使用的主题:
|
||
|
||
| 值 | 描述 |
|
||
| ------------- | -------------------------------------------- |
|
||
| SystemDefault | _默认_。 主题将基于系统默认值。 如果用户更改了他们的主题,应用程序将更新以使用新设置 |
|
||
| Dark | 该应用程序将只使用深色主题 |
|
||
| Light | 该应用程序将专门使用浅色主题 |
|
||
|
||
名称:Theme<br/> 类型:`windows.Theme`
|
||
|
||
#### 自定义主题
|
||
|
||
:::note
|
||
|
||
最低 Windows 版本:Windows 10/11 2009/21H2 Build 22000
|
||
|
||
:::
|
||
|
||
允许您为浅色和深色模式以及窗口处于活动或非活动状态的 TitleBar、TitleText 和 Border 指定自定义颜色。
|
||
|
||
名称:CustomTheme<br/> 类型:`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<br/> 类型:`*windows.Messages`
|
||
|
||
您可以选择支持的任意语言定制此选项。
|
||
|
||
#### 重置尺寸防抖间隔
|
||
|
||
ResizeDebounceMS 是调整窗口大小时去抖动 webview2 重绘的时间量。 默认值 (0) 将尽可能快地执行重绘。
|
||
|
||
名称:ResizeDebounceMS<br/> 类型:`uint16`
|
||
|
||
#### 待机回调
|
||
|
||
如果设置,当 Windows 启动切换到低功耗模式(挂起/休眠)时将调用此函数
|
||
|
||
名称:OnSuspend<br/> 类型:`func()`
|
||
|
||
#### 恢复回调
|
||
|
||
如果设置,当 Windows 从低功耗模式(挂起/休眠)恢复时将调用此函数
|
||
|
||
名称:OnResume<br/> 类型:`func()`
|
||
|
||
#### 禁用 Webview GPU 硬件加速
|
||
|
||
设置为 `true` 将禁用 webview 的 GPU 硬件加速。
|
||
|
||
名称:WebviewGpuIsDisabled<br/> 类型:`bool`
|
||
|
||
#### EnableSwipeGestures
|
||
|
||
Setting this to `true` will enable swipe gestures for the webview.
|
||
|
||
Name: EnableSwipeGestures<br/> Type: `bool`
|
||
|
||
### Mac
|
||
|
||
这定义了 [Mac 特定的选项](#mac)。
|
||
|
||
名称:Mac<br/> 类型:`*mac.Options`
|
||
|
||
#### 标题栏
|
||
|
||
TitleBar 结构提供了配置标题栏外观的能力。
|
||
|
||
名称:TitleBar<br/> 类型:[`*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<br/> 类型:[`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<br/> 类型:`bool`
|
||
|
||
#### 窗口半透明
|
||
|
||
将此设置为 `true` 将使窗口半透明。 通常与[Webview 透明](#webview-透明) 结合使用以制作冰霜效果的应用程序。
|
||
|
||
名称:WindowIsTranslucent<br/> 类型:`bool`
|
||
|
||
#### OnFileOpen
|
||
|
||
Callback that is called when a file is opened with the application.
|
||
|
||
Name: OnFileOpen<br/> Type: `func(filePath string)`
|
||
|
||
#### OnUrlOpen
|
||
|
||
Callback that is called when a URL is opened with the application.
|
||
|
||
Name: OnUrlOpen<br/> Type: `func(filePath string)`
|
||
|
||
#### Preferences
|
||
|
||
The Preferences struct provides the ability to configure the Webview preferences.
|
||
|
||
Name: Preferences<br/> 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<br/> 类型:[`*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
|
||
<div class="text--center">
|
||
<img
|
||
src={require("@site/static/img/reference/about-menu.webp").default}
|
||
class="screenshot"
|
||
/>
|
||
</div>
|
||
<br />
|
||
```
|
||
|
||
单击后,将打开一个关于消息框:
|
||
|
||
```mdx-code-block
|
||
<div class="text--center">
|
||
<img
|
||
src={require("@site/static/img/reference/about-dialog.webp").default}
|
||
width="40%"
|
||
class="screenshot"
|
||
/>
|
||
</div>
|
||
<br />
|
||
```
|
||
|
||
### Linux
|
||
|
||
这定义了 [Linux 特定的选项](#linux)。
|
||
|
||
名称:Linux<br/> 类型:`*linux.Options`
|
||
|
||
#### 图标
|
||
|
||
设置代表窗口的图标。 当窗口最小化(也称为图标化)时使用此图标。
|
||
|
||
名称:Icon<br/> 类型:`[]byte`
|
||
|
||
一些窗口管理器或桌面环境也可能将其放置在窗口框架中,或在其他上下文中显示。 在其他情况下,根本不使用该图标,因此您的预计情况可能会有所不同。
|
||
|
||
注意:Wayland 上的 Gnome 至少不显示此图标。 要在那里有一个应用程序图标,必须使用一个`.desktop`文件。 在 KDE 上它应该可以工作。
|
||
|
||
图标应该以自然绘制的任何尺寸提供;也就是说,在传递图像之前不要缩放图像。 缩放将延迟到当所需的最终尺寸已知的最后一刻,以获得最佳质量。
|
||
|
||
#### 窗口半透明
|
||
|
||
将此设置为 `true` 将使窗口半透明。 某些窗口管理员可能忽略它,或导致黑窗口。
|
||
|
||
名称:WindowIsTranslucent<br/> 类型:`bool`
|
||
|
||
#### Webview GPU 策略
|
||
|
||
该选项用于决定 webview 的硬件加速策略。
|
||
|
||
名称:WebviewGpuPolicy<br/> 类型:[`options.WebviewGpuPolicy`](#webviewgpupolicy-type)<br/> 默认:`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<br/> Type: string<br/>
|
||
|
||
### 调试
|
||
|
||
这定义了用于调试构建的 [调试特定选项](#调试)。
|
||
|
||
名称: Debug<br/> 类型: `options.Debug`
|
||
|
||
#### 启动时打开检查器
|
||
|
||
设置为 `true` 将在应用程序启动时打开 Web 检查器。
|
||
|
||
名称: OpenInspectorOnStartup<br/> 类型: `bool`
|
||
|
||
[^1]: 这需要 WebKit2GTK 2.36+ 支持,并且您的应用程序需要使用构建标签 `webkit2_36` 来构建以激活对此功能的支持。 这也会将您应用程序的 WebKit2GTK 最低要求提高到 2.36。
|
||
[^2]: 这需要 WebKit2GTK 2.40+ 支持,并且您的应用程序需要使用构建标签 `webkit2_40` 来构建以激活对此功能的支持。 这也将您的应用程序的 WebKit2GTK 最低要求提高到 2.40。
|