一些 macOS 平台上使用 jxa 的实践
AppleScript & JavaScript
osascript
用于执行自动化脚本osascript -l JavaScript demo.js
执行 js
jxa + Node.js
jxa 即 JavaScript for Automation
, 生态有
@jxa/run
可以 stringify js function, 并使用osascript
执行@jxa/types
提供自带 App 的类型, 如 (Finder, Mail 等
工具
@jxa/global-type
提供 AppleScript 全局变量定义, 如Application
@jxa/sdef-to-dts
将.sdef
定义文件转换成.d.ts
文件
其他
- jxa-common-used 提供了常用的
Path Finder
/Google Chrome
/iTerm2
的定义
npm mac-helper
基于 jxa-common-used & @jxa/run
对常用 App 进行封装
Finder & Path Finder
API
1 | export async function getPathFinderSelected() { |
AppleScript 版本
1 | tell application "Path Finder" |
shell function
1 | export APPLE_SCRIPT_HOME="$MY_ZSH_HOME/applescript" |
这样可以在命令行中使用的时候, 使用 pf
获取 PathFinder 中选择的文件
CLI app
CLI app 中可以使用约定, 如 $PF
字符串, 如果 input 为约定字符串, 则使用 PathFinder.allSelected()
获取选择, 并替换 input 为实际选中.
Platypus
Platypus 可以将命令行封装成 GUI app 执行, 如果输入是文件路径, 且其他参数可以固定, 可以使用上述约定 $PF
+ PathFinder 选择路径等程序读取的方法.
例如 https://www.npmjs.com/package/handy-img 可以压缩图片
使用
1 | set -x |
- default.sh 内容为空, 真正的命令是使用
zsh -c '<cmd>'
里的 - handy-img 包能够处理
-d '$PF'
的情况 - 选中文件夹后, 使用 raycast 打开这个 app, 就能执行预设的命令