Лайфхакер
Лайфхакер
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Куда поехать на выходные
Опрос для читателей
Добрые новости
Стыдные вопросы
Есть мнение
Норм или стрём
Личный опыт
Объясняем за минуту
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
Это интересно
Путешествие начинается до взлёта! Как провести время до посадки с комфортом

Путешествие начинается до взлёта! Как провести время до посадки с комфортом

Давайте посчитаем. Как эффективно вести семейный бюджет

Давайте посчитаем. Как эффективно вести семейный бюджет

«Неловко спросить». Вопросы о благотворительности, которые вы стеснялись задать

«Неловко спросить». Вопросы о благотворительности, которые вы стеснялись задать

Реклама
BitrixGPT Agent

Команда Лайфхакера попробовала нового ИИ-агента в «Битрикс24». 5 возможностей, которые нас удивили 

Реклама
Комментарии
Denis Yurashku
24.03.16 18:43
А-а-а-а!.. :) Вот он, AutoHotKey для (наконец-то!) OS X!.. ??
Что вы могли пропустить
«Яндекс Карты» научились строить маршруты на общественном транспорте без интернета
«Яндекс Карты» научились строить маршруты на общественном транспорте без интернета
0
17:13
Новости
Технологии
Samsung начала распространять One UI 9 на смартфоны Galaxy S26 — что нового
Samsung начала распространять One UI 9 на смартфоны Galaxy S26 — что нового
0
16:46
Android
Новости
В России запустили оплату покупок смарт-часами через Mir Pay
В России запустили оплату покупок смарт-часами через Mir Pay
0
14:10
Новости
Технологии
Только не туда: 10 мест, где WD-40 использовать точно не стоит
Только не туда: 10 мест, где WD-40 использовать точно не стоит
0
13:00
Технологии
Технологии
Появились первые обзоры AirPods 5 — в первую очередь хвалят качество звука
Появились первые обзоры AirPods 5 — в первую очередь хвалят качество звука
0
11:12
Новости
Устройства
Какие батарейки лучше: алкалиновые, щелочные или солевые
Какие батарейки лучше: алкалиновые, щелочные или солевые
0
Вчера
Ликбез
Технологии
Как скачать видео с YouTube на телефон и компьютер: 6 проверенных способов
Как скачать видео с YouTube на телефон и компьютер: 6 проверенных способов
0
Вчера
Технологии
Технологии
Появился первый тизер Xiaomi 18 Pro с экраном сзади и обновлённой камерой
Появился первый тизер Xiaomi 18 Pro с экраном сзади и обновлённой камерой
0
Вчера
Новости
Устройства
Apple готовит складной iPhone Duo с более крупным дисплеем и кое-что для геймеров
Apple готовит складной iPhone Duo с более крупным дисплеем и кое-что для геймеров
0
14 сентября
Новости
Устройства
Почему искрит розетка и опасно ли это
Почему искрит розетка и опасно ли это
0
14 сентября
Технологии
Технологии
Мама, я программист: 10 проектов для знакомства с вайбкодингом
Мама, я программист: 10 проектов для знакомства с вайбкодингом
0
13 сентября
Технологии
Технологии
Объясняем за минуту: как узнать, поддерживает ли ваш телефон eSIM
Объясняем за минуту: как узнать, поддерживает ли ваш телефон eSIM
0
12 сентября
Технологии
Технологии
Какая раскладушка лучше — iPhone Duo или Samsung Galaxy Z Fold 8
Какая раскладушка лучше — iPhone Duo или Samsung Galaxy Z Fold 8
0
11 сентября
Устройства
Устройства
5G официально запустили в России — но с iPhone подключиться не выйдет
5G официально запустили в России — но с iPhone подключиться не выйдет
0
11 сентября
Новости
Технологии
Американский стартап вызвал около 70 миллионов литров дождя с помощью дронов — на это ушло 3 часа
Американский стартап вызвал около 70 миллионов литров дождя с помощью дронов — на это ушло 3 часа
0
11 сентября
Новости
Технологии

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

Аватар автора комментария
Sergey Gorovoy44 минуты назад

0 / 0

неблагодарное дело выбрали коллайдеровцы - выбирать "десятки" жанрового кино. неужели не дойдут до "пятёрок", а то и "троек"? разводят всякий раз некую вкусовщину на потребу неугомонных спорщиков...
В Сети назвали 10 величайших психологических триллеров за 90 лет
Аватар автора комментария
Ivan48 минут назад

0 / 0

В целом, достаточно знать, что wd-40 - это не смазка и не очиститель. Это вытеснитель влаги с антикоррозийными свойствами. Используйте по назначению и будет счастье.
Только не туда: 10 мест, где WD-40 использовать точно не стоит
Аватар автора комментария
Alexander Popov1 час назад

0 / 0

Ну вообще там смысл такой, Япония после войны была на нуле. Приходит Годзилла — и загоняет её в «минус один».
Годзилла официально вернулся: вышел взрывной трейлер «Годзиллы: Минус ноль»
Аватар автора комментария
Serg4 часа назад

+1 / 0

Отличный рецпт. Получились вкусные булочки и на вид ниче так.
Пышные булочки на кефире
ИГРА: Снова в школу! Найдите всё, что пригодится для учёбы

ИГРА: Снова в школу! Найдите всё, что пригодится для учёбы

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