Запуск сайтов из 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, так что, возможно, какие-то вещи можно было сделать проще, напишите я поправлю.

Добавлено позднее: в комментариях один из читателей предложил более простой и изящный вариант. Ура!
16 апреля 2011 20:15

Артур (инкогнито)
16 апреля 2011, 20:43

Все делается гораздо проще — открываете браузер, заходите на какой-нить сайт, заносите его в закладки. Потом, при вводе в адресную строку первой буквы из названия сайта, адресная строка автозаполнится и останется только на «ввод» нажать и вы на вашем сайте.

bolk (bolknote.ru)
16 апреля 2011, 20:51, ответ предназначен Артуру

Наверное это работает в «Сафари», увы, в «Опере» и «Файрфоксе» это у меня не работает.

bolk (bolknote.ru)
16 апреля 2011, 20:54, ответ предназначен Артуру

Нужно, наверное, пояснить, что в настройках «Spotlight» у меня все галочки стоят.

bolk (bolknote.ru)
16 апреля 2011, 21:15, ответ предназначен Артуру

Да, я попробовал (добавил закладку в «Сафари»). В основном, меня интересуют довольно распространённые имена, они встречаются в документах, именах папок. В итоге, у меня веб-страницы стоят в самом конце и по Enter запускается что угодно, только не нужная веб-страница.

malinnikov.ru (инкогнито)
16 апреля 2011, 21:35

В свойствах файла есть поле "Комментарии Spotlight". Можно попробовать туда писать нужные ключевые слова, вместо создания копий файла с разными именами.

bolk (bolknote.ru)
16 апреля 2011, 21:46, ответ предназначен malinnikov.ru

Спасибо! К сожалению, я сомневаюсь, что Spotlight как-то указывает программе с каким именем он её запускает. Я попробовал поискать что-то на эту тему, не нашёл. Нужно писать плагин, но для этого надо многое прочитать.

malinnikov.ru (инкогнито)
16 апреля 2011, 21:59

Да, понял, что у вас имя скрипта имеет значение.

Скрипты — хорошее дело, но поиск по закладкам — штатное средство системы. Если нужно юзать альтернативный браузер, то можно было бы (в Сафари) стащить иконку сайта в папку, создается файл <site url>.webloc. Поскольку это просто xml-файлик с урлом внутри, то спотлайт будет находить его по названию, а приложением, ответственным за его открытие, можно сделать любой браузер.

bolk (bolknote.ru)
16 апреля 2011, 22:14, ответ предназначен malinnikov.ru

О! Спасибо! Это ровно то, что надо! Круто, спасибо!

bolk (bolknote.ru)
16 апреля 2011, 22:17, ответ предназначен 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

bealex (bealex.livejournal.com)
16 апреля 2011, 22:29, ответ предназначен bolk (bolknote.ru):

Попробуй Alfred. Там вроде бы это штатная опция, и много другого command-line-style. Аналог - launchBar, можешь потестить и выбрать.

malinnikov.ru (инкогнито)
16 апреля 2011, 22:36, ответ предназначен bolk (bolknote.ru):

А я затащил его в TextWrangler, он сразу xml показал.

bolk (bolknote.ru)
16 апреля 2011, 22:38, ответ предназначен bealex (bealex.livejournal.com):

Как только я пересел на Мак, мне тут же стали советовать софт, *платный* софт. Почему подразумевается, что я должен тратить кучу денег на допиливание системы под себя? :( Я этого совсем не хочу.

bolk (bolknote.ru)
16 апреля 2011, 22:45, ответ предназначен malinnikov.ru

А я затащил его в TextWrangler, он сразу xml показал.
Странно, а мне показал текст URL, который я вводил при создании.

malinnikov.ru (инкогнито)
16 апреля 2011, 22:49, ответ предназначен bolk (bolknote.ru):

Странно, а мне показал текст URL, который я вводил при создании.
неточно выразился, не в окно редактора, а на его иконку в доке. Ну или Файл-Открыть просто.

bolk (bolknote.ru)
16 апреля 2011, 22:49, ответ предназначен malinnikov.ru

Ага, их можно создавать и в формате XML, но «Сафари» создаёт в виде бинарного файла с ресурсами.

rm (инкогнито)
16 апреля 2011, 22:51

alfred не платный, плата там за расширенную функциональность

bolk (bolknote.ru)
16 апреля 2011, 22:53, ответ предназначен rm

Без расширенной функциональности он почти ничего не умеет, так следует из описания.

bealex (bealex.livejournal.com)
16 апреля 2011, 23:54, ответ предназначен bolk (bolknote.ru):

Платный софт в мире макоси - это возможность получить то, что нужно. Его всегда можно попробовать. Почти всегда же есть бесплатные аналоги. В данном случае - QuickSilver. Но я давно не парюсь. Если есть отличная софтинка - поддержу разработчика, пускай он ее пилит, плагины к спотлайту пишутся не так просто как хотелось бы, да и времени нет.

bealex (bealex.livejournal.com)
16 апреля 2011, 23:58, ответ предназначен bolk (bolknote.ru):

Ну, и, если посчитать, сколько времени я экономлю, используя лончеры... Все тут же окупается. Для мака действительно куча замечательного, простого и недорогого софта. А если искать скидки и покупать бандлами - вообще получается почти бесплатно.

И, да, можно не покупать. Я же не заставляю. Просто у меня была та же проблема, я ее решил вот так. Мне очень нравится. Просто поделился.

bolk (bolknote.ru)
16 апреля 2011, 23:59, ответ предназначен bealex (bealex.livejournal.com):

Я просто не настолько богат, чтобы покупать такую кучу софта, которую мне уже насоветовали (не только в комментариях, но и в оффлайне).

А этот самый QuickSilver что даёт? Чем лучше Spotlight'a, а то из описания мне не очевидно совсем.

bolk (bolknote.ru)
17 апреля 2011, 00:00, ответ предназначен bealex (bealex.livejournal.com):

Кажется его можно просто расширять через AppleScript, это его достоинство?

bolk (bolknote.ru)
17 апреля 2011, 00:10, ответ предназначен bealex (bealex.livejournal.com):

И, да, можно не покупать. Я же не заставляю. Просто у меня была та же проблема, я ее решил вот так. Мне очень нравится. Просто поделился.
Не-не, это же не какая-то к тебе персональная претензия, просто заметил странную тенденцию.

Alick (alick.ru)
17 апреля 2011, 01:15, ответ предназначен bolk (bolknote.ru):

QuickSilver что даёт? Чем лучше Spotlight'a.

Всем лучше. Это такой весьма продвинутый Spotlight. Как-раз для автоматизации таких вот операций, типа открытия сайта или отправки письма.

stanishevsky@livejournal.com (инкогнито)
17 апреля 2011, 01:16

QuickSilver как минимум быстрее, чем спотлайт - особенно через полгода-год жизни системы. Кроме того, QuickSilver — замечательный лончер, учитывающий с какой вероятностью запускается та или иная программа. Вот я очень часть запускаю Chrome и Charles, причем Chrome — чаще. Для того, чтобы запустить Хром, мне достаточно вызвать этот QuickSilver (одно нажатие на клавиатуре), нажать C и Enter. Чтобы запустить Charles — соответственно, вместо C набираю CH. Я этого не просил, так сложилось само, и мне, в общем, нравится.

Ну и QuickSliver расширяется, да — можно к нему и урлы сайтов приписать, хотя мне не надо, я не пробовал.
А вот видел ли хоть кто-нибудь для мака вменяемый архиватор уровня WinRar?

Виктор (инкогнито)
17 апреля 2011, 01:42

Евгений. Представьте, что вы покупаете авто в базовом комплекте. За доп.опции вы получаете кондиционер, автомагнитолу… Да, они платные. И совсем мне не понятно, почему должно быть не так.

desh (инкогнито)
17 апреля 2011, 01:42

У меня подобная задача решена так: шорткат (Mod+F4) выдаёт в статусной строке подсказку "web: ", после ввода запускается браузер с параметром 'http://yubnub.org/parser/parse?command="..command.."'.

yubnub.org - сервис, написанный для контеста <<2005 "Rails Day" 24-hour programming contest>>. Позволяет маппить алиасы и делать "команды" которые превращаются в get-запросы. Штука весьма удобная, кстати, если бы ещё добавить авторизацию и команды на уровне пользователя.. Команды там и сейчас можно кастомные добавлять - но область видимости там только одна, модерируемая единственным разработчиком-автором по email :).

AG (инкогнито)
17 апреля 2011, 03:11

Наверное это работает в «Сафари», увы, в «Опере» и «Файрфоксе» это у меня не работает.
Опера свежая?

m-ivanov (m-ivanov.livejournal.com)
17 апреля 2011, 03:59

А почему у вас там в яндексе просто не резолвятся адреса типа "http://wiki"?

vladon (vladon.ru)
17 апреля 2011, 09:01

а файла hosts в маке нет?

просто же:

wiki wiki.yandex.ru

и всё

bolk (bolknote.ru)
17 апреля 2011, 11:59, ответ предназначен Виктору

Да, они платные. И совсем мне не понятно, почему должно быть не так.
Потому что под Windows не так.

bolk (bolknote.ru)
17 апреля 2011, 11:59, ответ предназначен m-ivanov (m-ivanov.livejournal.com):

А почему у вас там в яндексе просто не резолвятся адреса типа "http://wiki"?
Резовлятся, но не во всех режимах. В VPN, например, их нет.

bolk (bolknote.ru)
17 апреля 2011, 12:00, ответ предназначен vladon (vladon.ru):

а файла hosts в маке нет?
Spotlight — это ещё и очень быстрый запуск чего-либо. У меня может быть браузер не запущен, а я в Spotlight вбиваю и не забочусь ни о чём.

bolk (bolknote.ru)
17 апреля 2011, 12:01, ответ предназначен AG

Опера свежая?
Самая последняя.

pepelsbey (инкогнито)
17 апреля 2011, 12:03

Правильно говорят, поставь Alfred — он бесплатный в базовой комплектации. А если очень понравится, то его легко расширить заплатив. Что касается платности-бесплатности: система — это бизнес-ланч: ты берёшь то, что притоговили для всех, поэтому получилось дёшево. А софт — это отдельные блюда, за них всегда берут деньги. Ну и вспоминается анекдот про пользователя Андроида, котрый зашёл в бар…

bolk (bolknote.ru)
17 апреля 2011, 12:31, ответ предназначен pepelsbey

Я же с Windows перешёл. Там на всё есть с десяток бесплатных программ.

А что лучше —  QuickSilver или Alfred?

bolk (bolknote.ru)
17 апреля 2011, 12:33, ответ предназначен desh

У меня подобная задача решена так: шорткат (Mod+F4) выдаёт в статусной строке подсказку "web: ", после ввода запускается браузер с параметром…
В «маке» уже есть софт для этого. Хотелось бы расширить то, что есть.

AG (инкогнито)
17 апреля 2011, 15:50

А не пробовали держать всё время открытый браузер и в нём открытые вкладки с нужными сайтами?

bolk (bolknote.ru)
17 апреля 2011, 20:24, ответ предназначен AG

Пробовали, неудобно.

pepelsbey (инкогнито)
18 апреля 2011, 08:53

Alfred лучше, ибо проще и сразу. Но тебе может понравиться QuickSilver тем, что его можно тонко настроить, да ещё и свой модуль написать.

jankkhvej (jankkhvej.blogspot.com)
18 апреля 2011, 11:37, ответ предназначен bolk (bolknote.ru):

А вы всё в Opera на маке сидите?

bolk (bolknote.ru)
18 апреля 2011, 16:39, ответ предназначен jankkhvej (jankkhvej.blogspot.com):

Ага.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)