Запуск сайтов из Spotlight
Занялся потихоньку автоматизацией своих задач на «Маке».
Очень хотелось сделать так, чтобы по короткому имени, набираемому в Spotlight, открывались какие-то сайты. В интранете «Яндекса» очень много сайтов, которые я открываю десятки раз за день, вот я и подумал — было бы круто, если бы я набирал в Spotlight «wiki», нажимал Enter и мне открывался бы сайт wiki.yandex-team.ru.
Я знаю, что тут много ребят сидят на Windows, поэтому поясню. Spotlight (его аналог) есть на Windows 7 — это поисковая строка, куда можно вбить начальные буквы какого-то названия, а операционная система предложит к запуску список программ и/или файлов, имена или метаинформация которых наилучшим образом подходит под заданную пользователем строку.
В Mac OS X удобно, что это поисковое поле появляется по кнопке Ctrl+Пробел.
Написать плагин к Spotlight мне пока слабо́, а вот набросать на AppleScript программу, открывающую одноимённый сайт — пожалуйста.
Идея такова: кладу на диск одну и ту же программу в нескольких копиях, с разными именами — «wiki», «jira», «calendar» и так далее. Теперь их можно запускать откуда угодно, включая Spotlight. После запуска программа смотрит какое у неё имя, прибавляет к нему префикс/суффикс и проверяет существует ли получившийся домен, если да, то открывает его в браузере.
Программу надо сохранить при помощи редактора AppleScript (AppleScript Editor) с нужным именем (↑⌘S), формат файла должен быть «программа» («application»).
Вот сама программа (наверное маску «%.yandex-team.ru» нужно будет убрать, она вам будет мешать, если вы только не работаете в «Яндексе»):
-- Ищет по маскам хост, подставляя имя программы,
-- если найден, открывает его в браузере
-- bolknote.ru апрель 2011
tell application "System Events"
set appname to the name of the current application
end tell
repeat with mask in {"%.yandex-team.ru", "www.%.ru", "www.%.com"}
set AppleScript's text item delimiters to "%"
set mask to text items of mask
set AppleScript's text item delimiters to appname
set hostname to "" & mask
if resolve(hostname) then
open location "http://" & hostname
exit repeat
end if
end repeat
on resolve(host)
try
do shell script "host '" & host & "'"
return true
on error
return false
end try
end resolve
Это пока мой первый опыт программирования в AppleScript, так что, возможно, какие-то вещи можно было сделать проще, напишите я поправлю.
Добавлено позднее: в комментариях один из читателей предложил более простой и изящный вариант. Ура!
Все делается гораздо проще — открываете браузер, заходите на какой-нить сайт, заносите его в закладки. Потом, при вводе в адресную строку первой буквы из названия сайта, адресная строка автозаполнится и останется только на «ввод» нажать и вы на вашем сайте.
Комментарий для Артур:
Наверное это работает в «Сафари», увы, в «Опере» и «Файрфоксе» это у меня не работает.
Комментарий для Артур:
Нужно, наверное, пояснить, что в настройках «Spotlight» у меня все галочки стоят.
Комментарий для Артур:
Да, я попробовал (добавил закладку в «Сафари»). В основном, меня интересуют довольно распространённые имена, они встречаются в документах, именах папок. В итоге, у меня веб-страницы стоят в самом конце и по Enter запускается что угодно, только не нужная веб-страница.
В свойствах файла есть поле «Комментарии Spotlight». Можно попробовать туда писать нужные ключевые слова, вместо создания копий файла с разными именами.
Комментарий для malinnikov.ru:
Спасибо! К сожалению, я сомневаюсь, что Spotlight как-то указывает программе с каким именем он её запускает. Я попробовал поискать что-то на эту тему, не нашёл. Нужно писать плагин, но для этого надо многое прочитать.
Да, понял, что у вас имя скрипта имеет значение.
Скрипты — хорошее дело, но поиск по закладкам — штатное средство системы. Если нужно юзать альтернативный браузер, то можно было бы (в Сафари) стащить иконку сайта в папку, создается файл <site url>.webloc. Поскольку это просто xml-файлик с урлом внутри, то спотлайт будет находить его по названию, а приложением, ответственным за его открытие, можно сделать любой браузер.
Комментарий для malinnikov.ru:
О! Спасибо! Это ровно то, что надо! Круто, спасибо!
Комментарий для malinnikov.ru:
Правда это совсем не XML:
bolk-osx:~ bolk$ hexdump bolknote.webloc
0000000 62 70 6c 69 73 74 30 30 d1 01 02 53 55 52 4c 5f
0000010 10 13 68 74 74 70 3a 2f 2f 62 6f 6c 6b 6e 6f 74
0000020 65 2e 72 75 2f 08 0b 0f 00 00 00 00 00 00 01 01
0000030 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00
0000040 00 00 00 00 00 00 00 25
0000048
Комментарий для Евгения Степанищева:
Попробуй Alfred. Там вроде бы это штатная опция, и много другого command-line-style. Аналог — launchBar, можешь потестить и выбрать.
Комментарий для Евгения Степанищева:
А я затащил его в TextWrangler, он сразу xml показал.
Комментарий для bealex.livejournal.com:
Как только я пересел на Мак, мне тут же стали советовать софт, платный софт. Почему подразумевается, что я должен тратить кучу денег на допиливание системы под себя? :( Я этого совсем не хочу.
Комментарий для malinnikov.ru:
Странно, а мне показал текст URL, который я вводил при создании.
Комментарий для Евгения Степанищева:
неточно выразился, не в окно редактора, а на его иконку в доке. Ну или Файл-Открыть просто.
Комментарий для malinnikov.ru:
Ага, их можно создавать и в формате XML, но «Сафари» создаёт в виде бинарного файла с ресурсами.
alfred не платный, плата там за расширенную функциональность
Комментарий для rm:
Без расширенной функциональности он почти ничего не умеет, так следует из описания.
Комментарий для Евгения Степанищева:
Платный софт в мире макоси — это возможность получить то, что нужно. Его всегда можно попробовать. Почти всегда же есть бесплатные аналоги. В данном случае — QuickSilver. Но я давно не парюсь. Если есть отличная софтинка — поддержу разработчика, пускай он ее пилит, плагины к спотлайту пишутся не так просто как хотелось бы, да и времени нет.
Комментарий для Евгения Степанищева:
Ну, и, если посчитать, сколько времени я экономлю, используя лончеры... Все тут же окупается. Для мака действительно куча замечательного, простого и недорогого софта. А если искать скидки и покупать бандлами — вообще получается почти бесплатно.
И, да, можно не покупать. Я же не заставляю. Просто у меня была та же проблема, я ее решил вот так. Мне очень нравится. Просто поделился.
Комментарий для bealex.livejournal.com:
Я просто не настолько богат, чтобы покупать такую кучу софта, которую мне уже насоветовали (не только в комментариях, но и в оффлайне).
А этот самый QuickSilver что даёт? Чем лучше Spotlight’a, а то из описания мне не очевидно совсем.
Комментарий для bealex.livejournal.com:
Кажется его можно просто расширять через AppleScript, это его достоинство?
Комментарий для bealex.livejournal.com:
Не-не, это же не какая-то к тебе персональная претензия, просто заметил странную тенденцию.
Комментарий для Евгения Степанищева:
QuickSilver что даёт? Чем лучше Spotlight’a.
Всем лучше. Это такой весьма продвинутый Spotlight. Как-раз для автоматизации таких вот операций, типа открытия сайта или отправки письма.
QuickSilver как минимум быстрее, чем спотлайт — особенно через полгода-год жизни системы. Кроме того, QuickSilver — замечательный лончер, учитывающий с какой вероятностью запускается та или иная программа. Вот я очень часть запускаю Chrome и Charles, причем Chrome — чаще. Для того, чтобы запустить Хром, мне достаточно вызвать этот QuickSilver (одно нажатие на клавиатуре), нажать C и Enter. Чтобы запустить Charles — соответственно, вместо C набираю CH. Я этого не просил, так сложилось само, и мне, в общем, нравится.
Ну и QuickSliver расширяется, да — можно к нему и урлы сайтов приписать, хотя мне не надо, я не пробовал.
А вот видел ли хоть кто-нибудь для мака вменяемый архиватор уровня WinRar?
Евгений. Представьте, что вы покупаете авто в базовом комплекте. За доп.опции вы получаете кондиционер, автомагнитолу… Да, они платные. И совсем мне не понятно, почему должно быть не так.
У меня подобная задача решена так: шорткат (Mod+F4) выдаёт в статусной строке подсказку «web: „, после ввода запускается браузер с параметром ’ %27http://yubnub.org/parser/parse?command=%22..command..%22%27 ’.
yubnub.org — сервис, написанный для контеста <<2005 „Rails Day“ 24-hour programming contest>>. Позволяет маппить алиасы и делать „команды“ которые превращаются в get-запросы. Штука весьма удобная, кстати, если бы ещё добавить авторизацию и команды на уровне пользователя.. Команды там и сейчас можно кастомные добавлять — но область видимости там только одна, модерируемая единственным разработчиком-автором по email :).
Опера свежая?
А почему у вас там в яндексе просто не резолвятся адреса типа « http://wiki%22?
а файла hosts в маке нет?
просто же:
wiki wiki.yandex.ru
и всё
Комментарий для Виктор:
Потому что под Windows не так.
Комментарий для m-ivanov.livejournal.com:
Резовлятся, но не во всех режимах. В VPN, например, их нет.
Комментарий для vladon.ru:
Spotlight — это ещё и очень быстрый запуск чего-либо. У меня может быть браузер не запущен, а я в Spotlight вбиваю и не забочусь ни о чём.
Комментарий для AG:
Самая последняя.
Правильно говорят, поставь Alfred — он бесплатный в базовой комплектации. А если очень понравится, то его легко расширить заплатив. Что касается платности-бесплатности: система — это бизнес-ланч: ты берёшь то, что притоговили для всех, поэтому получилось дёшево. А софт — это отдельные блюда, за них всегда берут деньги. Ну и вспоминается анекдот про пользователя Андроида, котрый зашёл в бар…
Комментарий для pepelsbey:
Я же с Windows перешёл. Там на всё есть с десяток бесплатных программ.
А что лучше — QuickSilver или Alfred?
Комментарий для desh:
В „маке“ уже есть софт для этого. Хотелось бы расширить то, что есть.
А не пробовали держать всё время открытый браузер и в нём открытые вкладки с нужными сайтами?
Комментарий для AG:
Пробовали, неудобно.
Alfred лучше, ибо проще и сразу. Но тебе может понравиться QuickSilver тем, что его можно тонко настроить, да ещё и свой модуль написать.
Комментарий для Евгения Степанищева:
А вы всё в Opera на маке сидите?
Комментарий для jankkhvej.blogspot.com:
Ага.