Pinned Tab Guard 是一个面向 Brave 的最小 Manifest V3 扩展。它把用户分配给扩展的“关闭”快捷键变成条件操作:普通活动标签页会关闭,固定活动标签页保持打开。
关键词:Brave 浏览器、浏览器扩展、固定标签页、快捷键保护。
扩展不读取网页内容、不访问网络,也不申请浏览器权限。
Ctrl+W
-> Brave 扩展命令
-> 查询最后获得焦点窗口中的活动标签页
-> 固定标签页:保持打开
-> 普通标签页:关闭
Brave 的内建“关闭标签页”命令必须先取消 Ctrl+W,否则浏览器可能在扩展运行前直接关闭标签页。扩展无法自动修改浏览器快捷键,也无法自动给自己分配快捷键。
- 打开
brave://extensions/。 - 开启“开发者模式”。
- 点击“加载未打包的扩展程序”。
- 选择项目根目录
E:\Projects\PinnedTabGuard。
- 打开
brave://settings/system/shortcuts;如果当前版本没有直接进入该路由,则依次进入“设置 → 系统 → 键盘快捷键”。 - 搜索“关闭标签页”。
- 只删除“关闭标签页”的
Ctrl+W,并确认该行不再显示Ctrl+W。 - 建议保留
Ctrl+F4,作为扩展停用时的备用关闭快捷键。
- 打开
brave://extensions/shortcuts。 - 找到 Pinned Tab Guard。
- 点击快捷键输入框或铅笔按钮,按下
Ctrl+W。 - 确认输入框最终显示
Ctrl+W,并将作用范围保持为“在 Brave 中”,不要选择“全局”。
如果无法保存,返回上一步确认 Brave 内建“关闭标签页”已经解绑 Ctrl+W;必要时重启 Brave 后重试。
完成设置后依次检查:
- 普通标签页按
Ctrl+W,只关闭当前标签页。 - 固定标签页按
Ctrl+W,标签页保持打开。 - 在两个 Brave 窗口间切换后重复以上测试。
- 重启 Brave,确认两处快捷键设置仍然保留。
Ctrl+Shift+W仍是 Brave 的“关闭窗口”快捷键,不受本扩展保护。
修改代码后,在 brave://extensions/ 中点击本扩展的“重新加载”按钮,不要先移除再重新加载。保持项目绝对路径、扩展 ID 和清单中的命令名 close-unpinned 不变,Brave 通常会保留已经分配的快捷键;重新加载后仍应到 brave://extensions/shortcuts 核对 Ctrl+W。
移动或重命名项目目录、改变命令名、改用其他打包签名,均可能生成不同的扩展 ID 或丢失快捷键映射。
- 每个需要使用的 Brave 配置文件都要分别加载扩展、解绑内建
Ctrl+W、绑定扩展Ctrl+W。 - 如需在隐私窗口使用,在
brave://extensions/打开本扩展的“详细信息”,启用“允许在隐私模式下运行”。隐私窗口沿用所属配置文件的扩展快捷键,无需再次绑定。 - Guest 模式不会持久加载此未打包扩展,因此不受保护。Private with Tor 场景也不在本项目的保证范围内。
- 打开
brave://extensions/shortcuts,清除 Pinned Tab Guard 的Ctrl+W,或禁用/移除扩展。 - 返回
brave://settings/system/shortcuts,给“关闭标签页”重新添加Ctrl+W。 - 用普通标签页确认
Ctrl+W已恢复。恢复内建命令后,固定标签页也会再次被Ctrl+W关闭。
不要使用“重置全部快捷键”,以免覆盖其他自定义设置。
项目没有第三方运行时或开发依赖。需要 Node.js 20 或更高版本;图标和打包脚本使用 Windows PowerShell。
# 生成扩展图标
npm.cmd run icons
# 校验清单、本地化、图标及 JavaScript 语法
npm.cmd run check
# 运行测试
npm.cmd test
# 校验、测试并生成 dist/pinned-tab-guard-<version>.zip
npm.cmd run package也可以不经过 npm,直接执行对应的 node 或 powershell.exe 命令。
PinnedTabGuard/
|-- manifest.json # Brave/Chromium 扩展清单
|-- src/
| |-- background.js # Service worker 入口
| `-- close-unpinned.js # 快捷键处理和关闭策略
|-- _locales/ # 英文和简体中文元数据
|-- icons/ # 扩展图标
|-- test/ # Node 内置测试
|-- scripts/
| |-- check.mjs # 无依赖项目校验
| |-- generate-icons.ps1 # 可重复生成 PNG 图标
| `-- package.ps1 # 创建并验证发布 ZIP
|-- CHANGELOG.md
|-- PRIVACY.md
`-- package.json
- 这是 Brave 专用配置。其他 Chromium 浏览器通常不能释放内建
Ctrl+W给扩展。 - 不同 Brave 配置文件需要分别配置;Guest 模式不受支持,隐私窗口必须显式允许扩展运行。
- 扩展被禁用或发生加载错误时,因为 Brave 的内建
Ctrl+W已解绑,Ctrl+W将不会关闭标签页;此时使用保留的Ctrl+F4,或恢复 Brave 的默认快捷键。 - 扩展只处理当前活动标签页,不会批量关闭多选标签页。
- 极短时间内同时切换、固定和关闭标签页时,浏览器 Tabs API 不提供原子事务保证。
本项目采用 Apache License 2.0,允许个人、商业及其他任何用途,也允许修改和再分发。
使用、修改或再发布本项目时,请保留 NOTICE,并在源码 README、随附文档或产品的 About/Credits 页面中清晰标注:
Pinned Tab Guard
Original repository: https://github.com/SeireiA/PinnedTabGuard
分发修改版本时还必须明确标记被修改的文件,并遵守 Apache License 2.0 第 4 节的要求。