BBSoD Mini
RSS

GeekTool — красота да и только!

Вот почему-то мне сейчас захотелось рассказать об одной гиковской утилите с говорящим названием GeekTool, о которой в рунете почему-то молчат (хотя по этому поводу у меня есть одна версия, но о ней чуть позже).

GeekTool — это утилита, позволяющая отображать прямо на рабочем столе вашего Мака изображения, любые текстовые файлы (будь то *.log, *.txt или, например, *.php), и, что самое главное, команды из терминала (линуксоидам эта тулза напомнит Conky). Именно выполнение и отображение на экране команд терминала делает возможности этой программы практически безграничными.

Так, например, у меня на рабочем столе с помощью GeekTool отображается название WiFi-сетки, к которой я в данный момент подключен, и текущий айпишник. А ещё время аптайма Мака и количество использованного и оставшегося места на его жестком диске. Кроме того я вывожу на рабочий стол список дел из iGTD, название песни, проигрываемой в данный момент iTunes, и карму/рейтинг/позицию на Хабре.

Впрочем, обо всём по порядку.

WiFi-сеть

Wi-Fi

Создаём текстовый файл и вставляем в него следующую вещь:

#!/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’а и сами всё прекрасно напишут).

Отображение аптайма

Uptime

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

Место на диске

HDD

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

Список дел в iGTD

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

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 секунд.
Настройки GeekTool

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

Опубликовано: 17.03.2008

Комментарии и трекбеки.

Несколько человек (точнее 2) уже оставили своё мнение. Может и тебе есть что сказать?
  1. Радченко Виктор написал:

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

  2. Voronin написал:

    Прелестно =)

Давай, пиши уже

Подписаться на комментарии