使用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时自动给所有公式添加公式环境。但是这涉及到模式识别和自动分割什么的,比较麻烦,所以只是挖个坑,有时间了再说。

相关推荐
黄昏回响37 分钟前
信息系统基础知识(五):专家系统(ES)详解
程序人生·自动化·软件工程·改行学it
ONLYOFFICE4 小时前
如何通过创建插件,自动化Office文档中的重复操作
自动化·编辑器·onlyoffice·插件
Agent产品评测局6 小时前
传统RPAvsAI Agent,制造业生产场景能力对比详解 —— 2026企业级自动化选型全景盘点
运维·人工智能·ai·chatgpt·自动化
Be reborn6 小时前
用 Playwright 做自动化测试:如何验证网络请求并做断言
网络·python·自动化·pytest
yuanpan6 小时前
Python + PyAutoGUI 实战:Windows 自动化办公脚本开发入门
windows·python·自动化
曾庆睿6 小时前
【基于 RHEL 9.3 的 K8s + GitLab 全自动化部署环境搭建第一篇】
kubernetes·自动化·gitlab
曾庆睿6 小时前
【基于 RHEL 9.3 的 K8s + GitLab 全自动化部署环境搭建第二篇】
kubernetes·自动化·gitlab
AC赳赳老秦8 小时前
全链路自动化巡检:用 OpenClaw 实现服务器 - 应用 - 数据库全链路巡检,自动生成报告与整改建议
服务器·数据库·人工智能·深度学习·自动化·deepseek·openclaw
黄昏回响9 小时前
信息系统基础知识(六):办公自动化系统(OAS)详解
计算机网络·程序人生·面试·自动化·改行学it
半导体守望者9 小时前
MKS elite 300 600 750W RF Plasma Generator 射频电源 OPERATIONMANUAL
经验分享·笔记·机器人·自动化·制造