Hammerspoon - add bindings
[dotfiles.git] / hammerspoon / init.lua
index c795b62..f30a5b6 100644 (file)
@@ -10,42 +10,34 @@ hs.hotkey.bind({"cmd", "alt", "ctrl"}, "R", function()
 end)
 hs.alert.show("Config loaded")
 
+---- Right click 
+--hs.hotkey.bind({"cmd,", "alt", "ctrl"}, "l", function()
+--      hs.eventtap.rightClick(hs.mouse.getAbsolutePosition())
+--end)
+
+-- Donw : For firefox vimperator
+hs.hotkey.bind({"cmd,", "ctrl"}, "n", function()
+      hs.eventtap.keyStroke({}, 'down')
+end)
 
--- Sample - Drawing on the screen - http://www.hammerspoon.org/go/#simplereload
-mouseCircle = nil
-mouseCircleTimer = nil
+-- Up
+hs.hotkey.bind({"cmd,", "ctrl"}, "p", function()
+      hs.eventtap.keyStroke({}, 'up')
+end)
 
-function mouseHighlight()
-    -- Delete an existing highlight if it exists
-    if mouseCircle then
-        mouseCircle:delete()
-        if mouseCircleTimer then
-            mouseCircleTimer:stop()
+-- Reacting to application events
+-- Move all Finder in front
+function applicationWatcher(appName, eventType, appObject)
+    if (eventType == hs.application.watcher.activated) then
+        if (appName == "Finder") then
+            -- Bring all Finder windows forward when one gets activated
+            appObject:selectMenuItem({"Window", "Bring All to Front"})
         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()
+appWatcher = hs.application.watcher.new(applicationWatcher)
+appWatcher:start()
 
-  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/
@@ -85,15 +77,17 @@ function move_window(direction)
             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
+           if f.w > (max.w * 3/4) and f.h > (max.h * 3/4) 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
+                f.x = max.x 
+                f.y = max.y
+                f.w = max.w 
+                f.h = max.h
+           end
         else
             hs.alert.show("move_window(): Freaky parameter received " .. direction)
         end
@@ -102,13 +96,12 @@ function move_window(direction)
     end
 end
  
-local hyper = {"ctrl", "alt"}
+local hyper = {"ctrl", "cmd"}
 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
@@ -146,6 +139,7 @@ INSTALL:andUse("TextClipboardHistory",
                {
                   config = {
                      show_in_menubar = false,
+                     hist_size = 500,
                   },
                   hotkeys = {
                      toggle_clipboard = { { "cmd", "shift" }, "v"}