Лайфхакер
Лайфхакер
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Бежим с Лайфхакером
Добрые новости
Стыдные вопросы
Есть мнение
Норм или стрём
Личный опыт
Объясняем за минуту
Сервисы
macOS
24 марта 2016

Hammerspoon для Mac — автоматизируй меня полностью

Многие действия в OS X можно автоматизировать с помощью штатного приложения Automator. Бесплатная утилита Hammerspoon делает то же самое, но при этом более глубоко интегрируется с системой, позволяя создавать привязанные к горячим клавишам действия и даже небольшие программы.
Фото автора Артём Козориз
Артём Козориз

Автор Лайфхакера

Hammerspoon для Mac — автоматизируй меня полностью

Таким необычным названием создатели, видимо, хотели подчеркнуть многофункциональность и универсальность Hammerspoon. Их вряд ли можно упрекнуть, ведь благодаря поддержке Lua-скриптов перед нами открываются действительно огромные возможности.

Сразу стоит сказать, что с Hammerspoon нам придётся немножко повозиться с кодом. Но не пугайтесь, уметь писать его самому не обязательно (хотя в случае с Lua это очень легко), на сайте приведено много готовых примеров на основе расширений, которые можно использовать или видоизменять.

После установки Hammerspoon нужно включить для него универсальный доступ, после чего перейти в меню Open Config и в открывшемся окне текстового редактора добавить код нашего первого скрипта.

автоматизация

По традиции можно начать с Hello World или сразу перейти к более сложным вещам: разработчики подготовили подробный гид. Мы с вами не будем размениваться по мелочам и сделаем шорткаты для перемещения окон. Для этого вставляем в наш init.lua следующий код, сохраняем документ и выбираем в меню Hammerspoon Reload Config.

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “Y”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.x = f.x — 10

f.y = f.y — 10

win:setFrame(f)

end)

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “K”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.y = f.y — 10

win:setFrame(f)

end)

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “U”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.x = f.x + 10

f.y = f.y — 10

win:setFrame(f)

end)

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “H”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.x = f.x — 10

win:setFrame(f)

end)

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “L”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.x = f.x + 10

win:setFrame(f)

end)

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “B”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.x = f.x — 10

f.y = f.y + 10

win:setFrame(f)

end)

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “J”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.y = f.y + 10

win:setFrame(f)

end)

hs.hotkey.bind({“cmd”, “alt”, “ctrl”}, “N”, function()

local win = hs.window.focusedWindow()

local f = win:frame()

f.x = f.x + 10

f.y = f.y + 10

win:setFrame(f)

end)

Если внимательно посмотреть на этот код, можно увидеть параметры, указывающие количество пикселей, на которое будет перемещаться окно, его положение и комбинации клавиш, отвечающие за перемещение. Проверяем: удерживая ⌃⌥⌘, жмём на клавиши H/L для перемещения влево-вправо и J/K для перемещения вниз-вверх. Всё работает.

В качестве мини-программ можно привести в пример реализацию аналога популярной утилиты Caffeine, предотвращающей переход Mac в режим сна. В соответствующем скрипте всего с десяток строк кода.

local caffeine = hs.menubar.new()

function setCaffeineDisplay(state)

if state then

caffeine:setTitle(“AWAKE”)

else

caffeine:setTitle(“SLEEPY”)

end

end

function caffeineClicked()

setCaffeineDisplay(hs.caffeinate.toggle(“displayIdle”))

end

if caffeine then

caffeine:setClickCallback(caffeineClicked)

setCaffeineDisplay(hs.caffeinate.get(“displayIdle”))

end

После сохранения в строке меню появляется простая кнопка SLEEPY, меняющаяся на AWAKE, если запретить переход в режим сна.

В скрипт можно добавлять несколько фрагментов кода с теми или иными функциями, они будут работать независимо друг от друга. Всего в Hammerspoon доступно около сотни API, которые позволяют автоматизировать самые различные действия: от перемещения окон, взаимодействия с буфером обмена и запуска AppleScript до всяческих процессов, основанных на событиях, вроде подключения к Сети, подсоединения USB-устройств и многих других.

Утилита весьма полезна, и если вы не боитесь повозиться с кодом, то без преувеличения сможете с её помощью свернуть горы.

Обложка: mama_mia / Shutterstock.com
Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
Это интересно
Новая глава вашей жизни: 7 причин, по которым выбирают квартиры в кварталах «Серии плюс» от ПИК

Новая глава вашей жизни: 7 причин, по которым выбирают квартиры в кварталах «Серии плюс» от ПИК

Мас-рестлинг, хуреш и ещё 5 необычных национальных видов спорта России

Мас-рестлинг, хуреш и ещё 5 необычных национальных видов спорта России

ИГРА: Настоящие чемпионы. Найдите своего идеального союзника в мире еды

ИГРА: Настоящие чемпионы. Найдите своего идеального союзника в мире еды

От доставки продуктов до тушения пожаров: как дроны помогают решать повседневные задачи

От доставки продуктов до тушения пожаров: как дроны помогают решать повседневные задачи

Комментарии
Denis Yurashku
24.03.16 18:43
А-а-а-а!.. :) Вот он, AutoHotKey для (наконец-то!) OS X!.. ??
Что вы могли пропустить
«Роскомнадзор» и Минцифры предложили разблокировать Roblox в России
«Роскомнадзор» и Минцифры предложили разблокировать Roblox в России
0
17:40
Новости
Технологии
Мессенджер Telegram снова появился на часах Apple Watch
Мессенджер Telegram снова появился на часах Apple Watch
0
17:10
iOS
Новости
Последний шанс: 14 крутых гаджетов со скидками под занавес распродажи AliExpress
Последний шанс: 14 крутых гаджетов со скидками под занавес распродажи AliExpress
0
16:00
Устройства
Устройства
Обзор «Яндекс Дропс» — беспроводных наушников с «Алисой» и новой функцией памяти
Обзор «Яндекс Дропс» — беспроводных наушников с «Алисой» и новой функцией памяти
0
12:00
Устройства
Устройства
Быстрая iOS 27 и Siri как чат-бот: главные анонсы Apple с WWDC 2026
Быстрая iOS 27 и Siri как чат-бот: главные анонсы Apple с WWDC 2026
0
10:19
Новости
Технологии
5 технологий и гаджетов, которые родились и умерли на наших глазах
5 технологий и гаджетов, которые родились и умерли на наших глазах
0
Вчера
Технологии
Технологии
20 расширений для «Яндекс Браузера», которые пригодятся каждому
20 расширений для «Яндекс Браузера», которые пригодятся каждому
0
7 июня
Браузеры
Ликбез
В США составили топ-7 стриминговых сервисов по качеству контента
В США составили топ-7 стриминговых сервисов по качеству контента
0
6 июня
Новости
Технологии
Два экрана и 3D без очков: чем уникальна Nintendo 3DS и почему её стоит купить как можно скорее
Два экрана и 3D без очков: чем уникальна Nintendo 3DS и почему её стоит купить как можно скорее
0
6 июня
Технологии
Технологии
Инсайдер раскрыл, как iOS 27 изменит стандартные приложения в iPhone
Инсайдер раскрыл, как iOS 27 изменит стандартные приложения в iPhone
0
6 июня
iOS
Новости
Сплошная выгода: 18 наушников, часов и других аксессуаров с большой распродажи AliExpress
Сплошная выгода: 18 наушников, часов и других аксессуаров с большой распродажи AliExpress
0
5 июня
Покупки
Устройства
Боты впервые обогнали людей по интернет-трафику — виноваты ИИ-агенты
Боты впервые обогнали людей по интернет-трафику — виноваты ИИ-агенты
0
5 июня
Новости
Технологии
Google может отказаться от привычного поиска — новый формат уже тестируют в Chrome
Google может отказаться от привычного поиска — новый формат уже тестируют в Chrome
0
5 июня
Новости
Технологии
3 лучших аэрогриля среди моделей FELFRI 2026 года
3 лучших аэрогриля среди моделей FELFRI 2026 года
0
5 июня
Устройства
Устройства
Как создать настоящий ИИ-хит, если вы ничего не понимаете в музыке
Как создать настоящий ИИ-хит, если вы ничего не понимаете в музыке
0
5 июня
Колонка
Технологии

Новые комментарии

Аватар автора комментария
Vladimir Maslov21 минуту назад

0 / 0

Лживая статья. Гомосексуализм хорошо лечится, а очень часто он проходит сам собой, о чем учёным, клиницистам и медикам хорошо известно. Автор плохо изучил тему и игнорирует огромный пласт научной литературы. В целом статья вредная и за неё надо наказать автора и владельца сайта.
Как наука объясняет гомосексуальность
Аватар автора комментария
Виктор Подволоцкий1 час назад

0 / 0

Как это, в Apple же шпионы сидят и слушают как мы спрашиваем репепты борща и время варки яиц. Ценная информация утечёт за рубеж.
Обзор «Яндекс Дропс» — беспроводных наушников с «Алисой» и новой функцией памяти
Аватар автора комментария
Иван Иванов1 час назад

0 / 0

1. Старые приложения которые давно не обновляли перестанут запускаться. Многие классические купленные игры например. Прощай twewy и gta sa. Их механизм запуска отключили. 2. По ии вопрос, как там с оплатой?
Быстрая iOS 27 и Siri как чат-бот: главные анонсы Apple с WWDC 2026
Аватар автора комментария
Глебушек4 часа назад

0 / 0

Я долгое время борюсь с алкоголизмом, но всякий раз срываюсь, потому что никто не поддерживает меня в моей борьбе. Приглашаю всех желающих побороть своё пьянство присоединиться ко мне. Давайте трезвиться вместе! На данный момент (09 июня 2026 года) я не пью два дня. Кто со мной? Давайте на спор: кто первый сорвётся, тот лох - это будет стимул для неупотребления.
10 стыдных вопросов об алкоголе и похмелье: отвечает психиатр-нарколог Ивери Кизицкий
Новая глава вашей жизни: 7 причин, по которым выбирают квартиры в кварталах «Серии плюс» от ПИК

Новая глава вашей жизни: 7 причин, по которым выбирают квартиры в кварталах «Серии плюс» от ПИК

Лайфхакер
Информация
О проектеРубрикиРекламаРедакцияВакансииО компании
Подписка
TelegramВКонтактеTwitterViberYouTubeИнициалRSS
Правила
Пользовательское соглашениеПолитика обработки персональных данныхПравила применения рекомендательных технологийПравила сообществаСогласие на обработку персональных данныхСогласие для рекламных рассылокСогласие для информационной программы
18+Копирование материалов запрещено.
Издание может получать комиссию от покупки товаров, представленных в публикациях