安置到 Trilium

/ 0评 / 0

可能是最灵活的笔记软件。

之间有非常多关于自己写一套笔记系统的内容。从印象笔记,OneNote, 到 flomo, notion; 都有尝试过。但是总觉得限制太多或者功能太少。我不是很喜欢「自己的东西需要放到别人的手里」,所以印象笔记、OneNote, flomo 和 notion 就都没得用,只能换本地笔记,但是我又觉得 Markdown 如果不加插件功能太简单,加插件的 Obisidian 又需要按月收费才能有托管的同步和发布功能,不收费的 HedgeDoc 又不是很好加插件;\(\LaTeX\) 又太沉重;Word/OneNote 搞多端跨平台同步更是重量级。总归是没有遇到自己喜欢的那一个。

直到我从老张博客那里遇到了 Trilium.

什么是 Trilium

Trilium 是一个自托管的、基于富文本编辑的、具有极强自定义能力的开源个人知识库软件。「自托管」意味着你对自己的数据百分百负责,不需要担心哪一天你的笔记软件开始为你最喜欢的功能——通常是记笔记功能本身——收费;或者干脆因为运营不下去要关闭;或者你的账号因为这样或者那样的原因被吊销,几年的数据储备毁于一旦……

图 1 Trilium 软件主界面

「基于富文本」这一点可能会有一些争议性,但其实说白了就是提供一个可视化编辑器而不是直接要求你写无格式文本。其他提供高级自定义功能的知识库软件,比如 Obsidian, 是基于 Markdown 的,用任何编辑器都能打开;而 Trilium 是基于 SQLite 数据库的,你必须使用 Trilium 编辑器才能打开。不过 SQLite 数据库本身并没有做太多额外的加密,官方也提供了导出所有文件的功能。

使用 SQLite 而非平坦文件的更重要的原因还是 Trilium 的同步与索引功能。Trilium 的开发者认为笔记软件反正是需要索引功能的,这个索引功能如果是使用一个专门的索引文件就显得有点头疼:开发者需要自行处理并行读写、合并冲突等等怪问题。一旦这个问题处理不好导致索引损坏就需要再花很长时间去重建索引。而数据库本身就是围绕着并行读写、合并冲突、原子性操作这些问题设计的,所以与其自己重复造轮子不如搞拿来主义。

对了,同步功能。Trilium 采用一主多从、多端读写的结构。即有一个中心服务器提供「绝对真理」,其他客户端连接到服务器同步更改。中心服务器还提供一个 Web 端,这样你并不需要在每一台设备上都下载一个客户端,只要打开浏览器登录,体验完全一致。(是的没错,从技术上而言,客户端是一个 Electron 连接到本地配置为从机的服务端,所以如果没有非常特殊的需求,在托管模式下其实完全可以不在自己的计算机上安装客户端。)

在服务器上部署 Trilium 并不复杂,直接拉 Docker 镜像就可以。如果你并没有服务器或者限于条件不能联网同步笔记,你也可以把 Trilium 及其数据放在 U 盘里,随用随插,可以说是真正的方便。

细说自定义

相比于其他笔记软件,Trilium 的自定义功能使其达到了一个新的高度。其前端和后端的 API 都完全开放,使得你可以轻易更改整个软件的外观和添加新的功能。

一个最基本的例子就是你可以全局地更改软件的样式。比如我就感觉 Trilium 默认的标题样式很难让我看出分别,于是我就创建了自己的样式表来覆盖全局的样式表。最有意思的是,这个样式表本身就是一条笔记!你可以直接编写 CSS 代码,并给这条笔记设置上 #appCSS 属性,它就会立刻叠加到当前样式表内。

图 2 自定义 CSS 样式

Trilium 即使运行在本地,内核也仍然是服务端 - 客户端的。这意味着你可以通过一些 JS 脚本为 Trilium 的后端编程来增加它的能力。在早期 Trilium 没有保存网页的插件的时候,nil0x42 编写了打通 SingleFile 插件到 Trilium 笔记的最后一公里:SingleFile2Trilium.

至于前端的自定义能力,Trilium 则提供更多好玩的内容。注意到左侧图标中中心部分的两个图标了么?它们就是通过 Trilium 的前端自定义功能添加的。比如「新建待办」和「打开今日笔记」这样的功能并不是直接内建在应用内的,而是通过功能笔记条目以类似插件的形式实现的!只能说这种级别的自定义没有任何笔记软件敢这么做的。

我该使用 Trilium 么

如果你已经在使用一款笔记软件,在其中或多或少地写了一些东西,而且你并不觉得当前笔记软件有不可饶恕的缺陷,我个人认为你不需要切换到 Trilium -- 尤其是你需要真正做点笔记、做点思考的时候。我认为反复地在各个笔记软件之间切换和不停地换纸笔是一样的行为:我承认有些纸张格式和笔的书写体验会很适合做一些文字工作,但是你的重点是把字写到纸上,而不是研究哪种笔在哪种纸上写的手感最好。

如果你并不是一个喜欢折腾的人,那么 Trilium 我并不推荐使用——它的折腾成分,尤其是如果你要设置托管的话,还是蛮多的。Trilium 目前也在频繁更新,但它本身并不带自动更新组件,所以如果你并不是很熟悉整套设置流程的话,这个东西用起来还是比较「用户体验差」的。

但如果你和我一样喜欢自己设计和实现适合自己的工具的话,Trilium 绝对是不可错过的笔记软件。你可以轻易在上面实现自己需要的那些小功能。Trilium 也有一个热闹的开源氛围,其中分享的各种插件和改进或许也可以为你所用。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Your comments will be submitted to a human moderator and will only be shown publicly after approval. The moderator reserves the full right to not approve any comment without reason. Please be civil.