窗口配置完全指南
本教程共 48 篇 · 第 26 篇 · 更新于 2026-08-09 · 约 8 分钟阅读
本节目标:掌握
tauri.conf.json里app.windows的全部常用字段,能照着写出带尺寸约束、行为控制和外观主题的窗口配置。
窗口配置写在哪
在 Tauri 2,启动窗口的定义放在 tauri.conf.json 的 app.windows 数组里。注意是 app.windows,不是 1.x 的 tauri.windows——这是 2.x 配置重组后统一的位置。每个数组元素是一个窗口对象,应用启动时按数组依次创建;放一个就是单窗口,放多个就是多窗口。
{
"app": {
"windows": [
{
"label": "main",
"title": "我的 Tauri 应用"
}
]
}
}
label 是窗口的「身份证」,在整个应用里必须唯一。后面用 Rust 代码操作窗口、用事件通信,都要靠这个 label 去定位。所以起名要有意义,比如 main、settings、about。
Note改了
tauri.conf.json后需要重跑tauri dev才能生效,它不像前端那样热更新。养成习惯:动配置就重启开发命令。
基础尺寸字段
最常用的一组就是标题和初始尺寸:
title:窗口标题栏显示的文字。width/height:初始宽高,单位像素,默认值分别是 800 和 600。x/y:窗口左上角在屏幕上的坐标。一般留空或设null,让系统自动摆放。
{
"app": {
"windows": [
{
"label": "main",
"title": "我的 Tauri 应用",
"width": 1024,
"height": 768
}
]
}
}
这组字段决定应用一打开长什么样,是每张配置必写的。
尺寸约束
除了初始大小,你还能给窗口设「活动范围」,防止用户把窗口拉得过小或过大:
minWidth/minHeight:最小宽高。maxWidth/maxHeight:最大宽高。- 不写或写
null表示不限制。
{
"label": "main",
"width": 1024,
"height": 768,
"minWidth": 480,
"minHeight": 320,
"maxWidth": 1600,
"maxHeight": 1000
}
Tip如果初始
width小于minWidth,Tauri 会以最小值为准;反之若大于maxWidth也会以最大值为准。写配置时让初始值落在约束区间内最省心。
行为与按钮控制
这一组决定窗口「能做什么」:
resizable:能否拖拽边框改大小,默认 true。minimizable:能否最小化,默认 true。maximizable:能否最大化,默认 true。closable:能否关闭,默认 true。fullscreen:启动时是否全屏,默认 false。maximized:启动时是否直接最大化,默认 false。visible:启动时是否可见,默认 true(做启动闪屏时常临时设为 false)。focus:创建时是否抢焦点,默认 true。
{
"label": "main",
"resizable": true,
"minimizable": true,
"maximizable": true,
"closable": true,
"fullscreen": false,
"maximized": false
}
Warning这些开关只是「建议」。某些平台(尤其 Linux 的某些桌面环境)会忽略部分设置,比如强制显示关闭按钮。不能把它们当作安全限制来用,它们管的是交互便利性而非权限。
位置与层级
控制窗口出现在哪、浮在多高:
center:启动时是否在屏幕中央,默认 false。x/y:指定坐标(与center二选一,写了坐标center就失效)。alwaysOnTop:始终置顶,默认 false(做悬浮工具条很有用)。alwaysOnBottom:始终置底,默认 false。skipTaskbar:不在任务栏显示,默认 false(配合置顶做迷你浮窗)。
{
"label": "main",
"center": true,
"alwaysOnTop": false,
"skipTaskbar": false
}
Tip多显示器环境下,
center: true会让窗口居中在「主显示器」。想精确贴边(比如贴右下角),就得用x/y配坐标,或运行时用 Rust 的position方法。
外观与主题
这一组影响窗口「长什么样」:
decorations:是否显示系统标题栏和边框,默认 true。设 false 就变成无边框窗口,下一章细讲。transparent:是否透明,默认 false。配合前端透明背景可做毛玻璃、圆角等效果。shadow:是否显示窗口阴影,默认 true(无边框时关掉阴影可避免矩形残影)。backgroundColor:窗口底色,用十六进制如#ffffff或带透明通道的#rrggbbaa。theme:窗口主题,取值"Light"、"Dark"或null(跟随系统)。
{
"label": "main",
"decorations": true,
"transparent": false,
"shadow": true,
"backgroundColor": "#ffffff",
"theme": null
}
Note
theme设成"Dark"会影响窗口内 CSS 的媒体查询(prefers-color-scheme),适合做暗色界面。它控制的是该窗口自身的主题,不会自动改系统其他窗口。
其他常用字段
还有一些按需使用的项:
url:窗口加载的页面路径,默认是index.html,也可指向settings.html等。contentProtected:防止截图/录屏,部分平台支持,默认 false。dragDropEnabled:是否允许往窗口拖文件,默认 true。acceptFirstMouse:macOS 上点击未聚焦窗口时是否立即响应,默认 false。titleBarStyle:macOS 专属,"Visible"、"Transparent"或"Overlay",控制标题栏样式。hiddenTitle:macOS 上是否隐藏标题文字,默认 false。
{
"label": "main",
"url": "index.html",
"contentProtected": false,
"dragDropEnabled": true,
"titleBarStyle": "Visible"
}
一个配置里放多个窗口
app.windows 是数组,自然能写多个对象,每个对象是一个独立窗口,各自带自己的 label 和配置:
{
"app": {
"windows": [
{ "label": "main", "title": "主窗口", "width": 1024, "height": 768 },
{ "label": "about", "title": "关于", "width": 400, "height": 300, "resizable": false }
]
}
}
这样应用一启动就同时开两个窗口。如果窗口要在用户操作后才出现,而不是启动时就有,请看第 28 章的运行时创建。
另外,平台差异可以用专属配置文件覆盖:放一个 tauri.windows.conf.json(macOS 对应 tauri.macos.conf.json,Linux 对应 tauri.linux.conf.json),它会按合并规则覆盖主配置里的同名字段。例如 Windows 上想要不同的起始尺寸,就写 tauri.windows.conf.json 去覆盖 windows 数组即可。
一个完整窗口配置示例
把上面字段合起来,一个典型的单窗口配置长这样:
{
"app": {
"windows": [
{
"label": "main",
"title": "我的 Tauri 应用",
"width": 1024,
"height": 768,
"minWidth": 480,
"minHeight": 320,
"resizable": true,
"minimizable": true,
"maximizable": true,
"closable": true,
"fullscreen": false,
"maximized": false,
"center": true,
"decorations": true,
"transparent": false,
"shadow": true,
"theme": null
}
]
}
}
小结
本章系统梳理了 app.windows 的全部常用配置字段:标题与初始尺寸、minWidth/maxWidth 等尺寸约束、resizable/minimizable 等行为开关、center/alwaysOnTop 等位置层级控制,以及 decorations/transparent/theme 等外观主题设置,还介绍了多窗口配置和平台专属覆盖文件的用法。记住:字段都是可选的,只写你关心的即可。Tauri 对没写的项用默认值。这个示例把常用项都列出来,方便你按需删改,不必一次记全。