summaryrefslogtreecommitdiff
path: root/hammerspoon
diff options
context:
space:
mode:
authorzsmith <zsmith@newhopechurch.tv>2025-09-02 15:07:06 -0500
committerzsmith <zsmith@newhopechurch.tv>2025-09-02 15:07:06 -0500
commitd8f94c4924d603dd20e1374c136c750652dd406f (patch)
tree5e30ecbacd5c0ed9702ee17f2af7ac46e99040cb /hammerspoon
parent639877d00ba78be43633cfed72c8e7f34c4f8996 (diff)
Add hammerspoon config
Diffstat (limited to 'hammerspoon')
-rw-r--r--hammerspoon/init.lua96
1 files changed, 96 insertions, 0 deletions
diff --git a/hammerspoon/init.lua b/hammerspoon/init.lua
new file mode 100644
index 0000000..fd73cc8
--- /dev/null
+++ b/hammerspoon/init.lua
@@ -0,0 +1,96 @@
+PaperWM = hs.loadSpoon("PaperWM")
+PaperWM:bindHotkeys({
+ -- switch to a new focused window in tiled grid
+ focus_left = {{"alt", "cmd"}, "left"},
+ focus_right = {{"alt", "cmd"}, "right"},
+ focus_up = {{"alt", "cmd"}, "up"},
+ focus_down = {{"alt", "cmd"}, "down"},
+
+ -- switch windows by cycling forward/backward
+ -- (forward = down or right, backward = up or left)
+ focus_prev = {{"alt", "cmd"}, "k"},
+ focus_next = {{"alt", "cmd"}, "j"},
+
+ -- move windows around in tiled grid
+ swap_left = {{"alt", "cmd", "shift"}, "left"},
+ swap_right = {{"alt", "cmd", "shift"}, "right"},
+ swap_up = {{"alt", "cmd", "shift"}, "up"},
+ swap_down = {{"alt", "cmd", "shift"}, "down"},
+
+ -- alternative: swap entire columns, rather than
+ -- individual windows (to be used instead of
+ -- swap_left / swap_right bindings)
+ -- swap_column_left = {{"alt", "cmd", "shift"}, "left"},
+ -- swap_column_right = {{"alt", "cmd", "shift"}, "right"},
+
+ -- position and resize focused window
+ center_window = {{"alt", "cmd"}, "c"},
+ full_width = {{"alt", "cmd"}, "f"},
+ cycle_width = {{"alt", "cmd"}, "r"},
+ reverse_cycle_width = {{"ctrl", "alt", "cmd"}, "r"},
+ cycle_height = {{"alt", "cmd", "shift"}, "r"},
+ reverse_cycle_height = {{"ctrl", "alt", "cmd", "shift"}, "r"},
+
+ -- increase/decrease width
+ increase_width = {{"alt", "cmd"}, "l"},
+ decrease_width = {{"alt", "cmd"}, "h"},
+
+ -- move focused window into / out of a column
+ slurp_in = {{"alt", "cmd"}, "i"},
+ barf_out = {{"alt", "cmd"}, "o"},
+
+ -- move the focused window into / out of the tiling layer
+ toggle_floating = {{"alt", "cmd", "shift"}, "escape"},
+
+ -- focus the first / second / etc window in the current space
+ focus_window_1 = {{"cmd", "shift"}, "1"},
+ focus_window_2 = {{"cmd", "shift"}, "2"},
+ focus_window_3 = {{"cmd", "shift"}, "3"},
+ focus_window_4 = {{"cmd", "shift"}, "4"},
+ focus_window_5 = {{"cmd", "shift"}, "5"},
+ focus_window_6 = {{"cmd", "shift"}, "6"},
+ focus_window_7 = {{"cmd", "shift"}, "7"},
+ focus_window_8 = {{"cmd", "shift"}, "8"},
+ focus_window_9 = {{"cmd", "shift"}, "9"},
+
+ -- switch to a new Mission Control space
+ switch_space_l = {{"alt", "cmd"}, ","},
+ switch_space_r = {{"alt", "cmd"}, "."},
+ switch_space_1 = {{"alt", "cmd"}, "1"},
+ switch_space_2 = {{"alt", "cmd"}, "2"},
+ switch_space_3 = {{"alt", "cmd"}, "3"},
+ switch_space_4 = {{"alt", "cmd"}, "4"},
+ switch_space_5 = {{"alt", "cmd"}, "5"},
+ switch_space_6 = {{"alt", "cmd"}, "6"},
+ switch_space_7 = {{"alt", "cmd"}, "7"},
+ switch_space_8 = {{"alt", "cmd"}, "8"},
+ switch_space_9 = {{"alt", "cmd"}, "9"},
+
+ -- move focused window to a new space and tile
+ move_window_1 = {{"alt", "cmd", "shift"}, "1"},
+ move_window_2 = {{"alt", "cmd", "shift"}, "2"},
+ move_window_3 = {{"alt", "cmd", "shift"}, "3"},
+ move_window_4 = {{"alt", "cmd", "shift"}, "4"},
+ move_window_5 = {{"alt", "cmd", "shift"}, "5"},
+ move_window_6 = {{"alt", "cmd", "shift"}, "6"},
+ move_window_7 = {{"alt", "cmd", "shift"}, "7"},
+ move_window_8 = {{"alt", "cmd", "shift"}, "8"},
+ move_window_9 = {{"alt", "cmd", "shift"}, "9"}
+})
+
+-- 10px gap on all sides
+PaperWM.window_gap = 10
+
+--[[
+-- ignore specific window titles
+PaperWM.window_filter:setAppFilter("AppName", {
+ rejectTitles={
+ "Title1", "Title2"
+ }
+})
+--]]
+
+-- Set the ratios to cycle through
+PaperWM.window_ratios = { 1/4, 1/3, 1/2, 2/3, 3/4 }
+
+PaperWM:start()