-
Notifications
You must be signed in to change notification settings - Fork 0
/
windowmgr.lua
107 lines (81 loc) · 2.14 KB
/
windowmgr.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
local NUDGE_AMOUNT = 50
local windowmgr = {}
function getFrameAndMaxFromWindow(win, setDefaults)
local f = win:frame()
local screen = win:screen()
local max = screen:frame()
if setDefaults then
f.x = max.x
f.y = max.y
f.w = max.w
f.h = max.h
end
return f, max
end
function windowmgr.snapLeft()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, true)
f.w = max.w / 2
win:setFrame(f)
end
function windowmgr.snapRight()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, true)
f.x = max.x + (max.w / 2)
f.w = max.w / 2
win:setFrame(f)
end
function windowmgr.snapDown()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, true)
f.y = max.y + (max.h / 2)
f.h = max.h / 2
win:setFrame(f)
end
function windowmgr.snapUp()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, true)
f.h = max.h / 2
win:setFrame(f)
end
function windowmgr.fullscreen()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, true)
win:setFrame(f)
end
function windowmgr.snapMiddle()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, true)
local width = max.w / 1.5
local height = max.h / 1.5
f.x = max.x + ((max.w - width) / 2)
f.y = max.y + ((max.h - height) / 2)
f.w = width
f.h = height
win:setFrame(f)
end
function windowmgr.nudgeLeft()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, false)
f.x = f.x - NUDGE_AMOUNT
win:setFrame(f)
end
function windowmgr.nudgeRight()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, false)
f.x = f.x + NUDGE_AMOUNT
win:setFrame(f)
end
function windowmgr.nudgeUp()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, false)
f.y = f.y - NUDGE_AMOUNT
win:setFrame(f)
end
function windowmgr.nudgeDown()
local win = hs.window.focusedWindow()
local f, max = getFrameAndMaxFromWindow(win, false)
f.y = f.y + NUDGE_AMOUNT
win:setFrame(f)
end
return windowmgr