aboutsummaryrefslogtreecommitdiffstats
path: root/application_switch.lua
blob: 3644c94f8f45678a75f09ce7a3e795db51b14b3d (plain)
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
local activateAllWindows = true

application_switch = {}

application_switch['f1'] = hs.hotkey.bind({}, 'f1', function()
	hs.application.find('com.apple.Terminal'):activate()
end)

application_switch['f2'] = hs.hotkey.bind({}, 'f2', function()
	hs.application.find('org.mozilla.nightly'):activate(activateAllWindows)
end)

application_switch['f3'] = hs.hotkey.bind({}, 'f3', function()
	hs.application.find('com.google.Chrome'):activate(activateAllWindows)
end)

application_switch['f4'] = hs.hotkey.bind({}, 'f4', function()
	hs.application.find('com.microsoft.rdc.osx.beta'):activate()
end)

-- Rebind Shift-F[n] to F[n]
for _, key in ipairs({'f1', 'f2', 'f3', 'f4'}) do
	hs.hotkey.bind({'shift'}, key, function()
		application_switch[key]:disable()

		hs.timer.doAfter(0.05, function()
			hs.eventtap.keyStroke({}, key)

			application_switch[key]:enable()
		end)
	end)
end


-- Mode to activate lesser-used applications
application_switch_mode = hs.hotkey.modal.new({}, 'f13')
application_switch_mode:bind({}, 'f13', function()
	application_switch_mode:exit()
end)

application_switch_mode:bind({}, 'q', function()
	hs.application.find('org.libreoffice.script'):activate(activateAllWindows)

	application_switch_mode:exit()
end)

application_switch_mode:bind({}, 'w', function()
	hs.application.find('com.microsoft.Word'):activate(activateAllWindows)

	application_switch_mode:exit()
end)

application_switch_mode:bind({}, 'x', function()
	hs.application.find('com.microsoft.Excel'):activate(activateAllWindows)

	application_switch_mode:exit()
end)

application_switch_mode:bind({}, 'f', function()
	hs.application.find('com.googlecode.iterm2'):activate(activateAllWindows)

	application_switch_mode:exit()
end)

application_switch_mode:bind({}, 'v', function()
	hs.application.find('com.apple.Preview'):activate(activateAllWindows)

	application_switch_mode:exit()
end)