-- Manish's take on Window Management via Hammerspoon.
--
-- local delta = 250
local mash = {"cmd", "alt", "ctrl"}
local mash_win = {"cmd", "ctrl"}
-- Move to left.
hs.hotkey.bind(mash_win, "H", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
local half = max.w / 2
local errm = max.w / 50
if f.x == max.x and math.abs(f.w - half) < errm then
f.w = max.w / 4
else
f.w = half
end
f.x = max.x
f.y = max.y
f.h = max.h
win:setFrame(f)
end)
-- Move to right.
hs.hotkey.bind(mash_win, "L", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
local half = max.x + (max.w / 2)
if f.x == half then
f.x = half + (max.w / 4)
f.w = max.w / 4
else
f.x = max.x + (max.w / 2)
f.w = max.w / 2
end
f.y = max.y
f.h = max.h
win:setFrame(f)
end)
-- Move to top.
hs.hotkey.bind(mash_win, "J", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
local half = max.h / 2
local diff = math.abs(f.h - half)
local errm = max.h / 50
print("J key", diff, errm)
if f.y == max.y and math.abs(f.h - half) < errm then
f.h = max.h * 0.67
else
f.h = half
end
f.y = max.y
win:setFrame(f)
end)
-- Move to bottom.
hs.hotkey.bind(mash_win, "K", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
local half = max.h / 2
local errm = max.h / 50
if math.abs(f.y - max.y - half) < errm and math.abs(f.h - half) < errm then
f.y = max.y + (max.h * 0.33)
f.h = max.h * 0.67
else
f.y = max.y + half
f.h = half
end
win:setFrame(f)
end)
hs.hotkey.bind(mash_win, "M", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
f.x = max.x + (max.w / 4)
f.y = max.y
f.w = max.w / 2
f.h = max.h
win:setFrame(f)
end)
-- launch and focus applications with below shortkeys.
hs.fnutils.each({
{ key = "C", app = "Google Chrome" },
{ key = "S", app = "Slack" },
{ key = "T", app = "iTerm" }
}, function(object)
hs.hotkey.bind(mash_win, object.key, function() hs.application.launchOrFocus(object.app) end)
end)
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "U", function()
hs.reload()
end)
hs.alert.show("Config loaded")
--[[
hs.hotkey.bind(mash, "K", function()
local win = hs.window.focusedWindow()
local f = win:frame()
f.y = f.y - delta
win:setFrame(f)
end)
hs.hotkey.bind(mash, "H", function()
local win = hs.window.focusedWindow()
local f = win:frame()
f.x = f.x - delta
win:setFrame(f)
end)
hs.hotkey.bind(mash, "L", function()
local win = hs.window.focusedWindow()
local f = win:frame()
f.x = f.x + delta
win:setFrame(f)
end)
hs.hotkey.bind(mash, "J", function()
local win = hs.window.focusedWindow()
local f = win:frame()
f.y = f.y + delta
win:setFrame(f)
end)
hs.hotkey.bind(mash, "Y", function()
local win = hs.window.focusedWindow()
local f = win:frame()
f.w = f.w / 2
f.h = f.h / 2
win:setFrame(f)
end)
hs.hotkey.bind(mash, "N", function()
local win = hs.window.focusedWindow()
local f = win:frame()
f.w = f.w * 2
f.h = f.h * 2
win:setFrame(f)
end)
--]]
This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.