ShellScript
Zsh
Mac
ical

icalBuddyとgeektoolを用いて、icalのまだ残ってる予定だけをデスクトップに表示できるようにした

はじまり

次の予定が思い出せなくなる度にicalを開いて確認するのも億劫なので、icalBuddyGeektoolを用いて、デスクトップにicalを表示してくれるようにしてました。
この辺りの設定の仕方はいろんな方が書かれているので、略します…

icalBuddyとは

icalのデータをコマンドラインで取得できるようにしてくれます。最終更新はかなり前ですが、問題なく使えます。locationやnotesも出力してくれて便利なので、使い始めました。

Geektoolとは

デスクトップを柔軟にカスタマイズできるアプリケーションです。以下の形式のデータをデスクトップに表示できるようにしてくれます。

  • Logs
  • Script
  • Image
  • Web

気になってたこと

icalBuddyのおかげでカレンダーごとに色がついて表示してくれたり、一日ごとに区切って表示してくれたり、と至れり尽くせりだなとは思うものの

今日の終わった予定は表示されない方が嬉しいなぁ

と感じたので、icalBuddyの出力を変換するシェルスクリプトRemSch.shを書いてみました。

RemSch(remaining schedule)について

名前は短絡的ですが、rememberもかかってるようでうまく収まってるなと思ってます。

終わった予定を表示しないようにするついでに、デスクトップに表示されてても嬉しくないデータを非表示にしてしまうようにしました。

環境はzshです。学生として研究室に所属してからなので、触り始めてまだ半年の稚拙なシェルスクリプトにはなってますが、なかなか良いなぁと勝手に思ってます。

仕様について

一般的なお話

日毎の表示で並んでいるからこそメリットがあると思うので、デフォルトの元データは

default.sh
icalBuddy -sd eventsToday+1

となっていて、常に-sdオプションは適用されます。オプションとして、icalBuddyのオプションのいくつかをそのまま選べるようにしました(正直普段自分が使っているやつだけです)。-f,-ncに関してはそのままで、-num NUMだけはeventsToday+NUMとなるようにしてあります。

optional arguments:
  -f        Format output
  -nc       No calendar names
  -num NUM  Print events occurring between today and NUM days into the future

予定が終わっているかは24時間制のhhmmで現在時刻と、予定のical上での終了時刻を比較して、判断しています。
終日の予定は表示されたままになるようになっています(まだlocationやnotesが入っていない場合しか動作しないので、思い立った時に改善します)。

個人的なお話

私の普段使いではgoogle calendarも読み込んでいることもあってか、noteにおけるhangoutsとattendeesが表示されてしまうのが幅をとって鬱陶しかったので、そちらも表示されないようになってます。
以下のような感じで表示されていたので、雑な作りにはなりますが、-::を含む行の間とattendeesを含む行を削除しています。

display_sample
test (fuga@foo.com)
    location: hoge
    notes: -::~:~::~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~::~:~::-
           説明のこのセクションは編集しないでください。

           この予定には Google ビデオハングアウトが含まれています。
           参加: https://plus.google.com/hangouts/_/calendar...
           -::~:~::~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~::~:~::-
    attendees: hoge, hage, bar
    18:00 - 20:00

感想

衝動的に踏み出した初投稿なので、読んでくれる方がいたら歓喜です。問題のある仕様や記載があれば、教えていただけると助かります。

参照元

icalBuddy
Geektool