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

Лучшие предложения

10 вещей, которые спасают от лютого холода

10 вещей, которые спасают от лютого холода

Это нам надо: аэрогриль от Kitfort с двумя секциями со скидкой 49%

Это нам надо: аэрогриль от Kitfort с двумя секциями со скидкой 49%

робот-пылесос Dreame L40 Ultra CE

Робот-пылесос от Dreame, который почти не беспокоит пользователя

13 подарочных наборов для тех, у кого нет времени на выбор

13 подарочных наборов для тех, у кого нет времени на выбор

утеплённые кроссовки от Xtep

Надо брать: утеплённые кроссовки от Xtep со скидкой 36%

10 пар зимней обуви, в которой тепло и не скользко

10 пар зимней обуви, в которой тепло и не скользко

Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей

Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей

Берём в подарок фен-щётку с вращением от Tuvio

Берём в подарок фен-щётку с вращением от Tuvio

Это интересно
5 гаджетов, которые помогут сделать жизнь проще

5 гаджетов, которые помогут сделать жизнь проще

Реклама
Как работает распродажа на Ozon c точки зрения продавца и покупателя

Как работает распродажа на Ozon c точки зрения продавца и покупателя

Как найти увлечение после 60 лет и почему это важно

Как найти увлечение после 60 лет и почему это важно

ТЕСТ: Что о вас говорят ваши траты на Новый год

ТЕСТ: Что о вас говорят ваши траты на Новый год

Комментарии
Denis Yurashku
24.03.16 18:43
А-а-а-а!.. :) Вот он, AutoHotKey для (наконец-то!) OS X!.. ??
Что вы могли пропустить
23 расслабляющие игры для тех, кто задолбался
23 расслабляющие игры для тех, кто задолбался
0
13:00
Ликбез
Технологии
Французский стартап Smartlet показал ремешок, который позволяет носить двое часов одновременно
Французский стартап Smartlet показал ремешок, который позволяет носить двое часов одновременно
0
Вчера
Новости
Устройства
Лучшие смартфоны декабря
Лучшие смартфоны декабря
0
Вчера
Устройства
Устройства
«Яндекс» запустил бета‑версию сервиса «Яндекс Радио»
«Яндекс» запустил бета‑версию сервиса «Яндекс Радио»
0
Вчера
Новости
Технологии
«Роспатент» показал самые необычные новогодние изобретения
«Роспатент» показал самые необычные новогодние изобретения
0
Вчера
Новости
Технологии
Анонсированы Honor WIN и WIN RT — игровые флагманы с батареями на 10 000 мА·ч
Анонсированы Honor WIN и WIN RT — игровые флагманы с батареями на 10 000 мА·ч
0
Вчера
Новости
Устройства
Через Telegram-бот @pic теперь можно генерировать картинки и отправлять их собеседнику
Через Telegram-бот @pic теперь можно генерировать картинки и отправлять их собеседнику
0
Вчера
Новости
Технологии
12 новых игр для Android и iOS: лучшее за декабрь
12 новых игр для Android и iOS: лучшее за декабрь
0
Вчера
Технологии
Технологии
Xiaomi анонсировала флагманские часы Watch 5 с eSIM и датчиком ЭМГ для мышц
Xiaomi анонсировала флагманские часы Watch 5 с eSIM и датчиком ЭМГ для мышц
0
25 декабря
Новости
Устройства
Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей
Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей
0
25 декабря
Покупки
Устройства
Представлен камерофон Xiaomi 17 Ultra с 1-дюймовым сенсором и специальной версией Leica Edition
Представлен камерофон Xiaomi 17 Ultra с 1-дюймовым сенсором и специальной версией Leica Edition
0
25 декабря
Новости
Устройства
На видео показали возможный дизайн складного смартфона iPhone Fold
На видео показали возможный дизайн складного смартфона iPhone Fold
0
25 декабря
Новости
Устройства
25 устройств Xiaomi получат HyperOS 3 до 2026 года
25 устройств Xiaomi получат HyperOS 3 до 2026 года
0
25 декабря
Новости
Технологии
«Яндекс Go» начал показывать спрос на такси в реальном времени
«Яндекс Go» начал показывать спрос на такси в реальном времени
0
25 декабря
Новости
Технологии
Праздничные помощники: как «Алиса» и «Станции» помогают создать новогоднее настроение
Праздничные помощники: как «Алиса» и «Станции» помогают создать новогоднее настроение
0
25 декабря
Технологии
Технологии

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

Аватар автора комментария
Павел Б.22 минуты назад

0 / 0

Автор упорот, 3050 хуже многих современных встроек, и брать якобы игровой ноат, лучше взять что то со встройкой. Будет лучше и аатономнее или доплатить 10к и взять на актуальной 5ххх серии, хотя бы минимально ту же 5050 с 8гб, уже в fhd все современное потянет. То что автор предложил надо как подарок младшему брать в нагрузку к нормальному ноуту отдавать изи ценник делать 45-50к, как вариант для ультрасупербюджетного гейминга
Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей
Аватар автора комментария
Hve2 часа назад

0 / 0

никогда не понимал Гринча, еще на видеокассете смарел, хрень полная
Названы любимые новогодние фильмы у россиян
Аватар автора комментария
Яша Бородавкин2 часа назад

0 / 0

Уродливые все какие то, но хочется.
Лучшие смартфоны декабря
Аватар автора комментария
Kirill Paradis3 часа назад

0 / 0

За 77к можно взять Acer Nitro с 4060 или Китай, но уже с 5060. Если хочется 5060 от MSI, Acer или аналогичного - это уже от плюс 20-30к.
Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей
Платежи с кешбэком и без комиссий. Как приложение Газпромбанка облегчит вам жизнь

Платежи с кешбэком и без комиссий. Как приложение Газпромбанка облегчит вам жизнь

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