<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Максим Мельников &#187; GeekTool</title>
	<atom:link href="http://bbsod.com/tag/geektool/feed/" rel="self" type="application/rss+xml" />
	<link>http://bbsod.com</link>
	<description></description>
	<lastBuildDate>Thu, 18 Mar 2010 11:50:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GeekTool — красота да и только!</title>
		<link>http://bbsod.com/2008/03/17/geektool/</link>
		<comments>http://bbsod.com/2008/03/17/geektool/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 19:37:58 +0000</pubDate>
		<dc:creator>Максим Мельников</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Обзоры]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[Своё]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[Софт]]></category>
		<category><![CDATA[Conky]]></category>
		<category><![CDATA[GeekTool]]></category>
		<category><![CDATA[iGTD]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Хабрахабр]]></category>

		<guid isPermaLink="false">http://bbsod.com/2008/03/17/geektool/</guid>
		<description><![CDATA[Вот почему-то мне сейчас захотелось рассказать об одной гиковской утилите с говорящим названием GeekTool, о которой в рунете почему-то молчат (хотя по этому поводу у меня есть одна версия, но о ней чуть позже).
GeekTool — это утилита, позволяющая отображать прямо на рабочем столе вашего Мака изображения, любые текстовые файлы (будь то *.log, *.txt или, например, [...]]]></description>
			<content:encoded><![CDATA[<p>Вот почему-то мне сейчас захотелось рассказать об одной гиковской утилите с говорящим названием GeekTool, о которой в рунете почему-то молчат (хотя по этому поводу у меня есть одна версия, но о ней чуть позже).</p>
<p><a href="http://projects.tynsoe.org/en/geektool/">GeekTool</a> — это утилита, позволяющая отображать прямо на рабочем столе вашего Мака изображения, любые текстовые файлы (будь то *.log, *.txt или, например, *.php), и, что самое главное, команды из терминала (линуксоидам эта тулза напомнит Conky). Именно выполнение и отображение на экране команд терминала делает возможности этой программы практически безграничными.<br />
<span id="more-165"></span><br />
Так, например, у меня на рабочем столе с помощью GeekTool отображается название WiFi-сетки, к которой я в данный момент подключен, и текущий айпишник. А ещё время аптайма Мака и количество использованного и оставшегося места на его жестком диске. Кроме того я вывожу на рабочий стол список дел из iGTD, название песни, проигрываемой в данный момент iTunes, и карму/рейтинг/позицию на Хабре.</p>
<p>Впрочем, обо всём по порядку.</p>
<h3>WiFi-сеть</h3>
<p><center><img src='http://bbsod.com/wp-content/uploads/2008/03/wifi.jpg' alt='Wi-Fi' /></center><br />
Создаём текстовый файл и вставляем в него следующую вещь:<br />
<code><br />
#!/bin/sh<br />
myvar1=`system_profiler SPAirPortDataType | grep -e "Current Wireless Network:" | awk '{print $4}'`<br />
myvar2=`system_profiler SPAirPortDataType | grep -e "Wireless Channel:" | awk '{print $3}'`<br />
ip=`ifconfig en1 | grep "inet " | grep -v 127.0.0.1 | cut -d ' '  -f2`<br />
echo "Wi-Fi Network: $myvar1"<br />
echo "Channel: $myvar2"<br />
echo "IP Address: $ip"<br />
</code></p>
<p>Теперь этот файл сохраняем под названием airport.sh (и он сразу же превращается в скрипт ^__^) и кладём в директорию /Users/<font color=grey>%username%</font>/bin/. Конечно, необязательно оставлять такие же названия — это я написал для собственного удобства, так как у меня именно всё так и называется, там и располагается :)</p>
<p>Теперь в самом GeekTool, который появляется в System Preferences в категории Other, создаём новую «запись» (нажимаем на New Entry), выбираем пункт Shell, и во вкладке Command пишем:<br />
<code>sh /Users/<font color=grey>%username%</font>/bin/airport.sh</code><br />
В поле Refresh ставим, допустим, 60 секунд — именно с такой периодичностью станет меняться информация об айпишнике и WiFi-сетке на рабочем столе.</p>
<p>В других вкладках можно изменить отображение результатов.</p>
<p>На этом примере я специально всё старался описывать подробно, чтобы не «гикнутые», не знакомые с консолью читатели смогли всё более или менее понять. Остальной функционал я опишу уже менее подробно, хотя скорее всего он понадобится всё тем же не знакомым с консолью людям (ведь знатоки Terminal&#8217;а и сами всё прекрасно напишут).</p>
<h3>Отображение аптайма</h3>
<p><center><img src='http://bbsod.com/wp-content/uploads/2008/03/uptime.jpg' alt='Uptime' /></center><br />
Аптайм машинки, то есть время, которое компьютер не перезагружался, отображается куда как проще: после создания новой «записи» нужно выбрать тот же пункт Shell и в поле Command написать <code>uptime</code><br />
Всё!</p>
<h3>Место на диске</h3>
<p><center><img src='http://bbsod.com/wp-content/uploads/2008/03/hdd.jpg' alt='HDD' /></center><br />
Делаем все те же шаги, что и для отображения аптайма, только в поле Command пишем уже:<br />
<code>df -h /|tail -1| awk '{ print "HDD: "$4" free and "$3" used." }'</code></p>
<h3>Список дел в iGTD</h3>
<p><center><img src='http://bbsod.com/wp-content/uploads/2008/03/igtd.jpg' alt='iGTD' /></center><br />
Ну для начала скажу, что iGTD — это замечательный и к тому же бесплатный GTD-органайзер. Для отображения списка задач нам опять понадобится написать скрипт (назовём его igtd.sh):<br />
<code><br />
#!/bin/sh<br />
clear<br />
let unixtime=`date "+%s"`<br />
let sqltime=$unixtime-978307246<br />
contextlist=`sqlite3 /Users/<font color=grey>%username%</font>/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"`<br />
for context in $contextlist<br />
do<br />
   contextname=`sqlite3 /Users/<font color=grey>%username%</font>/Library/Application\ Support/iGTD/iGTD.sql "select all  ZNAME from ZCONTEXT where Z_PK==$context"`<br />
   echo "\n@$contextname\n"<br />
   items=`sqlite3 /Users/<font color=grey>%username%</font>/Library/Application\ Support/iGTD/iGTD.sql "SELECT Z_PK FROM ZTASK WHERE (ZPARENTCONTEXT==$context and zpositioninproject==1 AND ZDONE==0)"`<br />
        for id in $items<br />
        do<br />
           item=`sqlite3 /Users/<font color=grey>%username%</font>/Library/Application\ Support/iGTD/iGTD.sql "SELECT ZNAME FROM ZTASK WHERE Z_PK==$id"`<br />
           echo "       $item"<br />
        done<br />
done<br />
</code><br />
Положим его всё в ту же директорию /Users/<font color=grey>%username%</font>/bin/. Теперь снова создаём «запись», выбираем Shell и в поле Command пишем:<br />
<code>sh /Users/<font color=grey>%username%</font>/bin/igtd.sh</code><br />
Но тут сразу становится виден минус программы GeekTool: тулза не поддерживает UTF и нафиг убивает кириллические символы — это делает такие скрипты для любителей писать по-русски практически бесполезными :(</p>
<h3>Текущий трек в iTunes</h3>
<p><center><img src='http://bbsod.com/wp-content/uploads/2008/03/itunes.jpg' alt='iTunes' /></center><br />
Ну, уже понятно, что названия русских треков прочитать не получится. Но всё-таки… Создаём AppleScript под названием itunes.scpt:<br />
<code>tell application "iTunes"<br />
	set var1 to name of current track<br />
	set var2 to artist of current track<br />
	set var3 to var2 &#038; " - " &#038; var1<br />
end tell</code><br />
… и кладём его в уже привычную нам директорию. В GeekTool всё так же создаём новую «запись», снова выбираем Shell и в поле Command пишем <code>osascript /Users/<font color=grey>%username%</font>/bin/itunes.scpt</code><br />
Наслаждаться придётся только латинскими названиями…</p>
<h3>Карма<s>дрочка</s> на Хабре</h3>
<p><center><img src='http://bbsod.com/wp-content/uploads/2008/03/habr.jpg' alt='Кармадрочка' /></center><br />
Опять создаём скрипт habr.sh, не забывая вместо bbsod написать свой никнейм маленькими буквами:<br />
<code><br />
#!/bin/sh<br />
karma=`curl http://www.habrahabr.ru/api/profile/bbsod | grep -e "karma" | awk '{print $1}' | cut -d '>' -f2 | cut -d '< ' -f1`<br />
rating=`curl http://www.habrahabr.ru/api/profile/bbsod | grep -e "rating>" | awk '{print $1}' | cut -d '>' -f2 | cut -d '< ' -f1`<br />
position=`curl http://www.habrahabr.ru/api/profile/bbsod | grep -e "ratingPosition" | awk '{print $1}' | cut -d '>' -f2 | cut -d '< ' -f1`<br />
echo "Habrahabr"<br />
echo "My karma: $karma"<br />
echo "My rating: $rating"<br />
echo "My position: $position"<br />
</code><br />
… сохраняем всё там же, а в GeekTool, повторяя старые операции, в Command пишем:<br />
</code><code>sh /Users/<font color=grey>%username%</font>/bin/habr.sh</code><br />
… и меняем Refresh на 3600 секунд.<br />
<center><img src='http://bbsod.com/wp-content/uploads/2008/03/settings.jpg' alt='Настройки GeekTool' /></center><br />
Всё, можно следить за хабраростом. Особо впечатленным можно поставить галочку Always on top :)</p>
]]></content:encoded>
			<wfw:commentRss>http://bbsod.com/2008/03/17/geektool/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
