GeekTool — красота да и только!
Вот почему-то мне сейчас захотелось рассказать об одной гиковской утилите с говорящим названием GeekTool, о которой в рунете почему-то молчат (хотя по этому поводу у меня есть одна версия, но о ней чуть позже).
GeekTool — это утилита, позволяющая отображать прямо на рабочем столе вашего Мака изображения, любые текстовые файлы (будь то *.log, *.txt или, например, *.php), и, что самое главное, команды из терминала (линуксоидам эта тулза напомнит Conky). Именно выполнение и отображение на экране команд терминала делает возможности этой программы практически безграничными.
Так, например, у меня на рабочем столе с помощью GeekTool отображается название WiFi-сетки, к которой я в данный момент подключен, и текущий айпишник. А ещё время аптайма Мака и количество использованного и оставшегося места на его жестком диске. Кроме того я вывожу на рабочий стол список дел из iGTD, название песни, проигрываемой в данный момент iTunes, и карму/рейтинг/позицию на Хабре.
Впрочем, обо всём по порядку.
WiFi-сеть

Создаём текстовый файл и вставляем в него следующую вещь:
#!/bin/sh
myvar1=`system_profiler SPAirPortDataType | grep -e "Current Wireless Network:" | awk '{print $4}'`
myvar2=`system_profiler SPAirPortDataType | grep -e "Wireless Channel:" | awk '{print $3}'`
ip=`ifconfig en1 | grep "inet " | grep -v 127.0.0.1 | cut -d ' ' -f2`
echo "Wi-Fi Network: $myvar1"
echo "Channel: $myvar2"
echo "IP Address: $ip"
Теперь этот файл сохраняем под названием airport.sh (и он сразу же превращается в скрипт ^__^) и кладём в директорию /Users/%username%/bin/. Конечно, необязательно оставлять такие же названия — это я написал для собственного удобства, так как у меня именно всё так и называется, там и располагается :)
Теперь в самом GeekTool, который появляется в System Preferences в категории Other, создаём новую «запись» (нажимаем на New Entry), выбираем пункт Shell, и во вкладке Command пишем:
sh /Users/%username%/bin/airport.sh
В поле Refresh ставим, допустим, 60 секунд — именно с такой периодичностью станет меняться информация об айпишнике и WiFi-сетке на рабочем столе.
В других вкладках можно изменить отображение результатов.
На этом примере я специально всё старался описывать подробно, чтобы не «гикнутые», не знакомые с консолью читатели смогли всё более или менее понять. Остальной функционал я опишу уже менее подробно, хотя скорее всего он понадобится всё тем же не знакомым с консолью людям (ведь знатоки Terminal’а и сами всё прекрасно напишут).
Отображение аптайма

Аптайм машинки, то есть время, которое компьютер не перезагружался, отображается куда как проще: после создания новой «записи» нужно выбрать тот же пункт Shell и в поле Command написать
uptimeВсё!
Место на диске

Делаем все те же шаги, что и для отображения аптайма, только в поле Command пишем уже:
df -h /|tail -1| awk '{ print "HDD: "$4" free and "$3" used." }'
Список дел в iGTD

Ну для начала скажу, что iGTD — это замечательный и к тому же бесплатный GTD-органайзер. Для отображения списка задач нам опять понадобится написать скрипт (назовём его igtd.sh):
#!/bin/sh
clear
let unixtime=`date "+%s"`
let sqltime=$unixtime-978307246
contextlist=`sqlite3 /Users/%username%/Library/Application\ Support/iGTD/iGTD.sql “select all Z_PK from ZCONTEXT where Z_PK in (SELECT distinct ZPARENTCONTEXT FROM ZTASK WHERE (ZDONE==0)) order by ZNAME”`
for context in $contextlist
do
contextname=`sqlite3 /Users/%username%/Library/Application\ Support/iGTD/iGTD.sql “select all ZNAME from ZCONTEXT where Z_PK==$context”`
echo “\n@$contextname\n”
items=`sqlite3 /Users/%username%/Library/Application\ Support/iGTD/iGTD.sql “SELECT Z_PK FROM ZTASK WHERE (ZPARENTCONTEXT==$context and zpositioninproject==1 AND ZDONE==0)”`
for id in $items
do
item=`sqlite3 /Users/%username%/Library/Application\ Support/iGTD/iGTD.sql “SELECT ZNAME FROM ZTASK WHERE Z_PK==$id”`
echo ” $item”
done
done
Положим его всё в ту же директорию /Users/%username%/bin/. Теперь снова создаём «запись», выбираем Shell и в поле Command пишем:
sh /Users/%username%/bin/igtd.shНо тут сразу становится виден минус программы GeekTool: тулза не поддерживает UTF и нафиг убивает кириллические символы — это делает такие скрипты для любителей писать по-русски практически бесполезными :(
Текущий трек в iTunes

Ну, уже понятно, что названия русских треков прочитать не получится. Но всё-таки… Создаём AppleScript под названием itunes.scpt:
tell application "iTunes"
set var1 to name of current track
set var2 to artist of current track
set var3 to var2 & " - " & var1
end tell… и кладём его в уже привычную нам директорию. В GeekTool всё так же создаём новую «запись», снова выбираем Shell и в поле Command пишем
osascript /Users/%username%/bin/itunes.scptНаслаждаться придётся только латинскими названиями…
Кармадрочка на Хабре

Опять создаём скрипт habr.sh, не забывая вместо bbsod написать свой никнейм маленькими буквами:
#!/bin/sh
karma=`curl http://www.habrahabr.ru/api/profile/bbsod | grep -e "karma" | awk '{print $1}' | cut -d '>' -f2 | cut -d '< ' -f1`
rating=`curl http://www.habrahabr.ru/api/profile/bbsod | grep -e "rating>” | awk ‘{print $1}’ | cut -d ‘>’ -f2 | cut -d ‘< ' -f1`
position=`curl http://www.habrahabr.ru/api/profile/bbsod | grep -e "ratingPosition" | awk '{print $1}' | cut -d '>‘ -f2 | cut -d ‘< ' -f1`
echo "Habrahabr"
echo "My karma: $karma"
echo "My rating: $rating"
echo "My position: $position"
… сохраняем всё там же, а в GeekTool, повторяя старые операции, в Command пишем:
sh /Users/%username%/bin/habr.sh… и меняем Refresh на 3600 секунд.

Всё, можно следить за хабраростом. Особо впечатленным можно поставить галочку Always on top :)
Комментарии и трекбеки.
Давай, пиши уже










А вы что используете Macintosh ? я думал у Вас стоит PC - как у обычных пользывателей .
Красота получилось отличная етим тулсом
Прелестно =)