# hammerspoon configuration hammerspoon is my configuration for [Hammerspoon](http://www.hammerspoon.org/). It has highly modal-based, vim-style keybindings, provides some functionality like desktop widgets, window management, application launcher, instant search, ... etc. ## Get started - Install [Hammerspoon](http://www.hammerspoon.org/) first `brew install --cask hammerspoon` - `git clone https://github.com/einverne/dotfiles.git ~/dotfiles` - `ln -s ~/dotfiles/hammerspoon ~/.hammerspoon` - Reload the configuration. ## Keep update `cd ~/dotfiles && git pull` ## File structure - `autoscript.lua`, auto commit and push my personal notes. - `ime.lua`, auto switch different Input methods in different applications ## How to use Use Karabiner-Elements to set caps lock as hyper key. Press caps lock is just like press Cmd+Control+Option+Shift at the same time. ## Reload config - Hyper key + R, reload hammerspoon config ## Hyper key windows management - Hyper key + H, set windows to left half of screen - Hyper key + L, right half of screen - Hyper key + J, bottom half - Hyper key + K, top half - Hyper key + F, full screen ### Windows management mode Option+r Enter windows management: - ASDW to move windows position - HL/JK to set windows to left, right, up, down half of screen - Y/O/U/I to set windows to LeftUp, RightUp, LeftDown, LeftDown corner - Left/Right/Up/Down same as HL/JK - F to set windows to full screen - C to set windows to center - Esc/Q to exit - Tab to show help ### Switch windows I personally use the application called [Context](https://contexts.co/) to switch between different windows, however this config provide another way to quickly switch between windows. Try with `Option+Tab`. ## Toggle hammerspoon console `Option+z` ## Move windows between monitors If you have multiple monitors, you can use the following shortcut to move window to different monitor: - Hyper key + N, to move current window to next monitor - Hpper key + P, to move current window to previous monitor ### Application launcher Press `option + a` to enter application launcher. The shorcut information will show on the center of the screen. But I personally prefer [Alfred](https://www.alfredapp.com/). ## Hammerspoon API manual `Option+h` open Hammerspoon API manual. ## Lock screen `Option+l` to lock screen. ## Show time in the middle of screen `Option+t` to toggle the time in screen. ## Auto type url in markdown format `Option+v` to auto type url in markdown format. ## Toggle Hammerspoon console `Option+z` to toggle Hammerspoon console. ### Screenshots These screenshots demostrate what awesome-hammerspoon is capable of. Learn more about [built-in Spoons](https://github.com/ashfinal/awesome-hammerspoon/wiki/The-built-in-Spoons). ## Customization ```shell cp ~/.hammerspoon/config-example.lua ~/.hammerspoon/private/config.lua ``` Then modify the file `~/.hammerspoon/private/config.lua`: - Add/remove Spoons. Define `hspoon_list` to decide which Spoons (a distributing format of Hammerspoon module) to be loaded. There are 15 built-in Spoons, learn about them at [here](https://github.com/ashfinal/awesome-hammerspoon/wiki/The-built-in-Spoons). *There are more Spoons at [official spoon repository](http://www.hammerspoon.org/Spoons/) (you may need a little config before using them).* - Customize keybindings Please read `~/.hammerspoon/private/config.lua`for more details. ## Reference Some resources you may find helpful: - [Learn Lua in Y minutes](http://learnxinyminutes.com/docs/lua/) - [Getting Started with Hammerspoon](http://www.hammerspoon.org/go/) - [Hammerspoon API Docs](http://www.hammerspoon.org/docs/index.html) - [hammerspoon/SPOONS.md at master ยท Hammerspoon/hammerspoon](https://github.com/Hammerspoon/hammerspoon/blob/master/SPOONS.md) ## Thanks to - [ashfinal](https://github.com/ashfinal/awesome-hammerspoon/) - [https://github.com/zzamboni/oh-my-hammerspoon](https://github.com/zzamboni/oh-my-hammerspoon) - [https://github.com/scottcs/dot_hammerspoon](https://github.com/scottcs/dot_hammerspoon) - [https://github.com/dharmapoudel/hammerspoon-config](https://github.com/dharmapoudel/hammerspoon-config) - [http://tracesof.net/uebersicht/](http://tracesof.net/uebersicht/)