1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
http://wakabamac.blog95.fc2.com/blog-entry-990.html

Task3 : あらゆるタスクを自動化する
Growl対応
OS10.4.11以上(UB)
シェアウェア ¥1,500(銀行振込)、¥1,700(PayPal)
『Task3』のつづき
Task3 はアイデア次第でいろいろ使えます。
しかし、様々なことに使えるだけに最初は取っ付きにくいかもしれません。
なので、僕の場合の設定例を挙げていきたいと思います。
t3_safari_download
Safariのダウンロード完了をGrowlでお知らせする
新規タスクを作成して、下のように設定します。
(トリガー)

リストで「ファイルのダウンロード」を選択
下の「ファイル名 : 」を空白にしていると、Safariですべてのファイルをダウンロードしたときに実行するタスクとなります。
(アクション)

リストで「メッセージを表示」を選択して、その下に任意のメッセージを入力。
環境設定ウインドウを開いて( cmmand+, )、「Growlを使ってメッセージを表示」にチェックを入れます。

これで cmmand+S で保存し、Safariで何かしらのファイルをダウンロードしたときに、Growl でお知らせするようになります。

Growl のタイトルは「そのタスクの名前+(Task3)」となります。
ついで、もうひとつアクションを追加して、ダウンロードフォルダを開くようにしておくと便利です。

SafariStand を使用していて、ダウンロードしたものを「2009-09-26」といった日付の名前のフォルダに保存するように設定している場合は、アクションで下の AppleScript を実行させるようにすると、そのフォルダを Finder で開くようにできます。
activate
」コマンドを入れて、Finderが最前面になるようにしてもいいと思う)
これで、Safari でファイルをダウンロードしたときに、Growl でお知らせ+そのフォルダを開くようになります。

t3_some_app_launch
複数のアプリケーションをセットで起動するようにする
例えば、iTunes と 再生中の曲とアートワークを表示するアプリ「TuNe」をセットで起動するようにしてみます。
新規タスクを作成し、次のように設定します。
(トリガー)

「アプリケーションを監視」を選択、iTunes が起動したときのトリガーに設定する。
(アクション)

「ファイル/アプリケーションを開く」を選択、Tune.app を指定する。
これで保存すると、iTunes を起動すると、セットで Tune が起動するようになります。
同じ要領で新規タスクを作成し、iTunes が終了させたときに Tune を終了させるようにしておくといいです。
t3_release_memory
定期的に使っていないメモリを解放する
定期的にメモリの使用状況を監視して、使ってない(Inactive)なメモリを解放するタスクを設定してみます。
(どこかで聞いたような・・・)
(トリガー)
「繰り返し」を選択します。
時間間隔はお好みで。僕の場合は15分ごとに設定しています。
(アクション)
まず下の AppleScript を「アプリケーション形式」で保存します。
(Task3 上で実行する AppleScript では、「
display dialog
」「display alert
」などが実行できないため)
そして Task3 のアクションの設定で、このアプリケーションを開くように設定します。

(実行条件)
下の AppleScript で実行条件を判別するようにします。

値は真偽値(
true
or false
)か、数値で判断します。数値の場合は 0 だとアクションを実行しない、0 以外だと実行します。
上のスクリプトの場合は、「空き」メモリが1000MB以下だと、
true
を返してアクションを実行するようになります。
これでタスク保存して運用すると、15分ごとにメモリの状況を監視して、メモリの「空き」領域が1000MB以下になったら、「メモリ解放.app」を実行するようになります。
「メモリ解放.app」が起動すると、ダイアログでスクリプトを実行するかどうかの確認をします。

(適当なアイコンを付けると、ダイアログでもアイコンが表示される)
これで「Run」をクリックすると、
du -s / &> /dev/null & sleep 10 && kill $!
のコマンドを実行して、使用していない(Inactive)メモリを解放します。(このコマンドは『ものかも』さんを参考、というよりそのまんま)
約12秒後に Growl で完了を知らせて、現在のメモリの状況を表示します。

(「非使用」が減って「空き」が少し増えてます)
メモリの状況を確認するコマンドは『うむらうす』のハルさんのを
スワップの状況を確認するコマンドは『K-muraの物置』さんの「メモリ情報.scpt」を参考にしました。
ハルさん作の「Freemem Monitor」とか、ものかもさんの「Libera Memory Resident」を使えばいいんだけど、自分好みに動作させたくて作ってしまいました。
また、この「メモリ解放.app」では「
du
」コマンドを使っているけど、ハルさんのように Locate database の更新 を使うならば
/usr/libexec/locate.updatedb 2 < /dev/null || exit 0
該当箇所をこれにするとOK。ここで使用した「メモリ解放.app」が欲しい人は、アップロードしたから適当にここからダウンロードして下さい(上のソースと同じだから意味はないけど)。
t3_visualizer
スクリーンセーバの代わりにiTunesのビジュアライザを使用
iTunes を起動して再生している最中は、スクリーンセーバの代わりに iTunes のビジュアライザを使うようにしてみます。

(トリガー)

「アプリケーションを監視」をリストから選択して、「ScreenSaverEngine」が最前面に移動したときに設定します(「起動」したときに設定してはダメ)。
「ScreenSaverEngine」は
/System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
の場所にあります。名前を手入力してもOK。(アクション)

以下の AppleScript を実行するようにします。
とりあえず、10分後に設定。)
このスクリプトは、iTunes で再生中のときのみ、スクリーンセーバが起動すると、それを終了して代わりに iTunes のビジュアライザを表示するようになります。
ビジュアライザだとスリープしないので、10分後にスリープするようにしてあります。(正確には1分ごとに状態をチェックして、そのときにビジュアライザがフルスクリーンで最前面に表示されているかどうかをチェックし、10回目にまだビジュアライザが表示されていたなら、スリープさせる代物です。)
スリープする必要がないならば、該当箇所をコメントアウトするなりして下さい。
※ビジュアライザの種類によっては、ちゃんとスリープできないかも。
これでタスクを保存すると、スクリーンセーバが起動すると、しばらくして iTunes のビジュアライザに切り替わるようになります。
(iTunes を再生している場合のみ)
t3_repair_permissions
スクリーンセーバ起動中にアクセス権の修復を行う
スクリーンセーバが起動しているときというのは、基本的に何もしていないときであって、その時間を有効に使って何かできないかと考えると「アクセス権の修復」をやるといいかと思い、次のようなタスクを設定してみました。
新規タスクを作成し、トリガー、アクション、実行条件を設定します。
(トリガー)

「アプリケーションを監視」をリストから選択して、「ScreenSaverEngine」が最前面に移動したときに設定します(「起動」したときに設定してはダメ)。
「ScreenSaverEngine」は
/System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
の場所にあります。名前を手入力してもOK。(アクション)

「シェルスクリプトを実行」をリストから選択して、下記のスクリプトを入力します。
diskutil repairPermissions /
(実行条件)

「指定時間後に実行する」を選択して5秒後に設定します。
この「実行条件」の設定は別になくても大丈夫で、好みによります。
これで、このタスクを保存しておくと、スクリーンセーバが起動して5秒後に「アクセス権の修復」を開始するようになります。
ただ、システム環境設定の「省エネルギー」パネルで、スクリーンセーバの起動からスリープするまでの時間が、ある程度必要です。
他にも、スクリーンセーバが起動している間に、各種メンテナンススクリプトを走らせておくと便利かも。
t3_use_as_launcher
メニューバーに表示するランチャとして使用する
Task3 の環境設定( command+, )で「メニューバーにTask3メニューを表示する」にチェックします。

こうすると、メニューバーに Task3 の各タスクが表示されるようになります。

ここに表示されるタスクを実行すると、そのタスクのトリガー、実行条件に関係なく、アクションを実行します。
違う見方をすれば、タスクを設定するときには、トリガー、実行条件は設定せずとも「アクション」のみの設定して、このメニューをランチャのようににも使えるということです。
メニューバーから使うランチャ類いのものは他にもいろいろあるし、Dockなどを使えばいいかもしれませんが、Task3では複数のアプリケーションを1度に起動させることができます。

「アクション」タブで、1つのタスクに複数のアクションを設定して、同時にアプリケーションを起動しておくようにすると、普通のランチャとは違った使い方もできます。
他にもよく使うフォルダ・ファイルを開くといったことにも使えます。

例えば、「~/Library」「/Library」の2つのフォルダを同時に開くとか、各種作業で保存したりするフォルダ・ファイル、それに使うアプリケーションをまとめて開くとか、いろいろ使い道はあると思います。
別にメニューから実行しなくても、トリガーを設定して「ホットキー」からそのタスクを実行することもできます。

実行条件でアプリケーションが起動しているとき、最前面のときなどに設定して、ホットキーが有効な場面を制限したりするのもいいでしょう。
このように Task3 はアプリケーションの起動、ファイル・フォルダを開く、AppleScript の実行、シェルスクリプトの実行、ボリュームのアンマウントなど、様々なことをアクションに設定できるので、Task3 のメニューはただのランチャではなく、かなり便利に使えます。
それと、Task3メニューに表示される順番は、Task3本体で設定したタスクの通りになるので、メニューでよく使うタスクを上の方に持ってきたり、判りやすい名前にした方が使いやすいです。

t3_maintenance
メニューバーから各種メンテナンスをする
「アクセス権の修復」などの各種メンテナンスを行う為のスクリプトなどを、アクションに登録しておくと、Task3メニューから お手製の『MainMenu』みたいにも使えます。

いくつか役に立ちそうなものを挙げると・・・
(QuickLookのリセット)
qlmanage -r
参考『クイックルックで表示できないとき - E-WA’S BLOG』(Dockの再起動)
killall Dock
(メニューバーの再起動)
killall SystemUIServer
(Finder の再起動)
(ただ不完全で再現に失敗することもままある)
(LaunchServices の再構築)
参考『コンテキストメニューの「このアプリケーションで開く」がおかしくなった時の対処方法 - soundscape out』
このタスクを実行すると、ターミナルが開きます。

すぐに終わるから、ちゃんとできてるのか不安になる・・・。
なぜ「シェルスクリプトを実行」で直接実行せずに、AppleScript 経由でターミナル上で実行させているのか。
その理由は Task3 上で、この LaunchServices の再構築 を実行すると、ターミナル.app と UTI の関連付けがおかしくなってしまうことがあったからです。
(深く検証した訳ではないので、もしかしたら違う原因かも?)
( Locate database の再構築)
AppleScript でやってる理由は、「Locate database の再構築」は時間が掛かるので、完了後に Growl でお知らせするためです。

なぜだか
line 97: /var/db/locate.database: Permission denied
っていうエラーが出てくるけど、気にしないでおこう。(アクセス権の修復)
AppleScript でやってる理由は、これも時間が掛かるので、完了後に Growl でお知らせするためです。

相変わらず ACL がなんとか・・・とかいうのが出てくる。
(メンテナンススクリプト)
「
sudo
」の付くコマンドは Task3 上では直接実行できないため、AppleScript 経由で、ターミナル上で実行しています。
これを実行すると、ターミナルが起動してパスワード入力を求められます。

入力して returnキー で実行すると、daily, weekly, monthly スクリプトが実行されます。
(なぜだか実行時間がやけに短い。OS10.6では内容が変わったのか?わからないけど、ちゃんと実行されてるかは不明)
ちなみに、いつ実行されたか確認するには
ls -al /var/log/*.out
のコマンドで確認できます。もしくは コンソール.app でログを見ます。他にも「
rm
」コマンドでキャッシュを削除するといったスクリプトもお好みで登録しておいたらいいでしょう。
これらのスクリプトなどを、Task3 の「アクション」として登録しておくと、いつでもメニューバーから実行できて便利です。
また、別のタスクを設定するときに、他のタスクのアクションを実行できるので、上記のようなシェルスクリプト、AppleScript をいろいろこまめに用意していると組み合わせて構成できてラクです。

アクションの設定で、リストから「他のタスクのアクションを実行」を選択する。
その下のリストで登録しているタスクを選択します。
t3_bookmarks
メニュー、ホットキーで開くブックマークとして使う
Task3メニューにタスクを表示させて、そのタスクにアクションとしてURLを開く AppleScript を登録しておくと、このメニューはブックマークとしても使えます。
AppleScript でURLを開くのは簡単です。
例えば、
open location "http://wakabamac.blog95.fc2.com/" |
この AppleScript を複数行にして、いつも開いているURLなどを何個か入力しておきます。

これでタスクを保存すると、Task3メニューにも反映されるので、これを実行すると、そのURLをデフォルトのWebブラウザでまとめて開くといった使い方ができます。

また、このタスクにトリガーで「ホットキー」を付けることができます。

ホットキーは command shift option control と 文字キー を合わせたものが設定できます。
ファンクションキーなどは設定できません。
また、数字キー を設定したときには、テンキーの数字のキーでは機能しません(現在調査中とこと)。
上の例でいうと、これでホットキーを入力したときに、Webブラウザでそれらのページが一気に開きます。
また、「実行条件」でこのトリガーが機能するときを、特定のアプリケーションが起動しているとき、最前面のとき、背面になったとき、起動していないときなどに制限することもできます。
例えば、Safari が最前面のときだけ機能するようにしてみます。

「実行条件」タブで「アプリケーションの起動」を選択して、Safari が 最前面で動作中として保存します。
こうすると、トリガーで設定したホットキーは、Safari が最前面のときだけしか機能しないようになります。
『Task3 / タスクの設定例(2)』へつづく
この記事では Task3 version 1.1.0 を使用しています。
(ダウンロードリンク)
Site top page : Spread Your Wings
Download page : Task3
(関連記事)
Task3 --- 基本的な「タスク」の設定のやり方など
Task3 / タスクの設定例(1)
- Safariのダウンロード完了をGrowlでお知らせする
- 複数のアプリケーションをセットで起動するようにする
- 定期的に使っていないメモリを解放する
- スクリーンセーバの代わりにiTunesのビジュアライザを使用
- スクリーンセーバ起動中にアクセス権の修復を行う
- メニューバーに表示するランチャとして使用する
- メニューバーから各種メンテナンスをする
- メニュー、ホットキーで開くブックマークとして使う
Task3 / タスクの設定例(2)
- ホットキーを使ってアクションを実行する
- 留守のときに誰かがMacを起動したらメールで知らせる
- フォルダに変化があったら Growl でお知らせ
- 特定のアプリが最前面になったときに「英数」入力に切り替える
- ボリュームをマウントしたらバックアップアプリを起動する
- ボリュームをまとめてアンマウント
Task3 / タスクの設定例(3)
- 1つのウインドウクリックで そのアプリすべてのウインドウを前面に表示させる
- アプリケーションが最前面でないときはウインドウを隠す
- 特定のアプリが最前面になったとき、他のアプリを隠す
- 一定時間ごとにチェックして 最前面のアプリ以外のウインドウを自動的に隠す
- 特定のアプリが最前面のときだけ Dock を表示させる
- iTunes が最前面のときはウインドウ表示、背面に移動したはミニプレイヤー表示
Task3 / タスクの設定例(4)
- ホットキーで iTunes を操作したら便利そうな AppleScript
- 曜日ごとにログインアイテムを変更する
- ClamXav で定期的にウイルススキャン
- タスクを AppleScript で実行する
- タスクのアクションで実行する AppleScript について
▽同じ「タグ」が付いた関連記事
trackback URL