PinCopy : 让剪贴板内容「贴」在屏幕上
一款面向开发者与知识工作者的轻量级桌面贴图工具
为什么需要 PinCopy?
在日常工作中,我们频繁地在浏览器、编辑器、聊天窗口和文档之间复制粘贴。一段 API 文档、一截报错日志、一条待办事项------复制之后,往往还需要反复切换窗口去对照原文。
传统的做法是开 Notepad 贴上去,或者把窗口并排摆放。前者太简陋,后者又占屏幕、打断思路。
PinCopy 想解决的是更具体的一件事:把剪贴板里的文字,以半透明浮窗的形式「钉」在屏幕上,让你在对照另一份资料时,不必来回切窗口。
它不做笔记管理,不做云同步,也不试图替代 IDE。它只做一件事,并尽量把这件事做到极致:快、轻、不打扰。
核心理念
PinCopy 的设计围绕三个关键词展开:
1. 无感常驻
启动后,PinCopy 不会占据任务栏主区域,而是安静地待在系统托盘。没有主界面打扰,没有弹窗推销,需要的时候唤出来,用完关掉即可。
2. 一键贴图
复制文本后,快速连按两次 Ctrl ,贴图窗口就会出现在鼠标所在位置。这个手势刻意选得简单------不需要记复杂的组合键,也不容易和常见的 Ctrl+C、Ctrl+V 冲突。
3. 贴图即工具
弹出的不是一张静态截图,而是一个可交互的窗口:可以拖动、缩放、调透明度、选择复制,甚至对代码自动语法高亮。它更像一块临时的工作面板,而不是死板的图片。
主要功能
全局贴图
PinCopy 在后台监听键盘事件。当你双击 Ctrl 时,它会读取系统剪贴板中的文本,并在当前鼠标位置创建一个置顶、无边框的透明窗口,将内容展示出来。
窗口中心对齐鼠标指针,多显示器环境下也会根据所在屏幕的 DPI 自动适配位置与尺寸。
智能内容识别
并非所有剪贴板内容都是代码。PinCopy 内置了一套 CJK 感知的内容检测 机制:
- 中文段落、笔记、对话:按纯文本排版展示,选用适合中文阅读的无衬线字体
- 代码片段:自动识别语言类型并启用语法高亮
目前支持 JavaScript、TypeScript、Rust、Python、JSON、HTML、CSS、Shell、YAML、SQL、Markdown、Java、Go 等常见语言。含有中文注释的代码也能正确高亮,而不会被误判为普通中文文本。
灵活的窗口交互
贴图窗口设计为「用完即走」,交互尽量直觉:
| 你想做什么 | 怎么做 |
|---|---|
| 移动位置 | 拖动顶部手柄 |
| 放大缩小 | Shift + 滚轮 |
| 调透明度 | Alt / Ctrl + 滚轮 |
| 阅读长内容 | 普通滚轮滚动 |
| 复制全部 | 点击「复制」或 Ctrl+Shift+C |
| 复制一部分 | 在内容区拖选文本 |
| 关闭窗口 | 双击任意位置,或按 Esc |
缩放采用 GPU 加速的预览机制,滚轮过程中画面跟手流畅;停止滚动后再将物理窗口尺寸对齐,避免卡顿与跳变。
系统托盘与开机自启
右键(或左键,视系统而定)点击托盘图标,可以:
- 立即贴图:手动触发,效果与双击 Ctrl 相同
- 开机自启:写入当前可执行文件路径,下次登录自动后台运行
- 退出:完全关闭应用
PinCopy 还实现了单实例互斥:若已有实例在运行,再次启动会提示退出旧进程,避免多个副本抢占全局热键。
典型使用场景
对照 API 文档写代码
把接口说明贴在一旁,IDE 全屏写逻辑,需要查参数时瞄一眼即可。
排查报错
复制 Stack Trace 贴到屏幕上,对照浏览器或数据库客户端逐步定位问题。
会议 / 协作
临时把一段配置、命令或链接贴在桌面一角,方便同事查看,又不遮挡共享屏幕的主要内容。
阅读与摘录
复制长文片段,调低透明度浮在原文上方,边读边做笔记。
中文与代码混排
技术文档里中英混排、带中文注释的代码块,PinCopy 会分别按最适合的方式渲染,而不是一刀切当成代码或纯文本。
技术架构概览
PinCopy 基于 Tauri 2 构建:Rust 负责系统级能力,Web 技术负责界面渲染。相比 Electron 类方案,打包体积更小(release 版约 10 MB),内存占用也更克制。
┌─────────────────────────────────────────┐
│ 用户操作层 │
│ 双击 Ctrl · 托盘菜单 · 贴图窗口交互 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ Rust 后端 (Tauri) │
│ · 全局热键监听 (rdev) │
│ · 剪贴板读写 │
│ · 动态创建置顶透明窗口 │
│ · 系统托盘 / 开机自启 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ React 前端 (WebView) │
│ · 内容解码与展示 (UTF-8) │
│ · 代码检测 + Prism 语法高亮 │
│ · 缩放 / 透明度 / 复制 / 拖动 │
└─────────────────────────────────────────┘
前端:React 19 + Vite + Tailwind CSS 4,贴图窗口通过 React Router 独立路由渲染。
后端 :Rust 动态创建 WebView 窗口,内容经 initialization_script 注入,避免超长 URL 导致导航失败;中文内容使用 TextDecoder 正确解码 UTF-8。
安全与权限:Tauri 2 的 Capability 机制按窗口粒度授权,主窗口与动态贴图窗口分别持有最小必要权限。
设计取舍
PinCopy 刻意不做的事情,和它能做的事情同样重要:
- 不支持图片贴图:聚焦文本场景,保持轻量
- 不做历史记录:剪贴板即来即用,不持久化用户数据
- 不做云端:纯本地运行,无账号、无上传
- 不占用任务栏:后台工具应有的姿态
这些取舍让 PinCopy 保持小巧、启动快、行为可预期。它适合作为一个「随时在手边」的辅助工具,而不是另一个需要学习和维护的平台。
快速上手
- 运行
pincopy.exe,在系统托盘找到 PinCopy 图标 - 复制任意一段文本
- 快速连按两次 Ctrl
- 贴图窗口出现在鼠标位置,按需拖动、缩放或使用
- 双击窗口或按
Esc关闭
如需长期驻留,在托盘菜单勾选「开机自启」。
写在最后
PinCopy 源于一个很朴素的需求:复制之后,能不能别让我再切窗口?
它没有宏大的产品叙事,只是一块贴在屏幕上的「临时便签」------透明、可移动、对代码友好、对中文友好、用完即走。
如果你经常在对照资料写代码、读文档、查报错,不妨试试:复制,双击 Ctrl,然后继续工作。
PinCopy v0.1.0 · Tauri + React + Rust