シェルからGeekletをリフレッシュする 3月19日, 2019


GeekToolでデスクトップを飾って遊んでいる。ちょっと必要があって, bashのスクリプトからGeekletをリフレッシュしたくなった。設定する秒数を指定する方法ではなく, 自分の思うタイミングで励起したいのだ。

まず思いつく単純なやり方として情報が多いのは, AppleScriptを利用してリフレッシュするものだ。

tell application “GeekTool Helper”
  tell geeklet id “vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz”
    refresh
  end tell
end tell

こんなAppleScriptを用意して,それをスクリプトから呼ぶわけだ。しかし, 考慮中のものは,Launchctlに起動されたbashスクリプトからGeekletを呼んでデスクトップに表示するものだ。単純化すれば,

■よくありそうな手順
・Launchctlからbashスクリプトを起動する
      ↓
・スクリプト内でGeekletをリフレッシュするために, "AppleScriptファイルを呼ぶ"
   /usr/bin/osascript  /Users/me/Library/Scripts/sample.scpt
      ↓
・AppleScriptがGeekletをリフレッシュする

このようにAppleScriptを介するのがちょっと不愉快に思ったのだ。それで「bashからGeekletを直接リフレッシュする」方法があるだろうと思って調べたが,簡単にはヒットしなかった。ここに書き留めておく意味もあるかもしれない。結論は簡単なことで, AppleScriptのファイルは不要。"Geekletを直接リフレッシュする"。

例えばこんな風に,
$ /usr/bin/osascript -e ‘tell application “GeekTool Helper”
    to refresh geeklet id “vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz”’

単純なことだった。この効用は, ターミナルから入力すれば確認できる。まあ, ファイルは不要とは言え, AppleScriptを用いることには変わらないのだけど。

【追記】icalBuddyのCatalinaへの対応 10月23日, 2019

GeekTool自身は問題なく動くのだが, 併用しているicalBuddyがNGとなった。不安定。「これは困った」と思っていたら早速対応してくれた方があった。 ここ のicalBuddy64.gitを使わせてもらう。 THANKS!