Skip to content

lanbinleo/clippy

Repository files navigation

Clippy - 多端同步剪贴板工具

通过手机语音输入,实时同步到电脑端剪贴板的工具。

介绍文章:https://maxqi.top/p/98.html

简介

作者比较懒,不喜欢手打字。

最近发现豆包输入法非常好用,尤其是它的语音转文字功能。

但是,每一次都要在手机上输入完之后,发到微信或者 QQ,再从电脑上接收,有点太慢了。

于是,就想制作了这样一款软件,基于 WebSocket 实现通信。手机安卓安装一款 APP,当文本框的内容改变时,就发送 WebSocket 请求同步到电脑上。然后,电脑就会有一个右下角的窗口弹出,并展示文字,然后可以一键复制。

其实就是一个共享文本框的功能。

如果这符合你的需求,请随便使用。

对了,这个软件是我和 Claude Code 一起在一个小时内写完的。

Architecture Diagram


App Screenshot

使用方法

作者打包了一份Go编译的服务器、Python桌面客户端,并用Coco编辑器随手搓了一个APP,也打包进来了。如果你想自己开发手机端,可以参考 API.md 文档。

无毒,但介意者勿用哈,打包一个很快的。

安装好环境(Go和Python),运行 build.bat 可以重新打包全套。然后双击运行clippy-desktop.exe即可(可以设置开机自启和服务器管理)。

项目结构

Clippy/
├── server.exe                    # Go后端服务器(已编译)
├── clippy-desktop.exe            # Python桌面客户端(打包后)
├── desktop.py                    # Python桌面客户端源码
├── requirements.txt              # Python依赖
├── API.md                        # API文档
│
├── build.bat                     # 打包脚本
├── start-clippy.bat              # 启动脚本(显示窗口)
├── start-clippy-silent.vbs       # 静默启动脚本(无窗口)
├── add-to-startup.bat            # 添加到开机启动
├── remove-from-startup.bat       # 从开机启动移除
│
└── cmd/                          # Go源代码
    ├── server/                   # 服务器源码
    └── desktop/                  # Fyne桌面端源码(未使用)

快速开始(直接使用)

方法1:一键启动(推荐)

双击 start-clippy-silent.vbs 即可静默启动(无黑窗口)

方法2:手动启动

  1. 双击 server.exe 启动服务器
  2. 双击 clippy-desktop.exe 启动桌面客户端

开机自启动

  1. 双击 add-to-startup.bat 添加到开机启动
  2. 重启电脑后会自动运行
  3. 如需移除,双击 remove-from-startup.bat

开发者指南

1. 环境准备

安装Python依赖:

pip install -r requirements.txt

2. 开发模式运行

启动服务器:

server.exe

启动桌面客户端(开发模式):

python desktop.py

3. 打包桌面客户端

双击 build.bat 或运行:

pyinstaller --onefile --windowed --name=clippy-desktop desktop.py

打包后的文件在 dist/clippy-desktop.exe

4. 手机端开发

参考 API.md 文档,连接到:

ws://你的电脑IP:8948/ws

发送消息格式:

{
  "type": "update",
  "content": "语音输入的文字"
}

使用流程

  1. 启动Clippy

    • 双击 start-clippy-silent.vbs 启动服务器和桌面客户端
    • 桌面客户端会最小化到系统托盘(绿色圆圈图标,透明背景)
  2. 手机连接

    • 确保手机和电脑在同一局域网
    • 查看电脑IP地址(cmd输入 ipconfig
    • 手机端连接 ws://电脑IP:8948/ws
  3. 发送文本

    • 手机语音输入 → 发送 update 消息到服务器
    • 电脑右下角自动弹窗显示文本
  4. 复制文本

    • 点击蓝色"复制"按钮 → 文本复制到剪贴板
    • 粘贴到任意位置使用
  5. 关闭窗口

    • 点击窗口的 ✕ 按钮即可隐藏
    • 程序继续在后台运行

功能特性

  • ✅ WebSocket 实时通信
  • 动态状态指示(绿色=已连接,红色=未连接)
  • ✅ 系统托盘图标(透明背景圆圈)
  • ✅ 右下角弹窗显示
  • ✅ 一键复制到剪贴板
  • ✅ 自动重连机制
  • ✅ 静默启动(无黑窗口)
  • 开机自启动管理(托盘菜单可勾选)
  • 完整的服务器控制(启动/重启/关闭)
  • 智能动态菜单(根据服务器状态自动切换)
  • ✅ 无需鉴权(局域网使用)

托盘菜单功能

右键点击托盘图标,可使用以下功能:

菜单项 功能说明 显示条件
显示窗口 手动显示文本弹窗(如果有内容) 始终显示
✓ 开机启动 勾选/取消开机自启动 始终显示
启动服务器 启动WebSocket服务器 仅当服务器关闭时
重启服务器 重启WebSocket服务器 仅当服务器运行时
关闭服务器 关闭WebSocket服务器 仅当服务器运行时
退出 完全退出客户端(不关闭服务器) 始终显示

托盘图标状态

颜色 状态 说明
🟢 绿色 已连接 服务器运行中,WebSocket已连接
🔴 红色 未连接 服务器未启动或连接断开

提示:

  • 托盘图标颜色会实时反映服务器连接状态
  • 菜单项会根据服务器状态智能显示/隐藏
  • 开机启动状态会实时显示勾选标记 ✓

技术栈

  • 后端: Go + gorilla/websocket
  • 桌面端: Python + tkinter + ttkbootstrap + pystray
  • 通信: WebSocket (JSON格式)

常见问题

Q: 手机连接不上服务器?

A: 检查以下几点:

  1. 电脑和手机是否在同一WiFi
  2. 电脑防火墙是否允许8948端口
  3. IP地址是否正确(cmd输入 ipconfig 查看)

Q: 如何查看程序是否运行?

A: 查看系统托盘是否有绿色圆圈图标

Q: 如何完全退出程序?

A: 右键托盘图标 → 退出

Q: 如何获取电脑IP地址?

A:

# Windows
ipconfig

# 查找"无线局域网适配器"或"以太网适配器"下的IPv4地址
# 通常是 192.168.x.x 格式

Q: 开机启动后如何关闭自启动?

A: 有两种方法:

  1. 推荐: 右键托盘图标 → 取消勾选"开机启动"
  2. 运行 remove-from-startup.bat

Q: 如何重启服务器?

A: 右键托盘图标 → 点击"重启服务器"

Q: 托盘菜单的"开机启动"为什么没有勾选?

A: 说明当前没有设置开机自启。点击即可添加,再次点击可取消。

注意事项

  • 确保防火墙允许 8948 端口
  • 手机和电脑需在同一局域网
  • 详细API文档见 API.md
  • 首次使用建议手动运行测试后再设置开机启动

脚本说明

文件 用途
build.bat 打包Python桌面客户端为exe
start-clippy.bat 启动服务器和客户端(显示cmd窗口)
start-clippy-silent.vbs 静默启动(推荐,无窗口)
add-to-startup.bat 添加到Windows开机启动
remove-from-startup.bat 从开机启动移除

开发计划

  • 添加连接密码保护
  • 支持文本历史记录
  • 添加配置文件
  • 打包为单一可执行文件

About

一款轻量的,语音输入同步软件。基于 WebSocket 实现手机文本框的内容改变时,同步到电脑上。右下角的窗口弹出,并展示文字,可以一键复制。

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors