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

相关推荐
旦莫18 分钟前
AI测试Agent的两种架构路径:谁做主控?
人工智能·python·架构·自动化·ai测试
志栋智能1 小时前
超自动化安全:构建智能安全运营的神经系统
大数据·运维·网络·人工智能·安全·自动化
是有头发的程序猿1 小时前
AI Agent电商自动化实战:淘宝商品详情API无人化采集与分析教程
运维·人工智能·自动化
企服AI产品测评局2 小时前
AI Agent实测:Agent Store现成应用如何重塑企业自动化?
运维·人工智能·ai·chatgpt·自动化
映翰通朱工3 小时前
【实战教程】映翰通 EC312 边缘计算机:CAN 总线数据采集并经 DSA 上传 AWS IoT 全流程
物联网·自动化·智能路由器·边缘计算·运维开发
兆。3 小时前
LangChain自动化工具集成指南:面向爬虫开发者
爬虫·langchain·自动化
古月开发4 小时前
比价助手:截图自动全网比价与历史价格查询实战
人工智能·信息可视化·自动化
wb043072014 小时前
从接单到出餐——从阿明的“手写菜单“到自动化流水线,看 CI/CD 与 DevOps 的完整旅程
ci/cd·架构·自动化·devops
羑悻的小杀马特4 小时前
从 Claude Code 到 QClaw:AgentSkills 规范的跨生态实践与工程取舍!
人工智能·自动化·agent·skills·openclaw·qclaw
雅菲奥朗14 小时前
企业级 AI 自动化|OpenClaw 龙虾实战与认证
运维·人工智能·自动化·openclaw