-
Notifications
You must be signed in to change notification settings - Fork 0
/
alttab.lua
44 lines (34 loc) · 1.25 KB
/
alttab.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
-- Based on https://github.com/selectnull/hammerspoon-alttab
local application = require "hs.application"
local alttab = {}
local devSwitcher = hs.window.switcher.new{"Google Chrome", "Fork", "Code", "iTerm2", "Slack", "Android Studio", "Xcode", "PhpStorm"}
local switcher = hs.window.switcher.new()
hs.window.switcher.ui.fontName = "FuraCode Nerd Font Mono"
hs.window.switcher.ui.thumbnailSize = 64
function alttab.changeFocus()
focusScreen(hs.window.focusedWindow():screen():next())
end
function alttab.switchDev()
devSwitcher:next()
end
function alttab.switch()
switcher:next()
end
--Predicate that checks if a window belongs to a screen
function isInScreen(screen, win)
return win:screen() == screen
end
function focusScreen(screen)
--Get windows within screen, ordered from front to back.
--If no windows exist, bring focus to desktop. Otherwise, set focus on
--front-most application window.
local windows = hs.fnutils.filter(
hs.window.orderedWindows(),
hs.fnutils.partial(isInScreen, screen))
local windowToFocus = #windows > 0 and windows[1] or hs.window.desktop()
windowToFocus:focus()
-- Move mouse to center of screen
local pt = hs.geometry.rectMidPoint(screen:fullFrame())
hs.mouse.setAbsolutePosition(pt)
end
return alttab