Lifehacker 介绍了一个很好玩的 Mac 下的工具, 叫做 Geektool. 这工具可以直接把命令行结果放到桌面上. 我也做了一个好玩的截图:

1.jpg[点击可看大图]

我写了一个 AppleScript, 可以读 iTunes 正在播放歌曲的歌词.

set notify to "Not playing"
tell application "iTunes"
	if player state is playing then
		set who to artist of current track as string
		set what to name of current track as string
		set lyric to lyrics of current track as string
		set notify to who & " : " & what & (ASCII character of 10) & lyric
	end if
end tell
set notify to replace_chars(notify, ASCII character of 13, ASCII character of 10)
notify

on replace_chars(this_text, search_string, replacement_string)
	set AppleScript's text item delimiters to the search_string
	set the item_list to every text item of this_text
	set AppleScript's text item delimiters to the replacement_string
	set this_text to the item_list as string
	set AppleScript's text item delimiters to ""
	return this_text
end replace_chars

然后写一个 Shell 脚本, 去调用这个 AppleScript:

#!/bin/bashif [[ -n `ps x | grep "iTunes -psn" | grep -v grep` ]]; then
  osascript ~/bin/itunes-playing.scpt
else
  echo "iTunes off"
fi

最后, 在 Geektool 中设置运行这个脚本就行了.

本文主要参考这篇文章, 脚本除了歌词部分, 其他都是一样的. 就是歌词折腾了我好久, 原来 Mac 底下换行是 \r, 这样输出到 Shell 就不正确了. (可以尝试一下 printf(“abc\rdef”) 就知道为什么了). 最后把输出重定向到文件再用 VIM 才发现全是 ^M. 其实我也考虑到了这个问题, 在程序中替换 “\r”, 只是苹果的 Script Editor 很变态, 每次我敲 “\r” 都自动换成一个换行, 因此费了好大力气, 找到了一个 ASCII character of 10. 说实话, 从来没见过这么平铺直叙的脚本语言…

大家用苹果吧 ;)