自动操作 automator 出现输入框后再运行脚本

由于我每天都写一篇博客文章,每次都需要我打开 vscode,然后在终端里面输入

hexo new post title...

我在想,能否使用 automator 让我这个过程变得更加流畅一些。

我的想法是,在 Mac 右上角,放一个图标,我点击图标后,弹出一个文本框,然后我输入文章名字,例如今天这篇的名字是 automator-input-box

输入完成之后,后台就自动执行

hexo new post automator-input-box

感觉还是挺简单的,应该是可以实现的。

一番研究之后,终于实现了。

automator-hexo-post

脚本内容

source $HOME/.zshrc
#echo $PATH
cd $HOME/hexobackup && pwd
hexo new post $1

首先放一个 「获得指定的文本」在最上面,然后下面是「运行Shell脚本」

第一行加载 zsh 的配置,是为了获取到 nodehexo 的环境变量,如果不加这一行,那么脚本运行的时候,它是找不到 hexo 的。当然我们也可以写出 hexo 的完整路径,例如 /opt/homebrew/.../hexo 之类,但是我发现这样会提示找不到 node,又得加 node 的环境变量。所以还是直接加载 zsh 的配置文件比较方便。

之后进入 hexo 博客所在的位置,我的是放在用户目录下的 hexobackup 中,所以可以写成 $HOME/hexobackup

进入到博客目录之后,再执行命令创建文章。

本来到这里就结束了的,不过我后面还是加了些内容,让结果可以通过通知显示出来。

这里的关键点是设置一个变量,来接收输出结果,然后在显示通知里面,使用这个变量。

我创建的是「应用程序」,所以可以选择把它保存到自己想放置的地方。

automator-APP

之后我把这个 APP 拖到 Dock 栏上面,可以非常快速地打开它。

hexo-post-dock

点击它之后,就会出现一个文本框,在这里我可以输入博客文章的文件名。不过它这里不能粘贴,只能手动输入。

automator-input-box-getText

当我输入完成后,点击「继续」按钮,就会去执行 shell 脚本。完成之后,会弹出一条通知。

hexo-post-notification

感觉比较遗憾的地方是,不能粘贴,以及只能按「继续」按钮,而不能用按回车键来代替。