+
+-- Reload configuration
+hs.hotkey.bind({"cmd", "alt", "ctrl"}, "R", function()
+ hs.reload()
+end)
+hs.alert.show("Config loaded")
+
+
+-- Sample - Drawing on the screen - http://www.hammerspoon.org/go/#simplereload
+mouseCircle = nil
+mouseCircleTimer = nil
+
+function mouseHighlight()
+ -- Delete an existing highlight if it exists
+ if mouseCircle then
+ mouseCircle:delete()
+ if mouseCircleTimer then
+ mouseCircleTimer:stop()
+ end
+ end
+ -- Get the current co-ordinates of the mouse pointer
+ mousepoint = hs.mouse.getAbsolutePosition()
+ -- Prepare a big red circle around the mouse pointer
+ mouseCircle = hs.drawing.circle(hs.geometry.rect(mousepoint.x-40, mousepoint.y-40, 80, 80))
+ mouseCircle:setStrokeColor({["red"]=1,["blue"]=0,["green"]=0,["alpha"]=1})
+ mouseCircle:setFill(false)
+ mouseCircle:setStrokeWidth(5)
+ mouseCircle:show()
+
+ -- Set a timer to delete the circle after 3 seconds
+ mouseCircleTimer = hs.timer.doAfter(3, function() mouseCircle:delete() end)
+end
+hs.hotkey.bind({"cmd","alt","shift"}, "D", mouseHighlight)
+
+
+-- window movement
+hs.hotkey.bind({"cmd", "alt", "ctrl"}, "H", function()
+ local win = hs.window.focusedWindow()
+ local f = win:frame()
+
+ f.x = f.x - 10
+ win:setFrame(f)
+end)
+
+-- Window Movement
+-- https://andrich.blog/2016/11/20/hammerspoon-an-awesome-tool-to-automate-your-mac/
+-- CTRL + ALT + Left - Move current window to the left half of the screen.
+-- CTRL + ALT + Right - Move current window to the right half of the screen.
+-- CTRL + ALT + Up - Go "fullscreen".
+-- CTRL + ALT + Down - Center window, covering 2/3 of screen size.
+--
+
+function move_window(direction)
+ return function()
+ local win = hs.window.focusedWindow()
+ local app = win:application()
+ local app_name = app:name()
+ local f = win:frame()
+ local screen = win:screen()
+ local max = screen:frame()
+
+ if direction == "left" then
+ f.x = max.x
+ f.y = max.y
+ f.w = max.w / 2
+ f.h = max.h
+ elseif direction == "right" then
+ f.x = max.x + (max.w / 2)
+ f.y = max.y
+ f.w = max.w / 2
+ f.h = max.h
+ elseif direction == "up" then
+ f.x = max.x
+ f.y = max.y
+ f.w = max.w
+ f.h = max.h / 2
+ elseif direction == "down" then
+ f.x = max.x
+ f.y = max.y + (max.h / 2)
+ f.w = max.w
+ f.h = max.h / 2
+ elseif direction == "max" then
+ f.x = max.x
+ f.y = max.y
+ f.w = max.w
+ f.h = max.h
+ elseif direction == "center" then
+ f.x = max.x + (max.w / 6)
+ f.y = max.y + (max.h / 6)
+ f.w = max.w * 2 / 3
+ f.h = max.h * 2 / 3
+ else
+ hs.alert.show("move_window(): Freaky parameter received " .. direction)
+ end
+
+ win:setFrame(f, 0)
+ end
+end
+
+local hyper = {"ctrl", "alt"}
+hs.hotkey.bind(hyper, "h", move_window("left"))
+hs.hotkey.bind(hyper, "l", move_window("right"))
+hs.hotkey.bind(hyper, "k", move_window("up"))
+hs.hotkey.bind(hyper, "j", move_window("down"))
+hs.hotkey.bind(hyper, "m", move_window("max"))
+hs.hotkey.bind(hyper, "c", move_window("center"))
+
+-- Search and dictionary
+-- Past and copy
+-- App quick startup