Tauri(三)—— 先搞定窗口配置

1,195 阅读6分钟

前言

在开发桌面端应用时,理解并正确配置窗口参数是至关重要的,这可以帮助我们更高效地实现功能和优化用户体验。

以下内容根据 Tauri 2 版本的官方文档整理了 WindowConfig 配置参数的详细说明,包括每个参数的功能描述、默认值及适用性。

基本窗口行为

参数名称类型描述默认值
acceptFirstMouseboolean窗口首次点击时是否响应鼠标事件(仅 macOS 支持)。false
alwaysOnBottomboolean窗口是否始终置于其他窗口下方。false
alwaysOnTopboolean窗口是否始终置于其他窗口上方。false
backgroundColorstring窗口背景颜色(十六进制格式)。无默认值
centerboolean窗口是否居中显示。false
closableboolean窗口是否可关闭。true
contentProtectedboolean窗口内容是否保护,防止截图或录屏(部分平台支持)。false
decorationsboolean是否显示窗口装饰(如标题栏和边框)。true
dragDropEnabledboolean是否启用拖放功能。true
focusboolean窗口是否在启动时获取焦点。true
fullscreenboolean是否启动全屏模式。false
hiddenTitleboolean是否隐藏窗口的标题栏(仅 macOS 支持)。false
incognitoboolean是否启用隐私模式,防止记录浏览数据。false
labelstring窗口的唯一标识符,用于程序中引用该窗口(必填)。无默认值
maximizableboolean窗口是否可最大化。true
maximizedboolean窗口是否启动时最大化。false
minimizableboolean窗口是否可最小化。true
resizableboolean窗口是否可调整大小。true
skipTaskbarboolean是否从任务栏中隐藏窗口(部分平台支持)。false
tabbingIdentifierstring窗口的分组标识符(仅 macOS 支持)。无默认值
theme"light""dark"窗口的默认主题,仅部分平台支持。系统默认主题
titlestring窗口标题。"Tauri App"
titleBarStylestring窗口标题栏样式(部分平台支持,如 macOS)。默认样式
transparentboolean窗口是否透明(部分平台支持)。false
userAgentstring窗口的自定义 User-Agent。无默认值
visibleboolean窗口是否可见。true
visibleOnAllWorkspacesboolean是否在所有工作区显示窗口(仅 macOS 支持)。false
windowClassnamestring自定义窗口类名(仅 Windows 支持)。无默认值
zoomHotkeysEnabledboolean是否启用窗口缩放快捷键。true

尺寸与位置

参数名称类型描述默认值
widthnumber窗口的初始宽度(单位:像素)。800
heightnumber窗口的初始高度(单位:像素)。600
minWidthnumber窗口的最小宽度(单位:像素)。无默认值
minHeightnumber窗口的最小高度(单位:像素)。无默认值
maxWidthnumber窗口的最大宽度(单位:像素)。无默认值
maxHeightnumber窗口的最大高度(单位:像素)。无默认值
xnumber窗口初始的 X 轴位置(相对于屏幕左上角)。居中
ynumber窗口初始的 Y 轴位置(相对于屏幕左上角)。居中

浏览器特性

参数名称类型描述默认值
additionalBrowserArgsstring启动浏览器时附加的命令行参数。无默认值
browserExtensionsEnabledboolean是否启用浏览器扩展支持。false
proxyUrlstring自定义代理 URL。无默认值
useHttpsSchemeboolean是否强制使用 HTTPS。false

窗口效果

参数名称类型描述默认值
shadowboolean窗口是否显示阴影(部分平台支持)。true
windowEffectsstring自定义窗口效果(如模糊、透明等,部分平台支持)。无默认值

JSON 格式

src-tauri/tauri.conf.json

{
  "$schema": "https://schema.tauri.app/config/2.0.0",
  "productName": "Coco AI",
  "version": "0.1.0",
  "identifier": "rs.coco.app",
  "build": {
    "beforeDevCommand": "pnpm dev",
    "devUrl": "http://localhost:1420",
    "beforeBuildCommand": "pnpm build",
    "frontendDist": "../dist"
  },
  "app": {
    "macOSPrivateApi": true,
    "windows": [
      {
        "acceptFirstMouse": false, // 是否允许第一次鼠标事件被接受
        "additionalBrowserArgs": "", // 传递给浏览器的其他参数
        "alwaysOnBottom": false, // 窗口是否总是保持在底部
        "alwaysOnTop": false, // 窗口是否总是保持在顶部
        "backgroundColor": "#ffffff", // 窗口的背景色(默认为白色)
        "browserExtensionsEnabled": false, // 是否启用浏览器扩展功能
        "center": true, // 窗口是否居中
        "closable": true, // 窗口是否可以被关闭
        "contentProtected": false, // 是否启用内容保护(防止屏幕截图)
        "create": true, // 是否在创建时显示窗口
        "decorations": true, // 是否显示窗口装饰
        "devtools": false, // 是否启用开发者工具(生产模式默认关闭)
        "dragDropEnabled": true, // 是否启用拖放功能
        "focus": true, // 窗口是否聚焦
        "fullscreen": false, // 窗口是否全屏
        "height": 600, // 窗口高度(默认 600px)
        "hiddenTitle": false, // 隐藏窗口标题栏
        "incognito": false, // 是否启用无痕模式
        "label": "main", // 窗口的唯一标签(标识符)
        "maxHeight": null, // 窗口最大高度(默认为不限制)
        "maximizable": true, // 窗口是否可最大化
        "maximized": false, // 窗口是否默认最大化
        "maxWidth": null, // 窗口最大宽度(默认为不限制)
        "minHeight": 300, // 窗口最小高度(默认 300px)
        "minimizable": true, // 窗口是否可最小化
        "minWidth": 300, // 窗口最小宽度(默认 300px)
        "parent": null, // 窗口的父窗口(默认为无)
        "proxyUrl": "", // 代理 URL
        "resizable": true, // 窗口是否可调整大小
        "shadow": true, // 是否显示窗口阴影
        "skipTaskbar": false, // 是否跳过任务栏(窗口不显示在任务栏中)
        "tabbingIdentifier": null, // 窗口分组的标识符
        "theme": "light", // 窗口主题(默认为 light)
        "title": "Tauri App", // 窗口标题
        "titleBarStyle": "default", // 标题栏样式
        "transparent": false, // 是否启用透明窗口
        "url": "/", // 窗口的默认 URL
        "useHttpsScheme": false, // 是否强制使用 HTTPS
        "userAgent": null, // 自定义用户代理(默认为 null)
        "visible": true, // 窗口是否可见
        "visibleOnAllWorkspaces": false, // 窗口是否在所有工作区可见
        "width": 800, // 窗口宽度(默认 800px)
        "windowClassname": "", // 窗口类名(可自定义)
        "windowEffects": null, // 窗口特效(默认为无)
        "x": null, // 窗口初始位置的 X 坐标
        "y": null, // 窗口初始位置的 Y 坐标
        "zoomHotkeysEnabled": true // 是否启用缩放快捷键
      }
    ],
    "security": {
      "csp": null
    }
  },
  "bundle": {
    "active": true,
    "targets": "all",
    "windows": {
      "certificateThumbprint": null,
      "digestAlgorithm": "sha256",
      "timestampUrl": ""
    },
    "icon": [
      "icons/32x32.png",
      "icons/128x128.png",
      "icons/128x128@2x.png",
      "icons/icon.icns",
      "icons/icon.ico",
      "icons/icon.png",
      "icons/Square30x30Logo.png",
      "icons/Square44x44Logo.png",
      "icons/Square71x71Logo.png",
      "icons/Square89x89Logo.png",
      "icons/Square107x107Logo.png",
      "icons/Square142x142Logo.png",
      "icons/Square150x150Logo.png",
      "icons/Square284x284Logo.png",
      "icons/Square310x310Logo.png",
      "icons/StoreLogo.png"
    ],
    "macOS": {
      "entitlements": "./Entitlements.plist",
      "dmg": {
        "appPosition": {
          "x": 180,
          "y": 140
        },
        "applicationFolderPosition": {
          "x": 480,
          "y": 140
        }
      }
    },
    "resources": ["assets", "icons"]
  },
  "plugins": {
    "window": {},
    "websocket": {},
    "shell": {},
    "globalShortcut": {}
  }
}

小结

配置窗口参数是 Tauri 开发中至关重要的一步。

理解每个参数的用途和默认值,不仅有助于更高效地实现功能,还能避免潜在的跨平台兼容性问题。

在使用参数时,建议参考 Tauri 官方文档 以确保配置的准确性。

最近在做 Tauri 的项目,也就是 github.com/infinilabs/… 目前已经开源,项目正在进行中,也希望能去给个免费的 star 🌟。

个人也是第一次做 Tauri 项目,也是在不断摸索中学习,希望有志同道合的伙伴一起摸索,一起学习进步。

参考

v2.tauri.app/zh-cn/refer…