ソフトウェアエンジニアのブログ

暇つぶしに書いてます。他に技術的なことは[http://qiita.com/nsas454]に書いてますのでそちらも見てください。

MacのデスクトップをGeekToolでカスタマイズ

いまさら感はありますが、MACのデスクトップをカスタマイズしてIcalの予定や日付を表示させるようにしてみたいとおもい設定したときのメモです。メインはGeekToolですが、それだけでは足りない部分をdateline、XRG、Icalとの連携をiCalBuddyで行いました。


dateline
日付けを横一列に並べてくれるシンプルなカレンダーです。日付をクリックするとIcalを開いてくれます。

XRG
開発しているとメモリの使用率などが非常に気になることがおおいのですが、XRGが見た目も良さそうだったので導入してみました。CPUやメモリの使用率などをグラフで表示してくれるので非常に便利です。

GeekTool
MacのデスクトップにUNIXのコマンド結果を表示してくれる便利なツールです。
Dashboardとひと味違って私はこちらの方が好きです。Refreshの間隔も秒単位で設定出来る優れものです。

設定内容

デスクトップにカレンダーを表示させる

日曜日と当日に色がつくスクリプトがありましたので、そちらを使わせていただきました。
Colored Calendar (cal) in 10 lines of /bin/sh. Colored current DAY and DATE.

適当な場所に保存して、実行権限(chmod +x)を与えgeektoolに設定しました。
しかし、ちょっとしたトラブルが発生!

sed: 1: "s/ ? / \033[1;31m?\033[0m /\n": RE error: illegal byte sequence

ターミナルを日本語環境に設定している場合、文字コードの関係でエラーになるみたいです。
そこで、一時的に英語での表記にするため、2行追加しました。

LANG=C
NOLOCALE=1

結果以下の内容になりました。

#!/bin/sh
#
# colorcal - change current day and date via ANSI color escape sequences
#
# developed/tested on 10.6.3 with:
# /bin/sh --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
# geektool 3, 3.0 (12A)
# Terminal Version 2.1.1 (273)
# see http://www.termsys.demon.co.uk/vtansi.htm for color codes.
#
# sed (1) is your friend.
#
LANG=C
NOLOCALE=1
# pick color, clear color
color="\033[1;31m"
nocolor="\033[0m"

# get day & date
current_day=`/bin/date "+%a" | cut -b 1,2`
current_date=`date | awk '{print $3}'`

#color em.
color_day=`echo "${color}${current_day}${nocolor}"`
color_date=`echo "${color}${current_date}${nocolor}"`

# format cal output so the sed replacements work at begining and end of cal output.
function calendar {
/usr/bin/cal | sed 's/ /_/g' | sed -e 's/^/ /' -e 's/$/_/' | sed 's/_/ /g'
}
# run calendar & substitute colored day & date.
calendar | /usr/bin/sed -e "s/ ${current_day} / ${color_day} /" -e "s/ ${current_date} / ${color_date} /"
# END of colorcal
icalの予定とTODOをデスクトップに表示させる

iCalBuddyをインストールすればGeektoolと簡単に連携出来ます。インストールはinstall.commandをクリックするだけです。実行後に何か聞かれますが、yをタイプすれば勝手にインストールが始まります。こちらで特に設定することはありません。あとは、GeekToolのコマンドに以下のコマンドを入力すれば設定終了。


iCalBuddy

1週間の予定を表示

/usr/local/bin/icalBuddy -nc eventsToday+7 | sed -e "s/*/-/"
<
Refreshは3600秒

未消化ToDoリスト
>||
/usr/local/bin/icalBuddy uncompletedTasks | sed -e "s/*/-/"

Refreshは360秒