コマンドラインでairdropを使う
2014/12/13追記: yosemite版を追記しました
社内のPCがほとんどMacなのでファイルのやりとりも自然とairdropが多くなります。
問題はその度にFinderを開かなければいけないことです。 alfredのairdropのworkflowとか入れてみたけど、なんかしっくりこないし。
というわけでコマンドラインで扱えるようにしましょう。
受け取る
10.9(Mavericks)以前
こちらのapple scriptを使うのが一番シンプルだと思います。
#!/usr/bin/osascript tell application "Finder" activate tell application "System Events" to keystroke "R" using {command down, shift down} end tell
ライセンスが明記されてないので、一応自己責任ということで。
10.10(Yosemite)以降
上記のスクリプトがYosemiteで動かなくなってしまったので、改良しました。 ちなみにYosemiteではJXAと呼ばれる、JSのコード形式でApplescriptを実行できる機能が提供されているため、JSで書きました。
#!/usr/bin/env osascript -l JavaScript function run() { finder = Application('Finder'); finder.activate(); delay(1); // sleep event = Application('System Events'); event.keystroke('R', {using: ['command down', 'shift down']}); }
送る
これもapple scriptで解決できるかなーと頑張ってみました。しかしAXShowMenuでFinderのコンテキストメニューを出したところまでは良かったんですが、メニュー選択ができず断念。
色々探してみた結果、こちらのgemにたどり着きました。
# インストール gem install terminal-share source ~/.zshrc # 実行 terminal-share -service airdrop -url file:///Users/akiomi/.vimrc
これを毎回打つのも面倒なので、シェルスクリプトを作りました。ライセンスはNYSLということで。
#!/bin/sh if [ $# -ne 1 ]; then echo "usage: $0 FILE" 1>&2 exit 1 fi if [ ! -e $1 ]; then echo "$1: No such file or directory" 1>&2 exit 1 fi target=file://$(cd $(dirname $1) && pwd)/$(basename $1) terminal-share -service airdrop -url $target
これで快適にファイルのやり取りができそうです。