PaperTodo

极简 Windows 桌面便签工具。让桌面上有几张安静、可用、不会打扰人的纸。WPF 原生,支持待办与 Markdown。——A minimalist Windows desktop sticky note tool. It puts a…

snownico0722
C#1.4k64 forksupdated 1 day ago
git clone https://github.com/snownico0722/PaperTodo.gitsnownico0722/PaperTodo

PaperTodo · 一张纸

让桌面上有几张安静、可用、不打扰人的纸。

一个极简的 Windows 桌面便签工具,只用 WPF 原生实现,没有主窗口、没有账号、没有管理器。

version platform .NET UI

官网https://snownico0722.github.io/PaperTodo/

交流群QQ 交流群:551612664——奇奇怪怪的魔法研究基地

语言:中文 | English


预览

纸片
桌面纸片
Markdown 浏览
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 快捷方式:

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 = showquit = exit)。

--language 支持 zh-CNen-USja-JPko-KR 及区域变体,也可写成 --language=en-US;别名为 --lang--default-language。只在主实例启动时决定本次界面语言,不会切换已在运行的实例,也不会写入 data.json

程序已经在运行时再次带参数启动不会创建第二个进程,而是把命令转发给当前实例;无参数再次启动则显示并拉回全部纸片。


数据与文件

数据保存在程序目录下:

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 自动提取对应 tag 的版本小节。


构建与依赖

dotnet build -c Release

本地打包只生成 no-runtime 单文件;云端 Release 会同时发布自包含版和 no-runtime 版。

  • Windows / .NET 10 / WPF — 运行环境和 UI 框架。
  • CMake / Visual Studio C++ 工具链 — 用来构建随程序打包的原生 LMDB 图片存储库。
  • LMDB — 单文件、事务式的笔记图片资产存储。
  • AvalonEdit — 笔记纸文本编辑和 Markdown 轻量高亮。
  • Hardcodet.NotifyIcon.Wpf — 托盘图标和菜单。

其他

感谢 linux.do 社区。


Star 增长曲线

PaperTodo Star 增长曲线

more like this

Scythe

SCYTHE is a lightweight, C#-based game engine focused on modifiability and rapid iteration using Raylib.

C#50

tobira.nvim

Open the next door in your Vim journey — personalized command discovery based on your actual usage

Lua51

search

search projects, people, and tags