← 返回全部文章

Mac 剪贴板总丢内容?Tinycast 把历史记录放进一个快捷面板

Tinycast 是一款原生 macOS 小工具,把剪贴板历史、启动器、全局快捷键和 Snippets 放进一个轻量面板,适合不想装大型效率套件的人。

在 Mac 上复制一段文字,转身去找另一份资料,回来时刚才那段内容已经被覆盖了。系统自带的剪贴板只能记住最近一次复制,临时文本、地址、代码片段和图片很容易丢。

Tinycast 是一个体积很小的原生 macOS 工具。它把应用启动器、全局快捷键和剪贴板历史放进同一个浮动面板,项目 README 写明它使用 SwiftUI + AppKit,没有 Electron 和第三方依赖,磁盘占用约 3 MB,内存占用目标低于 100 MB 。

它的特点不在于功能数量多,而在于只处理几件高频的小事:唤出面板、搜索、选择、粘贴。

先看剪贴板历史

Tinycast 的剪贴板模块会轮询 macOS 的 NSPasteboard.general.changeCount,默认每 0.5 秒检查一次变化。它会记录文字和图片,之后可以搜索历史记录,再把选中的内容粘贴回当前正在使用的应用。

README 里还透露了几个细节:

  • 历史记录使用 SQLite 保存,并配有 FTS5 全文搜索索引;
  • 图片会单独保存为 PNG 文件;
  • 数据放在 ~/Library/Caches/<bundle-id>/
  • 最近 1000 条会直接放进界面内存窗口,更旧的内容仍可通过全文搜索找到;
  • 数据库打不开时会删除并重建,最坏情况下退化为本次运行期间的内存历史。

这个设计解释了它为什么启动快、界面不重:常用数据直接展示,较旧记录交给 SQLite 搜索,不需要把所有内容都塞进 SwiftUI 的列表。

置顶常用内容

选中一条记录后,可以通过 ⌘K 打开 Actions 菜单,再选择 Pin Entry,快捷键是 ⌘P

置顶记录会被放到单独的 Pinned 区域,按置顶时间排序,而不是按最近复制时间排序。取消置顶后,它会作为最新记录重新进入历史列表;自动清理也会跳过置顶项,但“Clear History”仍然会清空所有记录。

这对经常重复粘贴的内容很实用,比如测试地址、常用命令、客服回复、临时账号名或项目目录。敏感内容则不应该因为方便而长期置顶。

怎么安装

项目提供 Homebrew Cask 安装方式:

brew trust --tap abue-ammar/tinycast
brew tap abue-ammar/tinycast
brew install --cask tinycast

如果想同时试用 Beta:

brew install --cask tinycast@beta

稳定版和 Beta 是两个独立 App,各自拥有设置和权限。项目说明 Tinycast 使用自签名方式发布;通过 Homebrew 安装时,Homebrew 会处理 macOS 隔离标记。如果从 Releases 直接下载 DMG,则需要手动清除隔离属性:

xattr -dr com.apple.quarantine "/Applications/Tinycast.app"

安装第三方 Homebrew tap 前,先确认仓库地址和维护者。不要把 brew trust 当成软件安全认证,它只是处理 Homebrew 对第三方 tap 的信任设置。

第一次使用

安装并启动后,按下面的路径设置:

  1. 打开 Settings → General,录入唤出面板的全局快捷键;
  2. 在任意应用里按下快捷键,面板会浮到当前桌面;
  3. 输入关键词搜索,按 Enter 执行;
  4. Tab 在 Apps 和 Clipboard 之间切换;
  5. ↑/↓ 移动选择,按 Esc 关闭面板;
  6. Settings → Shortcuts 中为应用或自定义命令绑定独立快捷键。

官方截图里展示的是启动器模式:顶部搜索应用和命令,下方列出收藏应用与全部应用。剪贴板模式沿用同一套面板逻辑,只是切换到历史记录和预览。

为什么需要 Accessibility 权限

Tinycast 需要把选中的剪贴板内容粘贴回你刚才使用的应用。为此,它会记录唤出面板前的前台应用,并通过辅助功能权限激活目标应用、发送 ⌘V,或者直接把粘贴事件发给目标进程。

需要权限的功能包括:

  • 向其他应用执行粘贴;
  • Snippets 的关键词展开;
  • 部分读取所选文本的功能。

授权位置是:

System Settings → Privacy & Security → Accessibility

如果只想使用启动器或查看历史,可以先不启用 Snippets 。项目文档说明,Snippets 默认关闭,关键词匹配在本地完成,不保存也不上传按键内容。

它不只是剪贴板工具

Tinycast 的其他功能都围绕同一个浮动面板展开。

启动器

支持模糊搜索应用、收藏应用,查看正在运行的应用,甚至一次退出一个应用或全部应用。

自定义命令

可以给 Shell 命令起名字,再通过搜索或全局快捷键执行。这个功能适合把偶尔需要输入的命令固定下来,但涉及删除、批量修改、部署的命令,最好保留明确的二次确认。

计算器

支持行内数学计算、单位换算和实时汇率换算,结果直接出现在面板里。

Snippets

Snippets 使用 Markdown 模板,可以放动态占位符、参数、嵌套引用和关键词展开。项目还支持从 Raycast 的加密 .rayconfig 备份导入内置 snippets 。

它支持的占位符包括剪贴板内容、当前选中文本、日期、时间、 UUID 、参数和光标位置。例如:

---
name: "Meeting Notes"
keyword: "!notes"
enabled: true
show_confirmation: false
---

Date: {date}
Topic: {argument name="Topic"}
{cursor}

不过,自动关键词展开会监听键盘事件,需要 Accessibility 权限。对隐私敏感的人,可以只使用手动从启动器展开的 Snippets,不要开启自动监听。

隐私边界要看清

项目 README 写明它没有 telemetry,也没有后台 CPU 持续消耗。但“本地运行”不等于“复制过的内容天然安全”。 Tinycast 会把剪贴板文字和图片保存到本机缓存目录,所以以下内容需要谨慎:

  • 密码管理器复制出的密码;
  • API Key 、 Cookie 、 Token;
  • 身份证件、合同和客户资料;
  • 私人聊天内容和内部链接。

建议先确认清理历史的入口和数据目录,再决定是否开启长期记录。置顶功能尤其要慎用,因为置顶项会跳过普通保留窗口的自动清理。共享 Mac 或多人可登录的账户,也不适合默认开启完整剪贴板记录。

适合谁

Tinycast 适合想要一款轻量工具的 Mac 用户:不想装大型效率套件,只想快速找应用、找回刚刚复制的内容、保存几个模板,并用一个快捷键把这些功能叫出来。

它也有明确边界:这是一个 macOS 工具,不是跨设备剪贴板同步服务;它不会替你管理密码,也不该被当成敏感资料保险箱;自定义命令和自动展开功能越方便,Accessibility 权限带来的操作范围就越值得审查。

项目采用 AGPL-3.0 协议。如果你要修改并分发 Tinycast,应该先阅读仓库里的许可证和相关要求。

来源链接

本文基于项目公开 README 和文档整理,安装前请以仓库当前版本为准

来源:https://github.com/abue-ammar/tinycast