Skip to content

WEP-56/Rcopy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RCopy

RCopy 是一个基于 Rust + Slint 的 Windows 11 原生系统增强工具,目标是替换或增强系统自带的剪贴板历史、截图 OCR、吸色器等小工具。项目不使用 WebView,UI 走 Slint Fluent 风格,后台能力直接调用 Win32 / WinRT API。

功能

功能 快捷键 说明
剪贴板历史 Win + V 接管系统剪贴板历史,支持文本、图片、搜索、固定、删除和自动粘贴;条目支持粘贴纯文本、图片 OCR、粘贴为临时文件。
命令面板 Win + Shift + P 搜索并执行 RCopy 功能、设置子页、剪贴板动作和常用系统命令。
截图 OCR Win + Shift + T 框选屏幕区域,使用 Windows 系统 OCR 识别文字并复制;支持首选语言、Shift 移动选区、失败重试。
吸色器 Win + Shift + C 取屏幕像素颜色,支持 HEX / RGB / HSL / HSV / CMYK、滚轮缩放放大镜、空格冻结、颜色历史与颜色编辑器。
窗口置顶 Win + Ctrl + T 切换当前前台窗口置顶,可显示彩色边框、配置排除应用与全屏保护。
屏幕尺 Win + Ctrl + Shift + M 矩形测量 + Tab/H/V 切换水平、垂直边缘检测,点击复制。
快捷键面板 Win + Shift + / 查看 RCopy 与常用 Windows 快捷键,支持搜索。
查找鼠标 Win + Shift + F 在当前鼠标位置显示定位标记;Win + Shift + H 切换演示模式(点击高亮),颜色/半径/时长可配。
静态截图窗口 Win + Ctrl + Shift + S 框选屏幕区域后创建置顶参考截图窗口,支持复制与重新截取。
任意拖动窗口 Alt + 拖动(可配) 按住修饰键在窗口任意区域左键拖动移动、右键拖动调整大小(默认关闭)。
亮/暗主题切换 Win + Ctrl + Shift + D 手动秒切系统与应用主题;支持固定时间与日出日落自动切换。
显示器亮度 Win + Ctrl + Shift + ↑/↓ 通过 DDC/CI 调节光标所在外接显示器亮度(默认关闭)。
工作区 设置页 保存当前应用组,一键启动并尽力恢复窗口位置。
保持唤醒 托盘 / 设置页 无限期 / 定时 / 到期时刻三种模式,托盘快捷时长,屏幕常亮独立开关。
开机启动 设置页 写入当前用户的 Run 注册表项,启动参数为 --silent

安装

Releases 下载:

  • RCopy-vX.Y.Z-setup.exe:安装版(按用户安装,无需管理员权限,可选开机自启)。
  • RCopy-vX.Y.Z-portable.zip:免安装绿色版,解压后直接运行 RCopy.exe

运行

要求:

  • Windows 11
  • Rust stable,建议使用 MSVC 工具链
  • OCR 功能依赖 Windows 已安装的 OCR 语言包

常用命令:

cargo run
cargo run -- --silent
cargo build --release

cargo run 默认打开设置窗口。带 --silent 时仅启动后台托盘、热键、剪贴板监听等能力。

Release 构建启用了 windows_subsystem = "windows",运行 target\release\rcopy.exe 时不会弹出控制台窗口。

数据位置

运行时数据保存在:

%APPDATA%\rcopy\

当前包含:

  • config.json:全局配置,使用 serde(default) 兼容旧版本配置升级。
  • history.json:剪贴板文本历史。图片历史只保存在本次进程内存中,不做长期持久化。
  • workspaces.json:工作区(应用组)定义。
  • temp\:“粘贴为临时文件”的落盘目录,按 3 天 / 256 MB 自动清理。

项目结构

build.rs          Slint 编译入口,使用 fluent 样式
ui/app.slint     所有 Slint 组件、设置页、弹窗和遮罩窗口
src/main.rs      主线程应用状态、窗口生命周期、事件分发
src/worker.rs    后台 Win32 隐藏窗口、消息循环、热键、托盘、剪贴板监听
src/config.rs    配置加载、保存和默认值
src/history.rs   剪贴板历史、去重、裁剪、PNG 编解码、相对时间
src/capture.rs   GDI 截屏和冻结帧像素访问
src/ocr.rs       Windows OCR / WinRT 封装(语言选择与回退)
src/input.rs     前台窗口、键盘注入和热键辅助
src/autostart.rs 开机启动注册表写入
src/color.rs     HEX / RGB / HSL / HSV / CMYK 颜色转换
src/tempfiles.rs 剪贴板临时文件落盘与生命周期清理
src/topmost.rs   窗口置顶边框 overlay、排除列表、全屏保护
src/theme.rs     亮/暗主题切换与日出日落计算
src/display.rs   DDC/CI 显示器亮度
src/workspace.rs 工作区保存、启动与窗口位置恢复

架构和代码风格

  • 主线程只运行 Slint 事件循环,并持有 App 状态。
  • 后台线程创建隐藏 Win32 窗口并跑消息循环,集中处理全局热键、低级键盘钩子、剪贴板监听、托盘菜单、窗口置顶和阻止休眠。
  • 后台事件通过 post_event 写入全局队列,再用 slint::invoke_from_event_loop 回到主线程处理 UI。
  • UI 窗口都以 Option<Component> 形式按需创建,关闭后延迟销毁,并调用 K32EmptyWorkingSet 让大对象释放后尽快反映到任务管理器。
  • 配置和历史使用 OnceLock<Mutex<_>> 保存全局状态,简单直接,适合当前单进程桌面工具。
  • 代码里保留了少量面向维护的中文注释,重点说明线程模型、Win32 技巧和非显然的资源释放逻辑。

新增功能模块时,通常按这个顺序接入:

  1. src/config.rs 增加配置字段,并保持 #[serde(default)] 兼容旧配置。
  2. 如果需要热键或后台消息,在 src/worker.rs::apply_hotkeys 注册,并在 wndproc 分发。
  3. 如果需要回到 UI 主线程,在 AppEvent 增加事件,并在 App::drain_events 处理。
  4. ui/app.slint 增加设置项或新窗口组件。

注意事项

  • Win + V 无法通过 RegisterHotKey 常规注册,因此使用低级键盘钩子拦截并吞掉系统原生剪贴板历史。
  • 其他热键注册失败时会自动降级到键盘钩子兜底,避免和其他程序冲突时功能直接失效。
  • 自动粘贴通过前台窗口恢复和 Ctrl + V 注入实现,目标窗口权限更高时可能受 Windows UIPI 限制。
  • OCR 使用系统内置引擎,无需联网;语言识别能力取决于当前用户已安装的 Windows OCR 语言包。

Linux.do

学ai,上L站。本项目为Fable5体验项目

About

自用的windows11 强化工具,包含剪贴板、ocr、吸色器、窗口置顶、屏幕尺等常用工具,替代原生。常驻运行内存占用几乎为0

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors