# PaperTodo **Repository Path**: hubo/PaperTodo ## Basic Information - **Project Name**: PaperTodo - **Description**: 极简的 Windows 桌面便签工具。这是一款极简的 Windows 桌面便签工具,每张便签是独立无边框浮动窗口,无主窗口、无账号、无分类管理,内容自动保存。支持待办纸和笔记纸(轻量 Markdown 高亮)两种形态,可折叠成置顶小胶囊,自动贴到屏幕边缘。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-28 - **Last Updated**: 2026-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: tool ## README
# PaperTodo · 一张纸 **让桌面上有几张安静、可用、不打扰人的纸。** 一个极简的 Windows 桌面便签工具,只用 WPF 原生实现,没有主窗口、没有账号、没有管理器。 ![version](https://img.shields.io/badge/version-v3.1-3b82f6) ![platform](https://img.shields.io/badge/platform-Windows%20x64-555) ![.NET](https://img.shields.io/badge/.NET-10-512bd4) ![UI](https://img.shields.io/badge/UI-WPF-0078d4) **官网**:[https://snownico0722.github.io/PaperTodo/](https://snownico0722.github.io/PaperTodo/) **交流群**:[QQ 交流群:551612664——奇奇怪怪的魔法研究基地](https://qm.qq.com/q/Mp7spYLrig) **语言:中文 | [English](README.en.md)**
--- ## 预览 | 纸片 | | :---: | | 桌面纸片 | | Markdown 浏览 | | :---: | | Markdown 浏览 | | 胶囊模式 | 高级胶囊 | | :---: | :---: | | ![胶囊模式](screenshots/Pill_Mode.gif) | ![胶囊自动贴边](screenshots/Pill_Plus.gif) | | 纸片可折叠为小胶囊,减少桌面占用。 | 折叠胶囊自动贴到屏幕边缘,悬浮时滑出。 | --- ## 设计理念 - **纸片优先** — 每张纸都是独立窗口,直接放在桌面上,不需要打开管理界面。 - **即时使用** — 想记就写,完成就勾掉;所有内容都会自动保存。 - **无需管理** — 不做分类、标签、搜索、归档、同步、账号、统计、提醒。 - **原生实现** — 基于 WPF 原生控件,不是 Web 套壳,也没有 MSIX 的复杂权限。 - **交互优先** — 轻不只是性能,更是操作路径短、认知负担小、界面干扰少。 > 拒绝长出非必要的交互层级和视觉焦点负担。 --- ## 项目特色 ### 核心功能 - **多张独立纸片** — 每张纸是一个独立窗口,常用操作一两步就能完成,不用层层点开。 - **一个应用,两种纸片**: - **待办纸**:一行一个事项,可以勾选、编辑、删除、清理已完成。 - **笔记纸**:普通文本 + Markdown 语法高亮,支持三档渲染强度。 - **胶囊模式**(默认启用)— 点击右上角折叠成小胶囊,减少桌面占用,需要时点击展开。 - **自动贴边排列**(默认启用)— 折叠的胶囊会自动贴到屏幕边缘;支持多屏,拖动单个胶囊就能换边或挪到其他显示器。 - **脚本胶囊** — 笔记首行写入 `!p` / `!power`,把笔记内容当 PowerShell 脚本快捷运行。 - **待办关联纸片** — 把笔记纸拖到待办项上建立关联,之后可以直接打开目标纸片;关联模型也支持插件正文和其他待办纸。 - **笔记图片** — 粘贴、拖入或从菜单选图,都能插入本地图片。 - **数据本地保存** — 纸片内容自动保存到 `data.json` 并保留备份;笔记图片存在单个 `note-assets.lmdb` 文件里,安全增量写入。 ### 定制与集成 - **主题与配色** — 支持跟随系统 / 浅色 / 深色;提供暖纸、墨、林、霞四套配色方案。 - **字体与字号** — 系统默认 / 微软雅黑 / 等线,也可以放自定义字体文件;整体和分区字号、加粗、文字渲染都能调。 - **全局快捷键** — 可以在设置里绑定显示、隐藏、新建等功能,还有侧边胶囊队列的快捷键。 - **快捷参数启动**:通过启动参数就能显示、隐藏、切换和新建纸片,方便配合快捷键工具或脚本调用。 - **多语言界面** — 中文、英文、日文、韩文,跟随系统语言。 - **开机自启动** — 可以随 Windows 启动在后台运行。 - **自定义图标** — 程序目录下放一个 `PaperTodo.ico` 就会用它作为托盘图标,没有的话用内置图标。 - **桌面集成** — 支持 Windows 分屏贴靠;可以让展开的纸片不出现在 Alt+Tab / 任务视图或任务栏里。 --- ## 纸片功能与操作手册 ### 纸片 #### 基本操作 - **移动与缩放** — 拖动标题栏移动;默认拖右下角调整大小,隐藏缩放把手时可拖动四边或四角 - **置顶**:左上角图钉可以切换纸片是否置顶 - **新建**:右上角可以新建待办纸和笔记纸 - **外部编辑器打开**:点击 `MD` 按钮,用外部编辑器打开当前笔记(后缀可自定义) - **设置标题**:可以自定义纸片标题 - **分屏贴靠** — 支持 Windows 分屏贴靠;贴靠时会收起阴影和边距,移出后恢复 #### 胶囊与贴边 - **折叠胶囊**:纸片可以折叠成小胶囊,减少桌面占用,可以随时再次打开。 - **自动贴边**:折叠后的胶囊会自动停靠在屏幕边缘,鼠标悬停时滑出。 - **多屏队列**:可以把单个贴边胶囊拖到左侧、右侧或其他显示器,松手后自动加入对应屏幕边缘的队列。 - **收起全部**:顶部主胶囊可以一键收起或展开全部贴边胶囊,也可以拖动调整所在队列的起始高度。 - **主胶囊菜单**:主胶囊右键可以打开和托盘一样的功能菜单 - **展开与关闭区**:可以设置展开时保留边缘胶囊、记住展开位置;可以在悬停时隐藏边缘关闭按钮;可以限制胶囊标题显示长度 --- ### 待办 (Todo) 适合记当天任务、临时事项、桌面小清单。 **基本操作** - **勾选完成** / **新增事项** - **拖动排序** — 按住右侧 `≡` 手柄上下拖动 - **拖拽删除** — 把事项拖到底部删除 - **粘贴多行** — 会自动拆成多条事项,并清理常见的列表前缀 - **双击选中** — 双击待办文字可选中整条,方便复制或整段替换 - **视觉大小** — 设置里可选小 / 中 / 大 - **撤销 / 重做** — `Ctrl+Z` / `Ctrl+Y` - **完成后自动清除** — 可在设置中开启;勾选完成的项会自动清掉 **关联纸片**:可以把一张笔记纸从顶栏拖到待办项上建立关联。关联后,待办项后面会显示目标纸片的打开入口。 --- ### 笔记纸 (Paper) 笔记纸不是 Markdown 编辑器,只是让一张纸能写得稍微清楚一点。 **格式快捷键** - `Ctrl+B` — 加粗。 - `Ctrl+I` — 斜体。 - `Ctrl+K` — 插入超链接。 - `Ctrl+Z` / `Ctrl+Y` — 撤销 / 重做。 - `Ctrl + 滚轮` — 按 10% 步进缩放正文文字(点击右下角百分比恢复 100%)。 **支持的 Markdown**:标题 `#`~`######`、加粗 `**文本**`、斜体 `*文本*`、删除线 `~~文本~~`、无序列表 `-`、有序列表 `1.`、引用 `>`、分割线 `---` / `***` / `___`、行内代码 `` `code` ``、代码块 ` ``` `、超链接 `[文本](URL)`,以及少量单行内联 HTML 标签(`b/strong/i/em/s/del/u/code/a href`)。 **本地图片** - 可以粘贴剪贴板图片、拖入图片文件,复制图片文件,或从菜单选图插入(含 WebP;系统不支持时会提示失败) - 图片以独占行的内部 `i:` 引用保存在本地 `note-assets.lmdb`,不是网络图床 - 默认开启「自动压缩过大图片」:图片过大或边长过长时会尝试压缩后再导入 - 删除对应的 Markdown 引用就能去掉显示;配合撤销还能找回 **不支持**:表格、附件、网络图片、其他嵌入内容、块级 HTML、复杂块编辑器。 **外部编辑**:顶栏 `MD` 按钮可以用系统默认的 `.md` 编辑器打开临时文件 **自定义后缀**:顶栏 `MD` 按钮可以改成 `.txt`、`.html`、`.bat` 等系统已关联的后缀,由 Windows 关联程序处理临时文件。 **脚本胶囊**:笔记第一行写入 `!p` 或 `!power` 后,后续内容会作为 PowerShell 脚本运行。折叠成胶囊后显示闪电图标,左键运行,右键打开纸片继续编辑;使用 `!pf` 或 `!powerf` 可以投递到常驻 PowerShell 进程。 --- ## 设置 **设置窗口**分为 **基础行为 / 视觉 / 快捷键** 三页;窗口内可以开 **高级模式**。 **基础行为** - **开机自启动**、普通悬浮提示、动画 - **Markdown 渲染** — 笔记 Markdown 三档显示强度 - **顶栏按钮** — 可单独隐藏新建待办、新建笔记和外部打开 - **外部打开** — 自定义笔记临时文件后缀 - **胶囊** — 胶囊模式、自动贴边、展开时保留边缘胶囊、记住展开位置、显示主胶囊(收起全部)、再次点击边缘胶囊收回纸片;高级另有悬停时隐藏关闭按钮、标题字数上限、边缘标题最大长度 - **待办与纸片** — 完成后自动清除、关联纸片、显示名称、关联纸片显示长标题、已关联纸片是否显示为胶囊、关联脚本点击运行;高级另有自动压缩过大图片 - **脚本胶囊**(高级)— 优先 PowerShell 7、隐藏运行窗口、常驻进程 - **全屏置顶策略**(高级)— 外部全屏时纸片和贴边胶囊是避让还是保持在上层 - **从窗口切换中隐藏纸片**(高级)— 展开的纸片不出现在 Alt+Tab 与任务视图(并会隐藏任务栏图标) - **从任务栏隐藏图标**(高级)— 展开的纸片不出现在任务栏 **视觉** - **主题与配色** — 跟随系统 / 浅色 / 深色;暖纸、墨、林、霞四套配色方案 - **缩放把手** — 标准(右下角不透明点阵)/ 柔和(右下角约 50% 透明点阵,默认)/ 隐藏(无点阵,可拖动纸片四边或四角缩放) - **字体** — 系统默认 / 微软雅黑 / 等线;可放 `papertodo.ttf` / `papertodo.otf`;可选增强加粗(需同目录粗体文件,如 `papertodo_bold.ttf`) - **字号与加粗** — 整体字号约 80%–120%;笔记 / 待办 / 标题 / 胶囊各自小中大(待办含更疏密的档位)与加粗 - **文字渲染** — 标准 / 柔和 / 锐利 - **图片标记显示**(高级)— 始终显示 / 仅编辑时 / 始终隐藏 **快捷键** - 可以为显示全部、隐藏全部、切换显隐、新建待办、新建笔记、退出绑定全局快捷键 - **快速启动侧边胶囊**(默认关):左右队列 1–9 快捷打开边缘胶囊;可「打开到鼠标位置」;快捷键新建纸片也会放到鼠标附近 - 胶囊模式下 **Esc** 可以快速收回胶囊 --- ## 托盘入口 PaperTodo 没有主窗口。托盘是唯一的全局入口。 ### 托盘操作 - **双击托盘图标** — 显示并拉回全部纸片。 - **右键托盘图标** — 打开菜单(顶部显示当前版本号)。 - **设置** — 打开独立设置弹窗 - **列表工具栏** — 可以快速切换全部纸片显隐,并新建待办纸或笔记纸 - **主胶囊** — 贴边队列顶部的主胶囊也可以右键打开和托盘一样的功能菜单 - **删除纸片** — 列表行右侧 `×` 先进入确认态,再选择「确认 / 取消」 ### 启动参数 可以配置到外部快捷键工具、脚本或 Windows 快捷方式: ```text PaperTodo.exe --show 显示并拉回全部纸片 PaperTodo.exe --hide 隐藏全部纸片(程序继续在托盘运行) PaperTodo.exe --toggle 有显示则隐藏全部,全部隐藏则显示 PaperTodo.exe --new-todo 新建一张待办纸 PaperTodo.exe --new-note 新建一张笔记纸 PaperTodo.exe --exit 保存状态并退出 PaperTodo.exe --language en-US 使用指定的默认界面语言启动 ``` 参数可以省略 `--`,并支持少量别名(比如 `open` = `show`,`quit` = `exit`)。 `--language` 支持 `zh-CN`、`en-US`、`ja-JP`、`ko-KR` 及区域变体,也可写成 `--language=en-US`;别名为 `--lang` 和 `--default-language`。只在主实例启动时决定本次界面语言,不会切换已在运行的实例,也不会写入 `data.json`。 程序已经在运行时再次带参数启动不会创建第二个进程,而是把命令转发给当前实例;无参数再次启动则显示并拉回全部纸片。 --- ## 数据与文件 数据保存在程序目录下: ```text PaperTodo/ ├─ PaperTodo.exe ├─ data.json 主数据文件 ├─ data.backup.json 保存前备份,主文件损坏时用于恢复 ├─ note-assets.lmdb 笔记图片资产文件 └─ PaperTodo.ico 可选:存在时优先作为自定义托盘图标,否则用内嵌图标 ``` **数据说明** 编辑后会自动保存;正常写盘前会滚动备份到 `data.backup.json`。 异常退出时可能会写入 `PaperTodo.crash.log` 供排查,数据仍以 `data.json` 和备份为准。 程序目录还可以放置自定义字体:`papertodo.ttf` / `papertodo.otf`(可选 `papertodo_bold` 等粗体文件)。 > ⚠️ 不要把程序放在只读目录,否则可能无法保存数据。 > 备份或迁移数据前请先从托盘退出 PaperTodo,再复制这些文件。 --- ## 下载与校验 GitHub Actions 构建两个 Windows x64 单文件 exe,直接作为 Release 发布: - **`...-self-contained.exe`** — 自包含 .NET Runtime。 - **`...-no-runtime.exe`** — 不带运行库(需要本机已安装 .NET)。 每个产物附带 Sigstore 签名(`.sig` / `.crt`)。 Release 发行说明从 [`CHANGELOG.md`](CHANGELOG.md) 自动提取对应 tag 的版本小节。 --- ## 构建与依赖 ```powershell dotnet build -c Release ``` 本地打包只生成 no-runtime 单文件;云端 Release 会同时发布自包含版和 no-runtime 版。 - **Windows / .NET 10 / WPF** — 运行环境和 UI 框架。 - **CMake / Visual Studio C++ 工具链** — 用来构建随程序打包的原生 LMDB 图片存储库。 - **[LMDB](https://github.com/LMDB/lmdb)** — 单文件、事务式的笔记图片资产存储。 - **[AvalonEdit](https://github.com/icsharpcode/AvalonEdit)** — 笔记纸文本编辑和 Markdown 轻量高亮。 - **[Hardcodet.NotifyIcon.Wpf](https://github.com/hardcodet/wpf-notifyicon)** — 托盘图标和菜单。 ## 其他 感谢 [linux.do](https://linux.do/) 社区。 --- ## Star 增长曲线 [![PaperTodo Star 增长曲线](https://api.star-history.com/svg?repos=snownico0722/PaperTodo&type=Date)](https://star-history.com/#snownico0722/PaperTodo&Date)