(仮)


20130914 ( 土曜日 )

[長年日記]

_ Terminal-Notifier続き

Terminalから実行するとほぼ思い通りに動作させることができるんだけど、cron経由にすると-removeオプションがうまく動かない。。。なぜや

Terminalからでも、-sender指定してるときは-removeするときも同じsenderを指定しておかないといけないんだけど、cron経由だと-remove ALLしても前のメッセージが消せない。。。

代わりにtitleがTerminalで空のメッセージが返ってくるから、-removeオプションが無視されてるみたい。ただ指定したsenderからは送られてる。。。。よくわからん。どうもAppleScriptから呼び出しても-removeオプションはうまく働かないみたいだし、cronの問題でもないのかな。

とりあえず自動でメッセージを消すのは止めて違うメッセージで上書きとかはうまくいくからこれで代用しておくか。


20130910 ( 火曜日 )

[長年日記]

_ Terminal-notifierとNotifications Scripting その2

Notification CenterからアプリごとにしかAlert Styleが指定できないので、エラーが出たときだけNotification Scriptingからバナー通知して、普段はTerminal-notifierからデスクトップへの通知はしないでNotification Centerに直接メッセージを送っておく、という使い分けを考えたのだが、Terminal-notifierでもっと柔軟にメッセージを送れることに気がついた。

Terminal-notifier 1.5.1では、-senderオプションでアプリのIDを指定してやると、そのアプリからの通知としてNotification Centerにメッセージを送れるようになっていた。これを利用すれば、AppleScriptで適当なアプリを複数でっち上げ、そのsender IDを指定してやればメッセージを好きなように分類して送れる。

AppleScriptででっちあげたアプリのsender IDはデフォでは「com.apple.ScriptEditor.id.アプリ名」のようになっている。好きなアイコンを使いたいときは、アプリのアイコンを変えた上、sender IDを「com.apple.アプリ名」のように変更しておく必要がある。ScriptEditor.idがあるとAppleScript Editorのアイコンになってしまうみたい。sender IDはエディタのBundle Contentsをポチッと押すと変更できるウインドウがスライドしてくる。

Terminal-notifierの方がshellから気軽に使えるので、これに統一してしまおう。Macなかなか楽しい。

_ やっぱり

sender IDは変えちゃダメな模様。

Notification Centerにアプリ名じゃなくて変な文字の羅列になっちゃうみたい。。。。

アイコンはsender IDを変えなくてもアプリのアイコンになる模様。

要追試。


20130907 ( 土曜日 )

[長年日記]

_ いろいろ微調整

GeekToolでまた天気のアイコンが表示できなくなっていたので、適当にググってスクリプトをパクる。最近はミニマムなデザインが流行っぽいけど、デスクトップには派手な画像が欲しいので、accuweather.comのものにした。ええ感じや。

ついでにフォントもiOS7風な細字フォントに変えてみた。Helvetica Neueがそうらしいので、それにした。見た目もすっきりしててええ感じや。

_ Terminal-notifierとNotifications Scripting

どちらもNotification Centerにメッセージを送れる。Terminal-notifierはシェルから、Notifications ScriptingはAppleScriptから使える。

特定のメッセージだけデスクトップに表示させて、それ以外はNotification Centerに非表示で送りたかったので、両方使うことにした。本当はどっちかで、メッセージによって切り替えしたかったのだけど、どうもこれはOSの設定でアプリごとにしかできないようだ。

_ echo -nとprintf

ターミナルから実行すると大丈夫だけど、cron経由で実行するとどうしてもエラーが出る。まぁよくあることだけども。

NASにある暗号化されたイメージをhdiutilでマウントしているのだが、どうにもcron経由だとエラーになる。いろいろ考えた結果、どうやらターミナルから実行すると、keychainから勝手にパスワードを引っ張ってきてマウントできてしまっているらしいことに気がついた。cronのログを見ると、確かにcron経由だと認証失敗している。。。

そうとわかれば、-stdinpassでパスワードを入れてやるスクリプトを書いてやれば良い訳だ。パスワードはファイルから読み込んで、echo -n $PASSWORD | hdiutils mount -stdinpass ~といった感じでOK。。。なはずだったのだが。

またもやターミナルではいけるのに、cronちゃんではエラー。。。

いろいろググるとよくわからんがどうもecho -nでは改行無視がうまくできないらしい。。代わりにprintf $PASSWORD | hdiutils mount -stdinpass ~だとcronでもちゃんと実行できた。なにこの違い。。。よくわからんが動いてるので深くは考えないことにする。