Spectacle Window Manager Keybindings For Hammerspoon
Lunette is an easily configurable and extendible Hammerspoon package that implements all of the Spectacle keybindings.
Lunette comes with a set of default keybindings. See installation for more on altering and disabling default keybindings.
CommandName | (Chord) Activator |
---|---|
center |
(⌥ ⌘) C |
fullScreen |
(⌥ ⌘) F |
leftHalf |
(⌥ ⌘) ← |
rightHalf |
(⌥ ⌘) → |
topHalf |
(⌥ ⌘) ↑ |
bottomHalf |
(⌥ ⌘) ↓ |
topLeft |
(⌃ ⌘) ← |
bottomLeft |
(⌃ ⌘ ⇧) ← |
topRight |
(⌃ ⌘) → |
bottomRight |
(⌃ ⌘ ⇧) → |
nextDisplay |
(⌃ ⌥ ⌘) → |
prevDisplay |
(⌃ ⌥ ⌘) ← |
nextThird |
(⌃ ⌥) → |
prevThird |
(⌃ ⌥) ← |
enlarge |
(⌃ ⌥ ⇧) → |
shrink |
(⌃ ⌥ ⇧) ← |
undo |
(⌥ ⌘) Z |
redo |
(⌥ ⌘ ⇧) Z |
-
Download and Install Hammerspoon
-
Download and unzip
Lunette.spoon.zip
to~/.hammerspoon/Spoons/
or clone this repository and symlinkLunette.spoon
to~/.hammerspoon/Spoons
-
Make sure you've enabled Hammerspoon with MacOS via System Preferences > Security & Privacy
-
Load Lunette in
~/.hammerspoon/init.lua
-- ~/.hammerspoon/init.lua hs.loadSpoon("Lunette")
-
Bind the Lunette Hotkeys
For the default Spectacle configuration, simply call
bindHotkeys()
without any arguments ininit.lua
:-- ~/.hammerspoon/init.lua spoon.Lunette:bindHotkeys()
To customize or disable specific keybindings, simply create a custom mapping table and pass it as an arg to
bindHotkeys()
.To customize keybindings, the mapping table keys must correspond to Lunette command names (see keybindings above) and their values must either be a two-element map containing either a chord map or single key in the first position, and an activation key in the second position.
To disable a specific keybinding, set the value of the given command's key to
false
.-- example custom map with `leftHalf` and `rightHalf` reconfigured and the history commands disabled -- you can have multiple bindings to run a command, as shown in leftHalf customBindings = { leftHalf = { {{"Q", "W"}, "E"}, {{"cmd", "alt"}, "left"}, }, rightHalf = { {{"A", "S"}, "D"}, }, undo = false, redo = false } spoon.Lunette:bindHotkeys(customBindings)
Feel free to submit an issue/feature request/pull request.
Bugfix:
- fix installation error introduced in v0.3 (@jasperzs)
New features:
- exposing the window resizer API outside of Lunette (@jokajak)
- adding SpoonInstaller/Make config (@jokajak)
Minor bugfixes and improvements:
- use integer division instead of
math.floor
(@shayneholmes) - fix issue with stuck bottom corner calculations (@shayneholmes)
- permit multiple mappings per keybinding (@davidosomething)
- add gitignore
- add release checklist
Initial Release