Tauri v2 窗口边框主题联动

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

让 Tauri v2 桌面应用的原生窗口边框(标题栏)颜色随深色/浅色主题自动切换。

一句话选型结论

按资料字段整理

Tauri v2 窗口边框主题联动是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_029d56a9/tauri-window-theme
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_029d56a9仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791618576
正文体量4.5 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Tauri v2 窗口边框主题联动当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

4.5 KB
模型实际读到的说明书原文,来自技能仓库

Tauri v2 窗口边框主题联动

> 适用范围:让原生窗口装饰(标题栏、边框)颜色跟随应用的深色/浅色主题自动切换。

原理

Tauri v2 提供 getCurrentWindow().setTheme('dark' | 'light') API,底层映射到各平台的原生接口:

平台 底层实现 生效范围
macOS NSAppearance 标题栏、窗口边框
Windows 10/11 DwmSetWindowAttribute(DWMWA_USE_IMMERSIVE_DARK_MODE) 标题栏颜色
Linux GTK 主题切换 窗口装饰

> Windows 需要 Build 1809(2018年10月更新)或更高版本才支持深色标题栏。

实现步骤

第一步:授权 Capability

在 src-tauri/capabilities/default.json 中添加权限。
Tauri v2 的 Capability 系统对每个窗口 API 都需要显式声明,缺少此条权限时 setTheme() 的 Promise 会被静默拒绝,不报任何前端错误。

{
  "permissions": [
    "core:default",
    "core:window:allow-set-theme"
  ]
}

第二步:调用 setTheme API

在主题切换逻辑中,随 CSS 主题同步调用 Tauri 窗口 API。

Vue 示例(composable 模式):

import { getCurrentWindow } from '@tauri-apps/api/window'

// watchEffect 回调是同步函数,必须用 .catch() 而非 try/catch 捕获 Promise 错误
watchEffect(() => {
  const isDark = theme.value === 'dark'

  // 1. 切换 CSS 主题(data-theme 属性或 class)
  document.documentElement.setAttribute('data-theme', theme.value)

  // 2. 同步原生窗口边框颜色
  getCurrentWindow()
    .setTheme(theme.value)   // 'dark' | 'light'
    .catch((e) => console.error('Failed to set native window theme:', e))
})

React/其他框架示例:

import { getCurrentWindow } from '@tauri-apps/api/window'

function applyTheme(isDark: boolean) {
  const theme = isDark ? 'dark' : 'light'
  document.documentElement.setAttribute('data-theme', theme)
  getCurrentWindow()
    .setTheme(theme)
    .catch((e) => console.error('Failed to set native window theme:', e))
}

注意事项

⚠️ 异步调用的陷阱

setTheme() 返回 Promise<void>,必须用 .catch() 处理错误:

// ✅ 正确:.catch() 能捕获 Promise rejection
getCurrentWindow().setTheme('dark').catch(console.error)

// ❌ 错误:try/catch 在同步回调中无法捕获异步错误
try {
  getCurrentWindow().setTheme('dark') // Promise 被丢弃,错误被吞掉
} catch (e) { ... }

⚠️ decorations 必须开启

setTheme 只影响原生窗口装饰(标题栏),无边框窗口(decorations: false)上无效果。

// src-tauri/tauri.conf.json
{
  "app": {
    "windows": [
      {
        "decorations": true
      }
    ]
  }
}

⚠️ 初始化时机

应在主题状态读取后立即调用,避免闪烁:

// 从 localStorage 同步读取,不用等待异步
const saved = localStorage.getItem('app-theme')
const theme = ref<'dark' | 'light'>(saved === 'light' ? 'light' : 'dark')

// watchEffect 带 immediate 效果,模块加载时立即执行一次
watchEffect(() => {
  getCurrentWindow().setTheme(theme.value).catch(console.error)
})

平台兼容性

平台 支持 备注
macOS 10.14+ ✅ 完整支持
Windows 11 ✅ 完整支持
Windows 10 Build 1809+ ✅ 支持,效果略有差异
Windows 10 更早版本 ❌ 不支持,标题栏保持系统默认色
Linux (GNOME/KDE) ⚠️ 取决于 GTK 主题配置

快速自查清单

集成时按下表逐项核对:

  • [ ] capabilities/default.json 已声明 core:window:allow-set-theme(缺失时 Promise 会被静默拒绝)
  • [ ] tauri.conf.json 中窗口 decorations: true
  • [ ] 调用处使用 .catch() 处理 Promise<void>,未用同步 try/catch 包裹
  • [ ] 主题状态从 localStorage 等同步读取,首帧立即 setTheme,避免闪烁
  • [ ] CSS 主题与 setTheme 在同一处一起切换(如 watchEffect / applyTheme)
  • [ ] 确认目标平台在支持范围内(macOS 10.14+ / Win10 1809+;Linux 视 GTK 而定)

常见问题

5 问
答案由本站依据条目字段整理
Tauri v2 窗口边框主题联动怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_029d56a9/tauri-window-theme。安装方式为未标注。装完刷新技能列表或重开客户端。

Tauri v2 窗口边框主题联动支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Tauri v2 窗口边框主题联动权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Tauri v2 窗口边框主题联动收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Tauri v2 窗口边框主题联动用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。