Clippy

Clippy

🚀 Clippy 📎

Clippy 是一款专为 macOS 设计的工具,它能让你直接在终端复制文件,并将其粘贴到各种 GUI 应用程序中,避免了在 Finder 与终端之间频繁切换的麻烦。

🚀 快速开始

安装

Homebrew(推荐)

brew install neilberkman/clippy/clippy

从源代码构建

# 克隆并构建
git clone https://github.com/neilberkman/clippy.git
cd clippy
go build -o clippy ./cmd/clippy
sudo mv clippy /usr/local/bin/

# 或者使用 go install
go install github.com/neilberkman/clippy/cmd/clippy@latest

使用示例

# 将文件作为引用复制(可粘贴到任何 GUI 应用程序)
clippy report.pdf         # ⌘V 粘贴到 Slack 或邮件中 - 上传文件
clippy *.jpg             # 一次复制多个文件

# 通过管道将数据作为文件复制
curl -sL https://picsum.photos/300 | clippy  # 下载 → 以文件形式复制到剪贴板

# 复制最近的下载文件(立即操作)
clippy -r                # 复制刚刚下载的文件
clippy -r 3              # 复制最近的 3 个下载文件

# 交互式选择最近的文件
clippy -i               # 从最近的下载文件列表中选择
clippy -i 5m            # 仅显示最近 5 分钟内的文件选择器

✨ 主要特性

1. 智能文件复制

clippy document.pdf    # 以文件引用形式复制(可粘贴到任何应用程序)
clippy notes.txt       # 同样以文件引用形式复制
clippy -t notes.txt    # 使用 -t 标志以复制文本内容
clippy *.jpg          # 一次复制多个文件

2. 处理最近下载的文件

# 立即复制(无 UI)
clippy -r              # 复制最近下载的文件
clippy -r 3            # 复制最近的 3 个下载文件
clippy -r 5m           # 复制最近 5 分钟内的所有下载文件

# 交互式选择器
clippy -i              # 从最近的下载文件列表中选择
clippy -i 3            # 显示最近 3 个文件的选择器
clippy -i 5m           # 仅显示最近 5 分钟内的文件选择器

# 复制并粘贴一步完成
clippy -r --paste      # 复制最近的下载文件并粘贴到此处
clippy -i --paste      # 选择文件,复制并粘贴到此处

3. 通过管道复制数据为文件

curl -sL https://example.com/image.jpg | clippy
cat archive.tar.gz | clippy

4. 复制并粘贴

clippy ~/Downloads/report.pdf --paste  # 复制到剪贴板并粘贴到此处
clippy -r --paste          # 复制最近的下载文件并粘贴到此处
clippy -i --paste           # 选择文件,复制并粘贴到此处

5. 清空剪贴板

clippy --clear         # 清空剪贴板
echo -n | clippy       # 同样可清空剪贴板

6. 实用标志

clippy -v file.txt     # 显示操作结果
clippy --debug file.txt # 显示调试的技术细节

📚 详细文档

为何选择 Clippy?

pbcopy 只能复制文件的 内容,但 GUI 应用程序需要的是文件的 引用。当你使用 pbcopy < image.png 时,无法将其粘贴到 Slack 或邮件中,因为这些应用程序期望的是文件,而不是原始字节。

Clippy 则通过检测你的需求并使用正确的剪贴板格式来弥补这一差距。

为何叫 "Clippy"?

因为它就像一个贴心的剪贴板助手,能理解你的需求! 📎

Pasty - 智能剪贴板粘贴

当你在 Finder 中复制一个文件,然后在终端中按 ⌘V 时,你只能得到文件名作为文本。而 Pasty 可以将文件本身复制到你当前的目录中。

核心用例

1. 在 Finder 中复制文件 → 在终端中粘贴实际文件

# 1. 在 Finder 中复制任何文件(⌘C)
# 2. 切换到终端并运行:
pasty
# 文件将被复制到你当前的目录(而不仅仅是文件名!)

2. 智能处理文本文件

# 在 Finder 中复制一个文本文件(⌘C),然后:
pasty                    # 将文件的文本内容输出到标准输出
pasty notes.txt          # 将文件的文本内容保存到 notes.txt

安装与使用

# 通过 Homebrew 安装
brew install neilberkman/clippy/clippy

# 或者从源代码构建
go install github.com/neilberkman/clippy/cmd/clippy@latest
go install github.com/neilberkman/clippy/cmd/pasty@latest

Draggy - 可视化剪贴板助手

Draggy 是一个菜单栏应用程序,它为你的剪贴板工作流程带来了可视化功能。当 clippy 负责从终端复制文件时,Draggy 提供了一个可视化界面,用于将文件拖放到应用程序中并查看最近的下载文件。

重要提示

Draggy 是一个独立的可选工具,不会随 clippy 自动安装。

特性

核心功能
  • 拖放桥梁 - 使剪贴板中的文件可以拖放到网页浏览器、Slack 等应用程序中。
  • 最近下载查看器 - 一键切换查看剪贴板和最近的下载文件。
  • 文件缩略图 - 在文件列表中直接显示图像和 PDF 的可视化预览。
  • 快速预览 - 按住 ⌥ Option 键悬停时可查看更大的预览。
  • 零后台活动 - 无需轮询,不消耗电池,仅在需要时激活。
用户体验
  • 双击打开 - 无需离开菜单即可快速访问文件。
  • 键盘快捷键 - 按 ESC 关闭,按 Space 刷新。
设计理念
  • 非剪贴板管理器 - 没有历史记录、数据库,不增加复杂性。
  • 以终端为中心的工作流程 - 旨在补充终端的使用,而不是取代它。
  • 简约而完整 - 每个功能都服务于特定的工作流程需求。

安装

# 单独使用 Homebrew 安装(不包含在 clippy 中)
brew install --cask neilberkman/clippy/draggy

首次启动注意事项

macOS 可能会显示安全警告,因为 Draggy 未经过代码签名。如果你看到 "Draggy 已损坏,无法打开" 的提示:

  • Homebrew cask 在安装过程中会自动移除隔离标志。
  • 如果警告仍然存在,请运行:xattr -dr com.apple.quarantine /Applications/Draggy.app
  • 或者右键单击 Draggy.app 并选择 "打开" 以绕过 Gatekeeper。

使用方法

# 在终端中复制文件:
clippy ~/Downloads/*.pdf    # 使用 clippy 复制 PDF 文件
curl -sL image.jpg | clippy # 通过管道将下载内容复制到剪贴板
clippy -r                   # 复制最近的下载文件

# 使用 Draggy GUI:
# 1. 点击菜单栏中的 Draggy 图标
# 2. 将文件拖到浏览器上传字段、Slack 等应用程序中
# 3. 点击时钟图标切换到最近下载视图
# 4. 按住 ⌥ Option 键预览文件
# 5. 双击打开文件

工作流示例

将截图上传到 GitHub

# 截取屏幕截图(macOS 会将其保存到桌面)
# 在终端中:clippy ~/Desktop/Screenshot*.png
# 在 Draggy 中:将文件拖到 GitHub 评论框中

快速共享文件

# 在终端中:clippy ~/Downloads/report.pdf
# 在 Draggy 中:显示缩略图,将文件拖到 Slack 或邮件中

最近下载工作流

# 在浏览器中下载文件
# 点击 Draggy → 点击时钟图标 → 查看下载的文件
# 将文件拖到需要的地方或双击打开

设计理念

Draggy 有意不做成剪贴板管理器,没有历史记录、搜索功能和数据库。它是终端剪贴板工作流程与 GUI 应用程序之间的可视化桥梁,适合那些偶尔需要查看剪贴板内容或拖放文件,然后继续工作的终端用户。

MCP 服务器

Clippy 包含一个内置的 MCP(模型上下文协议)服务器,它允许 AI 助手将生成的内容直接复制到你的剪贴板。

你可以让 Claude 生成任何文本 - 代码、邮件、文档等,并立即将其粘贴到任何地方:

  • "编写一个处理 CSV 文件的 Python 脚本并复制到我的剪贴板"
  • "起草一封关于会议的邮件并放到我的剪贴板上"
  • "生成那个正则表达式并复制,以便我可以粘贴到编辑器中"

无需再从聊天界面手动选择和复制内容。

设置

将以下内容添加到你的 Claude Desktop 配置文件(~/Library/Application Support/Claude/claude_desktop_config.json)中:

{
"mcpServers": {
"clippy": {
"command": "clippy",
"args": ["mcp-server"]
}
}
}

可用工具

  • clipboard_copy - 将文本或文件复制到剪贴板
  • clipboard_paste - 将剪贴板内容粘贴到文件/目录中
  • get_recent_downloads - 列出最近下载的文件

Claude 可以生成内容并直接将其放到你的剪贴板上,随时可粘贴到你需要的地方。

作为 Go 库使用

Clippy 可以作为 Go 库在你自己的应用程序中使用:

go get github.com/neilberkman/clippy

高级 API

import "github.com/neilberkman/clippy"

// 智能复制 - 自动检测文本文件和二进制文件
err := clippy.Copy("document.pdf")

// 复制多个文件作为引用
err := clippy.CopyMultiple([]string{"image1.jpg", "image2.png"})

// 复制文本内容
err := clippy.CopyText("Hello, World!")

// 从读取器复制数据(处理文本/二进制检测)
reader := strings.NewReader("Some content")
err := clippy.CopyData(reader)

// 从标准输入复制
err := clippy.CopyData(os.Stdin)

// 获取剪贴板内容
text, ok := clippy.GetText()
files := clippy.GetFiles()

特性

  • 智能检测:自动确定是复制文件引用还是文本内容。
  • 多文件复制:一次复制多个文件。
  • 读取器支持:从任何 io.Reader 复制数据,并自动检测格式。
  • 剪贴板访问:读取当前剪贴板内容(文本或文件路径)。
  • 跨平台类型:使用标准的 Go 类型,内部处理特定平台的剪贴板操作。

📄 许可证

本项目采用 MIT 许可证。

  • 0 关注
  • 0 收藏,18 浏览
  • system 提出于 2025-09-18 20:06

相似服务问题

相关AI产品