# 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, aria2 frontend ... etc. ## Get started - Install [Hammerspoon](http://www.hammerspoon.org/) first. - `git clone https://github.com/einverne/dotfiles.git ~/dotfiles` - `ln -s ~/dotfiles/hammerspoon ~/.hammerspoon` - Reload the configutation. ## 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 Karabier-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 to switch between different windows, however this config provider another way to quickly switch between windows. Try with `Option+Tab`. ## Toggle hammerspoon console `Option+z` ## Move windows between monitors - 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. ## 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). #### Desktop widgets ![widgets](https://github.com/ashfinal/bindata/raw/master/screenshots/awesome-hammerspoon-deskwidgets.png) #### Window manpulation + R ![winresize](https://github.com/ashfinal/bindata/raw/master/screenshots/awesome-hammerspoon-winresize.gif) #### aria2 Frontend + D You need to [run aria2 with RPC enabled](https://github.com/ashfinal/awesome-hammerspoon/wiki/Run-aria2-with-rpc-enabled) before using this. Config aria2 host and token in `~/.hammerspoon/private/config.lua`, then you're ready to go. ```lua hsaria2_host = "http://localhost:6800/jsonrpc" -- default host hsaria2_secret = "token" -- YOUR OWN SECRET ``` ## 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 - [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/)