Skip to content

SeireiA/PinnedTabGuard

Repository files navigation

Pinned Tab Guard

Pinned Tab Guard 是一个面向 Brave 的最小 Manifest V3 扩展。它把用户分配给扩展的“关闭”快捷键变成条件操作:普通活动标签页会关闭,固定活动标签页保持打开。

关键词:Brave 浏览器、浏览器扩展、固定标签页、快捷键保护。

扩展不读取网页内容、不访问网络,也不申请浏览器权限。

工作方式

Ctrl+W
  -> Brave 扩展命令
  -> 查询最后获得焦点窗口中的活动标签页
  -> 固定标签页:保持打开
  -> 普通标签页:关闭

Brave 的内建“关闭标签页”命令必须先取消 Ctrl+W,否则浏览器可能在扩展运行前直接关闭标签页。扩展无法自动修改浏览器快捷键,也无法自动给自己分配快捷键。

安装

1. 加载扩展

  1. 打开 brave://extensions/
  2. 开启“开发者模式”。
  3. 点击“加载未打包的扩展程序”。
  4. 选择项目根目录 E:\Projects\PinnedTabGuard

2. 释放 Brave 的 Ctrl+W

  1. 打开 brave://settings/system/shortcuts;如果当前版本没有直接进入该路由,则依次进入“设置 → 系统 → 键盘快捷键”。
  2. 搜索“关闭标签页”。
  3. 只删除“关闭标签页”的 Ctrl+W,并确认该行不再显示 Ctrl+W
  4. 建议保留 Ctrl+F4,作为扩展停用时的备用关闭快捷键。

3. 分配扩展快捷键

  1. 打开 brave://extensions/shortcuts
  2. 找到 Pinned Tab Guard
  3. 点击快捷键输入框或铅笔按钮,按下 Ctrl+W
  4. 确认输入框最终显示 Ctrl+W,并将作用范围保持为“在 Brave 中”,不要选择“全局”。

如果无法保存,返回上一步确认 Brave 内建“关闭标签页”已经解绑 Ctrl+W;必要时重启 Brave 后重试。

验收

完成设置后依次检查:

  1. 普通标签页按 Ctrl+W,只关闭当前标签页。
  2. 固定标签页按 Ctrl+W,标签页保持打开。
  3. 在两个 Brave 窗口间切换后重复以上测试。
  4. 重启 Brave,确认两处快捷键设置仍然保留。
  5. 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 原始行为

  1. 打开 brave://extensions/shortcuts,清除 Pinned Tab Guard 的 Ctrl+W,或禁用/移除扩展。
  2. 返回 brave://settings/system/shortcuts,给“关闭标签页”重新添加 Ctrl+W
  3. 用普通标签页确认 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,直接执行对应的 nodepowershell.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 节的要求。

About

A minimal Brave extension that prevents Ctrl+W from closing pinned tabs. 一个防止 Ctrl+W 关闭固定标签页的轻量 Brave 扩展。

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors