Finderを使ったファイルコピーが終了したら通知する

mac
デフォルトでもメニューバーとかに表示して欲しい。

photo-credit: IconAarchive


Finderを使ったファイルコピーが終了したら通知する



はじめに



1. AppleScriptでFinderのコピーウィンドウが開いているか確認します。


2. ShellScriptでコピーウィンドウを監視し、終了を検知して通知します。


0. ウィンドウタイトルの確認



私が作ろうとしているAppleScriptは、ウィンドウタイトルから指定するため、まずは、ウィンドウタイトルを取得します。以下のワンライナーを実行します。

osascript -e 'tell application "System Events" to get properties of first window of application process "Finder"'


私の場合、結果としては、「コピー」というタイトルになっているようです。


1. AppleScriptでのコピーウィンドウ確認



-- http://stackoverflow.com/questions/7921378/check-finder-activity
set thestatus to "0"
tell application "System Events"
set theList to get the title of every window of process "Finder"
repeat with theItem in theList
if theItem contains "コピー" then
set thestatus to "1"
end if
end repeat
end tell
thestatus



2. ShellScriptでのコピーウィンドウ監視



#/bin/bash

while :
do
var=`osascript ~/script/finder_copy_window.scpt`
case "$var" in
"1" ) echo copying > /dev/null;;
"0" ) growlnotify -t 'Finder' -m 'copy done'
break ;;
esac
done

exit 0



Growl通知



起動と同時に、ずっと監視していても良いのですが、リソースの無駄遣いなので、コピーに時間がかかりそうなときだけシェルスクリプトを実行することにします。シェルスクリプトを実行すれば、コピーが終わるとGrowlで通知されます。

$ cd ~/script

$ chmod +x finder_copy_window.sh

$ ./finder_copy_window.sh