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-устройств и многих других.
Утилита весьма полезна, и если вы не боитесь повозиться с кодом, то без преувеличения сможете с её помощью свернуть горы.
Лучшие предложения
Лучшие предложения недели: скидки от AliExpress, Urban Vibes, Incanto и других магазинов
14 базовых белых футболок, которые просто обязаны быть в любом гардеробе
Это нам надо: наушники Microsoft Xbox Wireless Headset
Надо брать: ноутбук Honor MagicBook X16 за 43 217 рублей
Находки AliExpress: самые интересные и полезные товары
15 интересных товаров дешевле 500 рублей
Уютно, практично и стильно: 8 российских брендов текстиля для дома
Лучшие предложения недели: скидки от AliExpress, «Яндекс Маркета», Yves Rocher и других магазинов
Что такое автомобильный аукцион и как с его помощью продать машину
«Моя работа — постоянный бег». 3 вдохновляющие истории российских учёных
5-й сезон подкаста «Слушай, это просто» стартовал! Первый выпуск — про эффект Бэтмена и пользу выдуманного альтер эго
Реклама«Young Adult — это не настоящая литература!» Обсуждаем стереотипы о книгах в новом выпуске подкаста «Женщины и всё»
Реклама