前々からJXAに興味があったので、練習がてら書いてみました。
AppleScriptを一から覚えるのは面倒ですが、JXAなら一度勝手が分かれば、スラスラ書けそうな気がします。同様のことをAppleScriptでやる記事は良く見かけますが、JXAでは見かけなかったので、誰かの参考になれば幸いです。
Script Editorで記述したスクリプトは、メニューバーから
File > Export...
を選択し、File FormatにApplication
を選択して保存。cdtoやgo2shellなどと同様に、Finderのツールバーに配置して利用できます。
サンプルコード
open-cwd-with-iterm2.js
(function () {
// iTerm2以外の任意のアプリケーションの実行可能パスも指定可能
let exePath = "/Applications/iTerm.app/Contents/MacOS/iTerm2";
let finder = Application("Finder");
let frontWindow = finder.windows().filter(function (w) {return w.index() == 1;})[0];
let cwd = $.NSURL.alloc.initWithString(frontWindow.target().url()).fileSystemRepresentation;
let app = Application.currentApplication();
app.includeStandardAdditions = true;
cmd = `open -a "${exePath}" "${cwd}"`;
result = app.doShellScript(cmd, {
administratorPrivileges: false,
withPrompt: '',
alteringLineEndings: false
});
console.log(result);
})();
任意のアプリケーションの実行可能パス取得方法
- Finderで
/Applications
を開く - 任意アプリケーション(*.app)を右クリして
Show Package Content
を選択 - Contents/MacOS/ の中から実行可能ファイルを見つけ右クリ
- Optionキーを押下しながら、コンテキストメニューの中から
Copy "XXXX" as Pathname
を選択する
アプリケーションの実行可能パス例
Name | Path |
---|---|
Visual Studio Code | /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/MacOS/Electron |
Visual Studio Code - Insiders | /System/Volumes/Data/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Electron |
Sourcetree | /System/Volumes/Data/Applications/Sourcetree.app/Contents/MacOS/Sourcetree |
Fork | /System/Volumes/Data/Applications/Fork.app/Contents/MacOS/Fork |
Sublime Merge | /System/Volumes/Data/Applications/Sublime Merge.app/Contents/MacOS/sublime_merge | /System/Volumes/Data/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge |
Sublime Text | /System/Volumes/Data/Applications/Sublime Text.app/Contents/MacOS/Sublime Text |
/System/Volumes/Data/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl |
アイコン変更方法
- Finderで
/Applications
を開く - 任意アプリケーション(*.app)をコピー(Cmd+c)
-
open-cwd-with-app.app
を右クリしてGet Info
を選択(Cmd+i) - 左上のアイコンを選択してペースト(Cmd+v)