# 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
|
| Markdown 浏览 |
| :---: |
|
|
| 胶囊模式 | 高级胶囊 |
| :---: | :---: |
|  |  |
| 纸片可折叠为小胶囊,减少桌面占用。 | 折叠胶囊自动贴到屏幕边缘,悬浮时滑出。 |
---
## 设计理念
- **纸片优先** — 每张纸都是独立窗口,直接放在桌面上,不需要打开管理界面。
- **即时使用** — 想记就写,完成就勾掉;所有内容都会自动保存。
- **无需管理** — 不做分类、标签、搜索、归档、同步、账号、统计、提醒。
- **原生实现** — 基于 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 增长曲线
[](https://star-history.com/#snownico0722/PaperTodo&Date)