bgpict 
わかばマークのMacの備忘録
初心者による Mac OSX の便利な使い方や、ソフトウェアの紹介など、Macのこといろいろ。

2009 / 11

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-994.html

Task3 / タスクの設定例(4)
icn_Task3.jpg
Task3 : あらゆるタスクを自動化する
Growl対応
OS10.4.11以上(UB)
シェアウェア ¥1,500(銀行振込)、¥1,700(PayPal)


Task3 / タスクの設定例(3)』のつづき

Task3 / タスクの設定例(4)
(各項目へジャンプします)




t3_itunes_scripts

ホットキーで iTunes を操作したら便利そうな AppleScript


Task3 はホットキーを設定してアクションを実行できるのですが、ホットキーで iTunes を操作できたら便利だろうということで、それ用の AppleScript を書いてみました。

それぞれの AppleScript を Task3 の「アクション」に設定して、トリガーでホットキーを設定して使います。


再生・一時停止
tell application "iTunes"
if player state is playing then
pause
else
play
end if
end tell

iTunes が起動していないときでも、このスクリプトを実行すると、iTunes が起動して再生し始めます。


次のトラックを再生
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes" to play (next track)
end if
(iTunes が起動していないときは、動作しない)



停止
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes" to stop
end if
(iTunes が起動していないときは、動作しない)



ボリュームUP
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes"
set soundVol to sound volume
if soundVol > 90 then
set sound volume to 100
else
set sound volume to soundVol + 10
end if
end tell
end if
(iTunes が起動していないときは、動作しない)



ボリュームDOWN

ソースは略(iTunes が起動していないときは、動作しない)



ミュートのON/OFF切り替え
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes"
if mute is false then
set mute to true
else
set mute to false
end if
end tell
end if
(iTunes が起動していないときは、動作しない)



現在の曲情報を Growl で表示
set rt to return as text
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes"
if class of current track is not URL track then
try
tell current track
set theTrack to name
set theArtist to artist
set theAlbum to "[ " & album & " ]"
set numRating to rating
set theRating to "―――――"
if numRating < 5 then set theRating to "・・・・・"
if numRating ≥ 5 and numRating < 15 then set theRating to・・・・"
if numRating ≥ 15 and numRating < 25 then set theRating to "★・・・・"
if numRating ≥ 25 and numRating < 35 then set theRating to "½・・・"
if numRating ≥ 35 and numRating < 45 then set theRating to "★★・・・"
if numRating ≥ 45 and numRating < 55 then set theRating to "★★½・・"
if numRating ≥ 55 and numRating < 65 then set theRating to "★★★・・"
if numRating ≥ 65 and numRating < 75 then set theRating to "★★★½"
if numRating ≥ 75 and numRating < 85 then set theRating to "★★★★・"
if numRating ≥ 85 and numRating < 95 then set theRating to "★★★★½"
if numRating ≥ 95 then set theRating to "★★★★★"
end tell
end try
else if class of current track is URL track then
set theTrack to current stream title
set theArtist to comment of current track
set theAlbum to "[ " & name of current track & " ]"
set theRating to ""
end if

if exists artworks of current track then
set theArtwork to data of artwork 1 of current track
try
tell application "GrowlHelperApp" to notify with name "Task3MessageWorkNotification" title (theTrack as Unicode text) description ((theArtist & rt & theAlbum & rt & theRating) as Unicode text) application name "task3runner" pictImage theArtwork --sticky "yes"
end try
else
try
tell application "GrowlHelperApp" to notify with name "Task3MessageWorkNotification" title (theTrack as Unicode text) description ((theArtist & rt & theAlbum & rt & theRating) as Unicode text) application name "task3runner" icon of application "iTunes" --sticky "yes"
end try
end if
end tell
end if
(iTunes が起動していないときは、動作しない)

現在再生中の曲情報を Growl で表示します。
090916tsk81.jpg

ただし、Growl でアートワークを表示させているせいか?やけに「GrowlHelperApp」への負荷が掛かってしまう。
それと、このスクリプトを AppleScript Editor で試しに実行すると、AppleScript Editor が強制的に終了してしまうので注意。(どこに問題があるのかよくわからない)



現在の曲のレートを★1/2ずつUP

ソースは略(iTunes が起動していないときは、動作しない)

現在再生中の曲のレートを★1/2UPします。
そして Growl でその曲情報を表示します。



現在の曲のレートを★1/2ずつDOWN

ソースは略(iTunes が起動していないときは、動作しない)

現在再生中の曲のレートを★1/2DOWNします。
そして Growl でその曲情報を表示します。



別にホットキーに設定しなくても、Task3メニューから使えば、メニューバーにある iTunes コントローラ として使えます。
090916tsk82.gif

これら上記の AppleScript を保存したものをアップロードしたので、欲しい人はどうぞ。
iTunes_Scripts_for_Task3

AppleScript Editor で開いて、ソースを Task3 にコピペして使って下さい。
この中の「♫ Show Info.scpt」「★↑ Increase Rating.scpt」「★↓ Decrease Rating.scpt」の3つは AppleScript Editor で実行すると、AppleScript Editor が終了してしまうので注意。





t3_login_items

曜日ごとにログインアイテムを変更する


Task3 を使えば、曜日ごとに「ログインアイテム」を変更して、日によって違うアプリケーションを起動させることができます。

(トリガー)
リストから「コンピュータの起動/終了」を選択、コンピュータの起動時に実行するように設定します。
090916tsk83.gif


(アクション)
ファイル/アプリケーションを開く」で、ログイン時に起動させたいアプリケーションを選択して登録します。
※ここで登録したアプリケーションは、重複しないように
システム環境設定アカウントログイン項目
で登録しないようにしておきます。


(実行条件)
リストから「日時を制限」を選択して、曜日を選択していきます。
090916tsk84.gif

これでタスクを有効にして保存すると、月曜〜金曜までの「ログイン項目」を設定できます。
また新規タスクを作成して、ここで指定した別の曜日にも、同じように起動するファイル・アプリケーションを設定すると、曜日ごとに違った「ログイン項目」になります。




他にも日にちを指定して、その日ごとに違うアプリケーションを「ログイン項目」に設定したい場合は、「実行条件」にAppleScript を設定することによって可能です。

例えば、月末だけ起動するように設定する場合、「実行条件」に下のような AppleScript を設定します。
090916tsk85.gif
set endOfMonthList to {"0131", "0228", "0229", "0331", "0430", "0531", "0630", "0731", "0831", "0930", "1031", "1130", "1231"}
set theToday to do shell script "date '+%m%d'"
return (endOfMonthList contains theToday)
(月末以外の他の日付を設定したい場合には、1行目の {} 内に "1201" とか日付の数字を入れて下さい)
これで「アクション」でアプリケーションを起動するようにすれば、それは月末だけの「ログイン項目」になります。





t3_virus_scan

ClamXav で定期的にウイルススキャン


ClamXavでウイルススキャンするときに、Task3 を併用すれば夜中にMacを起動(スリープ復帰)して、ウイルススキャン、終わったらシステム終了(スリープさせる)といった使い方ができます。

まず ClamXav の環境設定で「スケジュール」を設定します。
090916tsk86.gif
(↑ClamXav の環境設定のウインドウの画像です)
僕の場合は「ウイルス定義の更新」を毎週土曜日AM3:15、「スキャン」を毎週土曜日AM3:20 に実行するように設定しています。

CalmXav のスケジュール設定では、その時間にMacが起動している状態でないと機能しないので、Task3 で土曜日AM3:15よりも前に Mac を起動させるように、下のように設定しておきます。

(トリガー)
スケジュール」をリストから選択して、毎週土曜日AM3:10 に設定します。
090916tsk87.gif


(アクション)
コンピュータを起動/終了」をリストから選択して、コンピュータを 起動/復帰 と設定します。
090916tsk88.gif

このタスクを保存するときには、普通に保存するだけではスケジュール通りにMacの起動/復帰ができないので、「保存して起動日時を予約」( shift+command+S )します(パスワード入力が必要)。

設定できたら「起動予約を確認」で起動復帰のスケジュールを確認できます。



別にこれだけの設定でも、Mac が自動的に起動/スリープ復帰して、ClamXav でウイルススキャンできるのですが、この時間を利用してメンテナンスや、スキャンが終わった後にシステム環境設定の「省エネルギー」設定でのスリープを円滑にさせるように、Task3 で設定しておきます。

先ほどの「アクション」に実行する項目を追加していきます。
090916tsk89.gif

まずスリープを妨げるアプリケーション「Caffeine」をOFFにするようにAppleScriptを実行します。
tell application "Caffeine" to turn off

また、別のアクション項目を追加して Twitterクライアントの「夜フクロウ」を終了させるようにします。

他にも、何か自動的に動くアプリケーションなどを終了させたり、ネットワーク上のファイル共有でマウントしているサーバーをアンマウントしたり Task3 のアクション項目に追加しておきます。

これで、「省エネルギー」パネルで設定したスリープを妨げることなく、ウイルススキャンが完了するとスリープするようになります。


ついでに、この時間を利用してメンテナンスするように、アクション項目を追加しておきます。
メニューバーから各種メンテナンスをする』参照



念を入れて、もう一つ別のタスクを作成してスリープさせるようにも設定しておきます。
(何らかの予期しない理由で「省エネルギー」設定でのスリープができない状態になったときのため)

ウイルススキャンが終わる時間をだいたい見計らって、それに余裕を持たせた時間帯にスリープするように設定しておくといいでしょう。僕の場合はAM5:30に設定しています。

このときに、このタスクの「実行条件」で「日時を制限」しておいた方がいいです。
090916tsk90.gif

というのは、Task3 のタスクでスリープさせる前に、「省エネルギー」設定でのスリープが先に実行された場合、Task3 のタスクが持ち越されて次の日に使用するときにタスクが実行され、いきなりスリープしたみたいになってしまうからです。




こんな感じで、土曜日AM3:00頃に自動でウイルススキャン+もろもろを実行するように設定できました。

ただ、ClamXav のスケジュール設定は「1セット」のみしか設定できないので、例えば月曜日には別ボリューム内をスキャン、水曜日にはまた別のボリューム内をスキャンとか、そういった使い方ができません。

そこで Task3 で、ClamXav のエンジン「clamav」を実行させるようにして、複数のウイルススキャンのパターンのセットを作成して実行します。

Task3 で新規タスクを作成して、トリガーは自分の好きな日時を設定し、アクションで「コンピュータの起動/復帰」を設定します。さらにアクション項目を追加して、下のような AppleScript を実行するようにします。
property targetDirectoryList : {"対象フォルダのパス1", "対象フォルダのパス2", "対象フォルダのパス3"}
-- 上の行の{}内にスキャン対象にするフォルダのパスを""で囲って入力して下さい
-- 複数のフォルダを指定するときは「,」で区切って複数のパスを指定できます
-- {"/Applications","/Users","~/Desktop","~/Pictures"}

-- ウイルス定義の更新
do shell script "/usr/local/clamXav/bin/freshclam --quiet --log=/usr/local/clamXav/share/clamav/freshclam.log; open /usr/local/clamXav/share/clamav/freshclam.log"

set homePath to POSIX path of (path to home folder)
set stringOfPaths to ""
repeat with eachItem in targetDirectoryList
if eachItem contains "~" then
set eachPath to (do shell script "echo " & eachItem & " | sed -e 's/~//g'")
else
set eachPath to eachItem
end if
set stringOfPaths to stringOfPaths & space & (quoted form of eachPath)
end repeat

-- ウイルススキャン
tell application "Terminal"
activate
do script ("/usr/local/clamXav/bin/clamscan -r" & stringOfPaths & " --log=" & homePath & "Library/Logs/clamXav-scan.log ; open ~/Library/Logs/clamXav-scan.log")
end tell
※ 最初の行の {} 内にスキャン対象にするフォルダのパスを "" で囲って入力して下さい

このアクションを含むタスクをいくつか作成して、それにスケジュールトリガーを組み合わせれば、毎週の曜日ごとに違うボリュームなどのフォルダをスキャンしていくとかの、使用が可能になります。

(ターミナル上でコマンドを実行しているのは、ログを書き出すようにしていても、スキャン結果のサマリーがちゃんと表示されないことが多いので、ターミナル上で実行しています。)





t3_applescript

タスクを AppleScript で実行する


Task3 はAppleScript に対応しており、登録したタスクをそれぞれで実行できます。

AppleScript Editor で下のようなスクリプトを作成して実行します。
tell application "task3runner"
run task name "タスクのタイトル"
end tell
のコマンドで実行できます(「実行条件」を評価する)。


タスクの「実行条件」を無視して実行したい場合は
tell application "task3runner"
force run task name "タスクのタイトル"
end tell
とします。



これを使えば、Task3 以外のアプリケーション、例えばマウスジェスチャで AppleScript を実行できるものなどで、Task3 のタスクを実行できるようになります。





t3_task_applescript

タスクのアクションで実行する AppleScript について


僕は AppleScript がちょっとは分かる「なんちゃってAppleScripter」なので、Task3 のタスクのアクションで多く AppleScript を実行させています。

いろいろ Task3 で実行させる AppleScript で気付いたことをちょっと採り上げると・・・

例えば、Task3 で「メッセージ表示」での Growl 表示は、タスクに登録した文章でないと表示できません。
AppleScript で Growl 表示させるようにすると、AppleScript内で取得した数値や文字列など表示できるようになります。
set aTitle to "タイトル"
set aDescription to "文章内容"
set anIconOfApp to "task3runner" -- アイコンとして使うアプリケーション名 (例)"iTunes"
set aSticky to "no" -- "yes" or "no""yes" だとクリックするまで Growl のウインドウが表示され続ける
set aPriority to 0 -- 優先度。-2 から 2 まで。0 が標準。

tell application "GrowlHelperApp"
notify with name "Task3MessageWorkNotification" title (aTitle as Unicode text) description (aDescription as Unicode text) application name "task3runner" icon of application anIconOfApp sticky aSticky priority aPriority
end tell
このスクリプトを実行すると、こんな風に Growl で表示されます。
090916tsk91.jpg


例えば・・・
set aTitle to "Today"
set aDescription to current date
set anIconOfApp to "iCal"
set aSticky to "no"
set aPriority to 0

tell application "GrowlHelperApp"
notify with name "Task3MessageWorkNotification" title (aTitle as Unicode text) description (aDescription as Unicode text) application name "task3runner" icon of application anIconOfApp sticky aSticky priority aPriority
end tell
とすると、下のように現在日時を Growl で表示します。
090916tsk92.jpg



他にも、Task3 で「シェルスクリプトを実行」させる場合、sudo を付けてコマンドを実行することはできません。

そこで AppleScript でターミナル上でコマンドを実行するようにします。
tell application "Terminal"
activate
do script "sudo hoge"
end tell
こうすると、ターミナルが起動してパスワード入力を求められるので、入力して実行という具合になります。



また、パスワード入力せずにコマンドを実行したい場合は、ちょっと荒技で実行できます。
do shell script "sudo hoge" user name "管理者ユーザの登録アカウント名" password "そのパスワード" with administrator privileges
(ターミナル上ではなく、コマンドを実行します)




あと、Task3 のタスクの AppleScript では display dialogdisplay alert が実行できません。

これらを含むスクリプトを実行したいときは、AppleScript を「アプリケーション形式」に保存して、Task3 でそのアプリケーションを実行する形にします。






Task3 はまだまだバージョンアップして、機能が増えていくと思うので、
そのときはまた『Task3 / タスクの設定例(5)』を書くかも?







この記事では Task3 version 1.1.0 を使用しています。

(ダウンロードリンク)
Site top page : Spread Your Wings
Download page : Task3



(関連記事)
Task3 --- 基本的な「タスク」の設定のやり方など

Task3 / タスクの設定例(1)
Task3 / タスクの設定例(2)
Task3 / タスクの設定例(3)
Task3 / タスクの設定例(4)

edit

Utility | CM:0 | TB:0

tag : Task3 

http://wakabamac.blog95.fc2.com/blog-entry-996.html

Retweet ボタンを付けてみました
ブログの各記事のフッター部分に Twitter で、そのブログ記事に対してのコメントができるように「Retweet」ボタンを付けてみました。
Retweet_Icon.jpg(←これ)

こいつをクリックすると Twitterアカウントを持っている人なら、下のように新規ページを開いてコメントできます。
091119rt1.gif
参考『Twitterをはじめたブロガーがやっておくべきことまとめ - sarusaruworld lab - Web Lab


FC2ブログに同じような「Retweet」ボタンを設置する場合は、テンプレートのHTMLを編集して、各エントリを記述する部分の <!--topentry--> から <!--/topentry--> の間の表示させたい場所にこれを挿入します。

<a href="http://twitter.com/home?status=RT%20@自分のユーザ名:%20<%topentry_enc_utftitle>%20<%topentry_enc_link>" target="_blank" title="【<%topentry_title>】Twitterでコメントする">画像のimgタグやテキスト</a>

(※ 自分のユーザ名 のところには自分のTwitterのユーザ名を入力)

ほんとは自動でURLを短縮したいんだけど、JavaScript の知識がないので断念しました。
(ヒントになりそうなことが『見ているページをTwitterに投稿するBookmarkletとブログ用ボタン [C!]』ここに書いてあったけど、自分の望む仕様ではないので断念)



Twitter はまだ始めたばかりで、使い方はあまり、よくわかりません。
(かと言ってあまり調べる気もないけど)
タイムラインがあふれ返ってしまって消化しきれそうにないので、フォローしている人の数は少ないです。
(僕だけかもしれないけど、RSSリーダーで未読ばっかりになってしまって、結局何も見ないという状態が、また Twitter でも繰り返されるような気がして・・・)

そんな理由でフォローされても、お返しにフォローするといったことはしませんのでご了承下さい。






To the foreigners who is reading this weblog

Hello everybody of the readers of very few foreigners. Welcome to my weblog.

When you comment with this weblog, it's necessary to input the password of the image authentication that if you cannot read Japanese, it's difficult.

Therefore, I had done it that you can comment by using Twitter.


You can retweet in Twitter when you click this button. Retweet_Icon.jpg

091119rt1.gif


Best Regards :-)

However, I'm not good at English.(´・ω・`)ショボーン

edit

はじめまして | CM:0 | TB:0

http://wakabamac.blog95.fc2.com/blog-entry-995.html

MacHeist でソフトを Get しよう - nanoBundle -
MacHeist前のキャンペーンが終了して、あらたに『MacHeist nanoBundle』という、総額 $154 相当の6つのシェアウェアのアプリケーションがもらえるキャンペーンをやっています。
091106mhn1.jpg


MacHeist にログインして、シェアウェア登録用の名前とメールアドレスを入力すると(寄付するかどうかを問われた後)、自分専用のレシートページにアプリケーションのシリアル番号が表示されます。
シリアル番号が表示されるまでちょっと時間が掛かります。


nanoBundle のアプリケーションのラインナップは
となっております。

('09/11/12追記)
なぜだか、50万ダウンロードに達していないのに「Mariner Write」がアンロックされました。
あと数時間でこのキャンペーンも終了なので、まだの人はお早めに。
(追記おわり)



ダウンロード期間が限定されていて、あと6日です。
お早めに。



('09/11/09追記)
MacHeist の nanoBundle のキャンペーンで、さらに「VirusBarrier」がバンドルのに追加されました。
(要 Facebookアカウント)
091109mhn2.jpg

「VirusBarrier」の入手方法は、
まず MacHeist にログインして、上記の nanoBundle を入手します。
(まだ入手していない場合)


次に「MacHeist: Immunize your Mac」のページで、2番の「Share on Facebook 」ボタンをクリックします。
(このときに Facebook にログインしていること)

小さなウインドウで「Connect with Facebook」ボタンをクリック。

下のように表示されるので「公開」ボタンをクリックして完了。
091109mhn3.gif


これで、MacHeist の自分のレシートページに「VirusBarrier」のシリアル番号が表示されます。



Facebook ってよく知らないし、使ったことなかったけど、これの為だけにアカウントを作ってしまった。
(´-`).。oO(そもそも「VirusBarrier」使うかなあ?)

残りはあと3日です、お早めに。




('09/11/13追記)
  ∧∧ ミ ドスッ
  (  ) _n_
  /  つ 終了|
〜′ /´  ̄|| ̄
 ∪∪   ||_ε3
      ゙゙゙゙

edit

ひとりごと | CM:2 | TB:0

http://wakabamac.blog95.fc2.com/blog-entry-992.html

Task3 / タスクの設定例(3)
icn_Task3.jpg
Task3 : あらゆるタスクを自動化する
Growl対応
OS10.4.11以上(UB)
シェアウェア ¥1,500(銀行振込)、¥1,700(PayPal)


Task3 / タスクの設定例(2)』のつづき
この回では、主にウインドウ制御に関するタスクの設定例です。

(各項目へジャンプします)




t3_os9_window

1つのウインドウクリックで そのアプリすべてのウインドウを前面に表示させる


OS9風に、あるアプリケーションの1つのウインドウをクリックすると、そのアプリすべてのウインドウを前面に表示させるようにする方法です。

例えば Finder のウインドウをそのように制御する場合は、新規タスクを作成して下のように設定します。


(トリガー)
090916tsk39.gif

リストから「アプリケーションを監視」を選択して、Finder が「最前面に移動」したときに実行するようにします。


(アクション)
090916tsk40.gif

アップルスクリプトを実行」を選択して、下の AppleScript を入力します。
tell application "Finder" to activate

これでこのタスクを保存して有効にすると、Finder の1つのウインドウ(デスクトップも含む)をクリックしたときに、Finder のすべてのウインドウが前面に表示されるようになります。

例えば、下のようにSafariが最前面にあるときに、背面のFinderウインドウの1つをクリックします。
090624klk6.jpg

すると、Finderのすべてのウインドウが前面に表示されるようになります。
090624klk7.jpg

Finderなら、デスクトップのどこかをクリックしても、すべてのFinderのウインドウを前面に表示します。



トリガーのアプリケーションや、AppleScript の記述の "Finder" を別のアプリケーション名に置き換えれば、他のアプリケーションも同様にできます。

ツールウインドウが普通のウインドウと同じように表示される「Gimp」などでは、この機能がないとかなり使いづらいです。
(X11で動くGimpの場合「X11」を最前面にするように設定する)





t3_window_hide

アプリケーションが最前面でないときはウインドウを隠す


Twitterクライアントのアプリケーション「夜フクロウ」を使っていてよく思うのですが、この手のアプリケーションは Growl でタイムラインを表示しているので、つぶやく時以外はウインドウは邪魔で command+H で隠していることが多いです。

こんな風に自分が能動的に使用するとき以外は、そのアプリケーションのウインドウを隠したい場合、Task3 で最前面以外のときに自動で隠すようにできます。

新規タスクを作成して、下のように設定します。


(トリガー)
リストで「アプリケーションを監視」を選択し、
「YoruFukurou」が「バックグラウンドに移動」したときに実行するようにします。


(アクション)
下の AppleScript を実行するようにします。
tell application "System Events" to tell process "YoruFukurou" to set visible to false

このタスクを保存すると、夜フクロウを使っているときに、他のアプリケーションのウインドウをクリックして最前面でなくなったときに自動で隠れるようになります。


(YoruFukurou が最前面のとき)
090916tsk41.gif

(YoruFukurou が背面に移動したとき)
090916tsk42.gif
こんな風に自動的に隠れます。



トリガーのアプリケーションや AppleScript のプロセス名の "YoruFukurou" のところを他のアプリケーション名に変えて設定すると、他のアプリケーションでも同じようにできます。






t3_hide_others

特定のアプリが最前面になったとき、他のアプリを隠す


集中して作業を行いたいときなど、特定のアプリケーションが最前面になったときに、それ以外の他のアプリケーションのウインドウを隠すようにしてみます。

Task3 で新規タスクを作成して、次のように設定します。


(トリガー)
090916tsk43.gif

アプリケーションを監視」をリストで選択し、○○○が「最前面に移動」したときに設定します。

そのアプリケーションが最前面になったときに動作するアプリケーションを指定します。適用させたいアプリケーションごとに複数のトリガーを設定しておきます。

ここの例では、MacNote3 と Safari に設定してみます。


(アクション)
次の AppleScript を実行するようにします。
tell application "System Events"
set notFrontmostApp to name of every application process whose background only is false and frontmost is false
repeat with eachAppProcess in notFrontmostApp
tell application process eachAppProcess to set visible to false
end repeat
end tell

このタスクを保存して有効にすると、そのアプリが最前面に移動したときに、他のアプリのウインドウを隠します。


例えば、下のようにたくさんのウインドウを開いているときに、MacNote3 を最前面にしてみます。
090916tsk44.jpg


すると、MacNote3 が最前面になるとすぐに、それ以外のアプリケーションのウインドウが隠れます。
090916tsk45.jpg



Task3 とは関係ないことですが、似たようなことで、Dockのアプリケーションアイコンをクリックしたときに、それ以外のアプリケーションを隠す「シングルアプリケーションモード」とうものも、OSの隠し機能として存在するようです。
参考『シングルアプリケーションモード - soundscape out






t3_auto_hide_others

一定時間ごとにチェックして 最前面のアプリ以外のウインドウを自動的に隠す


上記の「特定のアプリが最前面になったとき、他のアプリを隠す」と似た内容ですが、一定時間ごとにアプリケーションの状態をチェックして、最前面以外のアプリのウインドウを隠すタスクを設定してみます。
(ちょうど「Spirited Away」の機能を Task3 で実現してみます。)

新規タスクを作成して、下のように設定します。


(トリガー)
繰り返し」を選択して、3分ごとに実行するように設定。
(時間間隔はお好みで)


(アクション)
次の 最前面以外のプロセスを隠す AppleScript を実行させます。
property excludeAppList : {"Finder", "Safari", "firefox-bin"}
-- 除外アプリケーションのプロセス名を、上の行の {} 内に入力する
-- "プロセス名" と引用府で囲って、「,」で区切って入力
-- Firefox のように アプリ名 とプロセス名 が異なるものもあるので注意。

tell application "System Events"
set notFrontmostApp to name of every application process whose background only is false and frontmost is false
repeat with eachAppProcess in notFrontmostApp
if excludeAppList does not contain eachAppProcess then
tell application process eachAppProcess to set visible to false
end if
end repeat
end tell
先頭の行の {} 内に、背面であっても隠さないアプリケーションのプロセス名を、に入力して保存します。
この例では Finder, Safari, Firefox は最前面に表示されていなくても、自動的に隠されることはありません。


このタスクを保存して有効にします。

例えば、いろいろなアプリケーションのウインドウを開いている状態で、Safari を最前面に表示しているとします。
090916tsk50.jpg

これで所定の時間が来ると、最前面の Safari 以外のアプリのウインドウは隠されます。
090916tsk51.jpg
(背面にある Finder のウインドウは AppleScript 上で「除外」アプリに指定しているので隠されない)






t3_dock_autohide

特定のアプリが最前面のときだけ Dock を表示させる


僕は Dockを「自動的に隠す」設定にしていて、普段は Dock を隠しているようにしています。しかし、Dock にドラッグ&ドロップするときなど、特定のアプリケーションの場合には、ずっと表示させておいた方が便利な場面もあります。

そこで Task3 を使って、2つのタスクを登録しし、特定のアプリが最前面のときだけ Dock を表示させるようにします。


例えば、Finder が最前面のときだけ Dock を表示させるように設定します。
まずは「Dock を表示させる」タスクから。

(トリガー)
アプリケーションを監視」を選択して、Finder が最前面に移動したときに設定します。
090916tsk39.gif
(他にもDockを表示させたいアプリがあるなら、複数のトリガー項目を作って、そのアプリが最前面に移動したときに設定します)


(アクション)
以下の AppleScript を実行するようにします。
-- Dock を表示する
repeat 3 times
set dockAutohide to do shell script "defaults read com.apple.dock autohide"
if dockAutohide is "1" then
tell application "System Events" to tell process "WhateverItIs" to key code 2 using {option down, command down}
end if
end repeat

まずはこの1つ目のタスクを作成し、もう一つ新規タスクを作成します。



2つ目の「Dock を隠す」タスク
(トリガー)
アプリケーションを監視」を選択して、Finder がバックグラウンドに移動したときに設定します。
090916tsk68.gif
(他にもDockを表示させたいアプリがあるなら、複数のトリガー項目を作って、そのアプリがバックグラウンドに移動したときに設定します)


(アクション)
以下の AppleScript を実行するようにします。
-- Dock を隠す
repeat 3 times
set dockAutohide to do shell script "defaults read com.apple.dock autohide"
if dockAutohide is "0" then
tell application "System Events" to tell process "WhateverItIs" to key code 2 using {option down, command down}
end if
end repeat


これらの2つのタスクを有効にして保存します。
すると、Finder が最前面でないときは、Dock は隠された状態です。
090916tsk69.jpg

Finder が最前面のアプリケーションになると
090916tsk70.jpg
Dock が表示されるようになります。


ただ、key codeoption+command+D のショートカットキーを入力しているだけのスクリプトなので、素早く最前面のアプリケーションを切り替えたときなど、失敗することが多いです。
killall Dock でDock を再起動させながら 初期設定ファイルを書き換える内容のスクリプトにすると、失敗することはほぼ無くなるけど、Dashboard も再起動されてしまうので採用せず)






t3_itunes_toggle_player

iTunes が最前面のときはウインドウ表示、背面に移動したはミニプレイヤー表示


(Task3 の作者の sekn さん のアイデア)
iTunes が最前面に移動したときにはブラウザウインドウを表示、背面に移動したときにはミニプレイヤー表示させるように、2つのタスクを作成して実現させます。

まずは iTunes が最前面になったときにタスク
(トリガー)
アプリケーションを監視」で
iTunes が最前面に移動したときに設定します。


(アクション)
以下の AppleScript を実行します。
tell application "iTunes" to set minimized of window 1 to false

('09/11/04修正)
tell application "iTunes"
repeat with aWindow in browser windows
set minimized of aWindow to false
end repeat
end tell




続いて iTunes が背面になったときにタスク
(トリガー)
アプリケーションを監視」で
iTunes がバックグラウンドに移動したときに設定します。


(アクション)
以下の AppleScript を実行します。
tell application "iTunes" to set minimized of window 1 to true

('09/11/04修正)
修正前の AppleScript では、iTunes をメニューから終了できない欠陥がりました。
(詳細はコメント欄参照。sekn さん、教えてくれてありがとう)
以下の内容に変更して下さい。
tell application "System Events" to set appList to name of every application process whose background only is false
if appList contains "iTunes" then
tell application "iTunes"
repeat with aWindow in browser windows
set minimized of aWindow to true
end repeat
end tell
end if




これら2つのタスクを有効にして保存します。

すると、iTunes が最前面に移動したときには、自動的にブラウザウインドウを表示
090916tsk71.jpg


iTunes が背面に移動したときには、自動的にミニプレイヤー表示に切り替わります。
090916tsk72.jpg





この回ではウインドウ制御についてのタスクの設定例でした。
こういった「ウインドウ制御」的な使い方をするときは、そのタスクのON/OFFの切り替えがもっと楽にできたらいいのに・・・と思い、作者の sekn さんにリクエストしてみました。

次回のバージョンアップでは、Task3メニューからそのタスクのON/OFFの切り替えができるようになるでしょう。(たぶん?)
090916tsk80.gif





Task3 / タスクの設定例(4)』につづく







この記事では Task3 version 1.1.0 を使用しています。

(ダウンロードリンク)
Site top page : Spread Your Wings
Download page : Task3



(関連記事)
Task3 --- 基本的な「タスク」の設定のやり方など

Task3 / タスクの設定例(1)
Task3 / タスクの設定例(2)
Task3 / タスクの設定例(3)
Task3 / タスクの設定例(4)

edit

Utility | CM:2 | TB:0

tag : Task3