Заметка про GeekTool оказалась довольно востребованной. Поэтому я решил немного развить тему и рассказать о других способах работы с программой. Если появятся какие-то вопросы — смело задавайте.
Работа с iTunes
Читатель mixazen интересуется, как вывести на рабочий стол название проигрываемой песни. Эта задача состоит фактически из двух подзадач — надо как-то получить от iTunes название композиции, а затем с помощью GeekTool отобразить его на рабочем столе.
На форумах Macrumors я нашел следующий скрипт:
property go1 : false
-- check to see if iTunes is running
tell application "System Events"
set the process_flag to (exists process "iTunes")
end tell
if the process_flag then
-- check to see if iTunes is playing
tell application "iTunes"
if player state contains playing then set go1 to true
end tell
if go1 then
-- do what you need to do
tell application "iTunes"
set foo1 to name of current track
set foo2 to artist of current track
set foo3 to album of current track
set foo4 to foo1 & " / " & foo2 & " / " & foo3
end tell
end if
end if
Сохраните его, дав произвольное имя и указав расширение scpt (файл Applescript). Затем запустите GeekTool, создайте новый Гиклет (как это сделать, говорилось в предыдущей статье). В разделе Command укажите следующую команду:
osascript /путь/до/скрипта/itunes.scpt
osascript — это команда выполнения скрипта AppleScript. Остается выбрать промежуток обновления (раз в 5 секунд будет вполне достаточно) и поэкспериментировать с оформлением. Скрипт нормально работает с последней версией iTunes и корректно отображает названия русскоязычных песен. Можно пойти еще дальше и, например, вывести на рабочий стол прогресс-бар проигрываемой песни. Но это перебор, на мой взгляд.
Выводим обложку альбома проигрываемой песни на рабочий стол
GeekTool — удивительно мощная штука. Возможности, которые предоставляет программа, ограничены разве что фантазией пользователей. Изучая примеры использования, натолкнулся на статью Доктора Дрэнга (Dr. Drang), который с помощью GeekTool выводит на рабочий стол обложку альбома. После получаса разбирательств мой рабочий стол выглядит так (напомню, что у меня установлены GeekTool 3.0 RC5 и iTunes 9.0.2):
А теперь о том, как вывести на рабочий стол обложку композиции, которая проигрывается в настоящий момент в iTunes. Для этого нам понадобится написать AppleScript и сделать пару гиклетов.
Код AppleScript выглядит следующим образом:
-- Unix versions of the above path strings set whichArt to "blank" tell application "Finder" to ¬ if whichArt is "iTunes" then
-- Paths and stuff
set ArtworkFromiTunes to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:From iTunes:albumArt.pict" as alias
set iTunesArtwork to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:From iTunes:albumArt.pict"
set DefaultArtwork to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:Default:albumArt.pict"
set displayArtwork to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:albumArt.pict"</p>
set unixITunesArtwork to the quoted form of POSIX path of iTunesArtwork
set unixDefaultArtwork to the quoted form of POSIX path of DefaultArtwork
set unixDisplayArtwork to the quoted form of POSIX path of displayArtwork
tell application "System Events"
if exists process "iTunes" then -- iTunes is running
tell application "iTunes"
if player state is playing then -- iTunes is playing
set aLibrary to name of current playlist -- Name of Current Playlist
set aTrack to current track
set aTrackArtwork to null
if (count of artwork of aTrack) ≥ 1 then -- there's an album cover
"Running and playing and art"
set aTrackArtwork to data of artwork 1 of aTrack
set fileRef to ¬
(open for access ArtworkFromiTunes with write permission)
try
set eof fileRef to 512
write aTrackArtwork to fileRef starting at 513
close access fileRef
on error errorMsg
try
close access fileRef
end try
error errorMsg
end try
set creator type of ArtworkFromiTunes to "????"
set whichArt to "iTunes"
end if
end if
end tell
end if
end tell
do shell script "ditto -rsrc " & unixITunesArtwork & space & unixDisplayArtwork
else
do shell script "ditto -rsrc " & unixDefaultArtwork & space & unixDisplayArtwork
end if
Сохраните файл с именем iTunesArtwork.scpt. Вы также можете скачать его с сайта «Макрадара». Файл лучше поместить в папку ~/Library/Scripts, хотя это не принципиально.
Теперь создаем первый гиклет. Щелкаете по значку Shell, перетаскиваете его на рабочий стол, а в качестве команды, указываете эту:
osascript ~/Library/Scripts/iTunesArtwork.scpt
Гиклет вызывает AppleScript и больше ничего не делает. Поэтому тратить время на форматирование не надо. Укажите лишь интервал вызова — 5–10 секунд вполне достаточно.
Затем в папке ~/Pictures
создайте подпапку iTunes Artwork со следующей структурой:
Эту структуру надо воспроизвести в точности. Создайте папки From iTunes и Default. В них поместите файл albumArt.pict, созданный в любом графическом редакторе. Файл albumArt.pict используется в тех случаях, когда iTunes ничего не играет или у альбома отсутствует обложка. Поэтому albumArt.pict делают размером 1х1 пикселей и закрашивают цветом, совпадающим с цветом обоев рабочего стола (чтобы не оздавалось впечатления «битого пикселя»).
Теперь надо создать еще один гиклет. Щелкните по значку Picture, перетащите его на рабочий стол. В поле file укажите:
file:///Users/путь_к_файлу/Pictures/iTunes%20Artwork/albumArt.pict
Укажите интервал обновления (5-10 сек) и размер картинки (я выбрал 200х200 точек).
Если захотите выводить на рабочий стол обложку альбомов, имейте в виду: у GeekTool сразу возрастает аппетит к памяти. Вместо привычных 30-40 Мб ОЗУ, он начинает требовать 300 Мб. Для современных компьютеров, оснащенных 4 и более гигабайтами оперативки это практически на ощутимо, для старых макбуков с лимитов в 2 Гб — уже повод задуматься, так ли уж необходимы эти «свистелки». На всякий случай в угол десктопа можно отдельным гиклетом выводить информацию об объеме ОЗУ, используемом GeekTool. Команда такая:
ps axo "rss,ucomm" | awk '/Geek/ {printf "%.2f", $1/1024}'
***
В этих двух примерах мы выводили на рабочий стол как текстовые данные, так и картинки. Еще раз подверкну: GeekTool — фантастическое приложение. Я продолжаю экспериментировать с ним ежедневно. Уже пробовал выводить на рабочий стол статистику Li.ru одного из сайтов, твиты и погоду. :-)
Если у вас есть какие-то вопросы или уточнения, буду рад увидеть их в комментариях. Делитесь результатами своих экспериментов, интересно узнать о вашем опыте.
Обновлено. Полезная ссылка от Сергея Тугаринова — подборка скриптов для GeekTool
***
Полезные ссылки:
Лучшие предложения
14 базовых белых футболок, которые просто обязаны быть в любом гардеробе
Это нам надо: наушники Microsoft Xbox Wireless Headset
Надо брать: ноутбук Honor MagicBook X16 за 43 217 рублей
Находки AliExpress: самые интересные и полезные товары
15 интересных товаров дешевле 500 рублей
Уютно, практично и стильно: 8 российских брендов текстиля для дома
Лучшие предложения недели: скидки от AliExpress, «Яндекс Маркета», Yves Rocher и других магазинов
Выбирай, но проверяй: как найти в магазине качественный товар
Выбирай, но проверяй: как найти в магазине качественный товар
РекламаЧто такое автомобильный аукцион и как с его помощью продать машину
«Young Adult — это не настоящая литература!» Обсуждаем стереотипы о книгах в новом выпуске подкаста «Женщины и всё»
Реклама5-й сезон подкаста «Слушай, это просто» стартовал! Первый выпуск — про эффект Бэтмена и пользу выдуманного альтер эго
Реклама