.hammerspoon/init.lua

Fri, 04 Jun 2021 23:35:16 -0500

author
Meredith Howard <mhoward@roomag.org>
date
Fri, 04 Jun 2021 23:35:16 -0500
changeset 907
df71b104b773
parent 906
1e388dfbe200
child 908
fa7c0607c00e
permissions
-rw-r--r--

Fix up focus-to shortcuts for new hammerspoon

hs.window.animationDuration = 0

-- aliases and partial bindings to make life easier
local bindKey  = hs.hotkey.bind
local cmd      = hs.fnutils.partial(bindKey, {"cmd"})
local cmdShift = hs.fnutils.partial(bindKey, {"cmd", "shift"})
local cmdCtrl  = hs.fnutils.partial(bindKey, {"cmd", "ctrl"})

function focusedWindow()
  return hs.window.focusedWindow() or hs.window.desktop()
end

function focusTo(direction)
  local fn = hs.getObjectMetatable('hs.window')['focusWindow' .. direction]
  return function ()
    fn(focusedWindow(), nil, nil, true)
  end
end

-- and the key bindings
cmdShift('r', hs.reload)

cmd('k',  focusTo('North'))
cmd('up', focusTo('North'))

cmd('j',    focusTo('South'))
cmd('down', focusTo('South'))

cmd('h',    focusTo('West'))
cmd('left', focusTo('West'))

cmd('l',     focusTo('East'))
cmd('right', focusTo('East'))

cmdShift('up', function () focusedWindow():maximize() end)

cmdShift('down', function () focusedWindow():minimize() end)

cmdShift('left',  function () focusedWindow():moveToUnit(hs.layout.left50) end)
cmdShift('right', function () focusedWindow():moveToUnit(hs.layout.right50) end)

cmdCtrl('left',  function () focusedWindow():moveOneScreenWest() end)
cmdCtrl('right', function () focusedWindow():moveOneScreenEast() end)

cmd('return', function ()
  hs.applescript.applescript([[
    tell application "iTerm"
      set newterm to index of (create window with default profile)
      tell application "System Events" to tell process "iTerm2"
        perform action "AXRaise" of window newterm
      end tell
    end tell
  ]])
end)

cmdShift('return', function ()
  os.execute(os.getenv('SHELL')..' -l -i -c "exec mvim"')
end)

-- cache window frames before moving?
-- save cache?
-- focus by direction is a little strict

mercurial