使用applescript自动化trilium的数学公式环境

众所周知,trilium什么都好,就是对数学公式的支持以及markdown格式的导入导出功能太拉了,而最拉的时刻当属把这两个功能结合起来的时候:导入markdown文件之后,原来的数学公式全没了,需要一个一个手动用ctrl+m丢进来。因此,为了避免血压升高以及浪费时间,我们希望在trilium中把markdown自动化。

从开发者的角度来看这个功能应该是比较容易的,可惜我们既不是开发者,也不懂SQL,所以只能进行基于脚本的开发,而不是基于代码的开发了。

9.22 ver0

恰好最近切换到mac进行工作,发现了一个很有意思的内建脚本工具"自动操作"。基于自动操作,我们可以实现很多有趣的脚本功能,特别是在各个app之间串联开发是很爽的。据说alfred这个软件的pro版本甚至支持可视化开发,可惜需350。我囊中羞涩,因此只能自己开始造轮子了。

因为是初学者,我们先实现一个最简单的功能,就是把"复制公式+创建公式环境+粘贴公式+退出公式环境"这四个操作合成为一个快捷键就能执行的内容。

好在,这四个功能都是支持快捷键的。因此,我们只需要用脚本连续使用这四个快捷键:"ctrl+c, ctrl+m, ctrl+v, enter"即可。google一下如何用applescript模拟按键,得到了这篇很好的回答:https://apple.stackexchange.com/questions/36943/how-do-i-automate-a-key-press-in-applescript

于是,我们写出了下面的代码:

applescript 复制代码
tell application "System Events" to keystroke "c" using command down
tell application "System Events" to keystroke "m" using command down
tell application "System Events" to keystroke "v" using command down
tell application "System Events" to keystroke return

注意,似乎applescript里面对修饰键和主要键分得很开,所以ctrl+c其实写成了keystroke "c" using command down的形式

然后,我们打开"自动操作"的软件(可以用快速访问搜索),选择新建一个快速操作(因为快速操作可以赋予快捷键),然后在右边的栏目里面选择工作流程是运行applescript,复制上面的代码,并且配置如下:没有输入是显然的,我们只是定义一个快捷键组合;然后操作的位置当然是放在trilium notes里面,这样存储后我们在trilium note的服务一栏里面就能找到这个功能了。

用ctrl+s保存这个服务,随便取个名字(玄学起见,里面最好不要带空格),然后我们为这个服务添加一个快捷键。打开系统设置-键盘与输入法-键盘快捷键-服务-通用,就能找到我们新建的这个服务,然后为它添加快捷键就行了,我选择的快捷键是ctrl+shift+m.

下面是执行过程中我遇到的一些错误:

问题处置

直接运行的话可能会提示没有权限,一般来说会提示要怎么添加权限,如果没有的话,在系统设置-隐私与安全性-辅助功能里面把相关应用都添加上权限就行了:

另外,我在实际使用中还观察到一个问题,就是当连续使用这个脚本太多次的时候系统会突然报错说没有权限,此后就要冷静一段时间(5分钟左右)才能继续使用。我在overflow上也看到了类似的提问,但是除了玄学处理之外没什么特别好的解决方案。我猜测这可能和苹果的系统安全设置有关系,比如不能在一定时间内连续使用太多次脚本什么的,以防止恶性脚本操纵系统。目前还没有特别好的解决方案。

下一个版本(如果有)的话,我想实现的功能是直接把整段markdown复制进trilium时自动给所有公式添加公式环境。但是这涉及到模式识别和自动分割什么的,比较麻烦,所以只是挖个坑,有时间了再说。

相关推荐
2601_962293793 小时前
【Python教程:自动化处理文件】
python·自动化·编程·文件处理·os模块
DeepVisionary6 小时前
SoundHound 完成收购 LivePerson:股权对价 4300 万美元,实际总成本约 3.04 亿
python·自动化
顿哥GPT7 小时前
ChatGPT Plus / Pro + Codex 深度实战指南(2026年9月5日):从模型能力对比到 Codex 自动化编程工作流全解析
人工智能·chatgpt·自动化
凯哥Java8 小时前
接口采集工具自动化验证文章(测试发布,可删除)
运维·自动化
事界见闻9 小时前
汽车备件自动化立体仓库该如何规划?借鉴丰田 45000 个 SKU 项目实践
大数据·自动化·汽车
Allen_LVyingbo21 小时前
医疗AI基础2026-构建可靠智能体的编程路径(上)
大数据·数据库·人工智能·python·自动化
智购科技无人售货机工厂店1 天前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互
沫儿笙1 天前
安川机器人氩弧焊省气装置
机器人·自动化
Wang's Blog1 天前
Vibe Coding一人即团队系列62: Excel数据分析与可视化自动化
数据分析·自动化·excel
玫瑰互动GEO1 天前
腾讯AnswerBit(GEO优化监测平台)技术拆解:UI自动化如何采集真实AI回答
大数据·人工智能·ui·ai·自动化·geo优化