Minor hammerspoon fixes, better code

main
Steffen Rademacker 3 years ago
parent 89327fa47b
commit 282c035fdc

@ -1,5 +1,4 @@
local vimouse = require('vimouse') local vimouse = require('vimouse')
local app = require('hs.application') local app = require('hs.application')
local eventtap = require('hs.eventtap') local eventtap = require('hs.eventtap')
local geometry = require('hs.geometry') local geometry = require('hs.geometry')
@ -8,11 +7,16 @@ local layout = require('hs.layout')
local screen = require('hs.screen') local screen = require('hs.screen')
local win = require('hs.window') local win = require('hs.window')
-- Custom variables
--------------------
local hyper = { 'cmd', 'alt', 'shift', 'ctrl' } local hyper = { 'cmd', 'alt', 'shift', 'ctrl' }
local laptopMonitor = "Built-in Retina Display" local laptopMonitor = "Built-in Retina Display"
local mainMonitor = "DELL U3415W" local mainMonitor = "DELL U3415W"
-- Custom positions where apps can be on the screen -- Custom positions and layouts where which apps can be on the screen
--------------------
local screenPositions = { local screenPositions = {
left = geometry.rect(0.01, 0.01, 0.485, 0.98), left = geometry.rect(0.01, 0.01, 0.485, 0.98),
leftTop = { x = 0.01, y = 0.01, w = 0.485, h = 0.485 }, leftTop = { x = 0.01, y = 0.01, w = 0.485, h = 0.485 },
@ -28,9 +32,9 @@ local screenPositions = {
} }
local layoutDouble = { local layoutDouble = {
{ "Calendar", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Calendar", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Firefox", nil, mainMonitor, screenPositions.left, nil, nil }, { "Firefox", nil, mainMonitor, screenPositions.left, nil, nil },
{ "ForkLift", nil, laptopMonitor, screenPositions.max, nil, nil }, { "ForkLift", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Spotify", nil, mainMonitor, screenPositions.left, nil, nil }, { "Spotify", nil, mainMonitor, screenPositions.left, nil, nil },
{ "iTerm2", nil, mainMonitor, screenPositions.right, nil, nil }, { "iTerm2", nil, mainMonitor, screenPositions.right, nil, nil },
{ "Messages", nil, mainMonitor, screenPositions.rightTop, nil, nil }, { "Messages", nil, mainMonitor, screenPositions.rightTop, nil, nil },
@ -40,15 +44,15 @@ local layoutDouble = {
} }
local layoutSingle = { local layoutSingle = {
{ "Calendar", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Calendar", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Firefox", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Firefox", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "ForkLift", nil, laptopMonitor, screenPositions.max, nil, nil }, { "ForkLift", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Spotify", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Spotify", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "iTerm2", nil, laptopMonitor, screenPositions.max, nil, nil }, { "iTerm2", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Messages", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Messages", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Signal", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Signal", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Telegram", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Telegram", nil, laptopMonitor, screenPositions.full, nil, nil },
{ "Microsoft Teams", nil, laptopMonitor, screenPositions.max, nil, nil }, { "Microsoft Teams", nil, laptopMonitor, screenPositions.full, nil, nil },
} }
local appNames = { local appNames = {
@ -63,6 +67,9 @@ local appNames = {
"Microsoft Teams", "Microsoft Teams",
} }
-- Local helper functions
--------------------
local function launchApps() local function launchApps()
for i, appName in ipairs(appNames) do for i, appName in ipairs(appNames) do
app.launchOrFocus(appName) app.launchOrFocus(appName)
@ -78,8 +85,6 @@ local function applyPosition(pos)
local w = win.focusedWindow() local w = win.focusedWindow()
local screenName = w:screen():name() local screenName = w:screen():name()
local tempPos = screenPositions[pos] local tempPos = screenPositions[pos]
print(meh)
local tempLayout = { local tempLayout = {
{ app.frontmostApplication(), nil, screenName, tempPos, nil, nil }, { app.frontmostApplication(), nil, screenName, tempPos, nil, nil },
} }
@ -87,29 +92,28 @@ local function applyPosition(pos)
layout.apply(tempLayout) layout.apply(tempLayout)
end end
-- Window management -- Window management and general config
-------------------- --------------------
win.animationDuration = 0 win.animationDuration = 0
-- Move and click mouse via keyboard -- Keybindings
vimouse(hyper, ',') --------------------
-- Applying main two layouts -- Applying main two layouts
hotkey.bind(hyper, 'q', function() layout.apply(layoutSingle) end) hotkey.bind(hyper, 'q', function() layout.apply(layoutSingle) end)
hotkey.bind(hyper, 'w', function() layout.apply(layoutDouble) end) hotkey.bind(hyper, 'w', function() layout.apply(layoutDouble) end)
-- Window Navigation -- Direct app navigation
-- hotkey D is set in Dash itself -- hotkey D is set in Dash itself
hotkey.bind(hyper, 'a', function() app.launchOrFocus('iTerm') end) hotkey.bind(hyper, 'a', function() app.launchOrFocus('iTerm') end)
hotkey.bind(hyper, 's', function() app.launchOrFocus('Firefox') end) hotkey.bind(hyper, 's', function() app.launchOrFocus('Firefox') end)
hotkey.bind(hyper, 'f', function() app.launchOrFocus('ForkLift') end) hotkey.bind(hyper, 'f', function() app.launchOrFocus('ForkLift') end)
hotkey.bind(hyper, 'g', function() launchApps() end) hotkey.bind(hyper, 'g', function() launchApps() end)
-- Moving window around / navigating windows -- Moving windows around / navigating windows
hotkey.bind(hyper, '[', function() win.focusedWindow():moveOneScreenNorth(); moveMouse() end) hotkey.bind(hyper, '[', function() win.focusedWindow():moveOneScreenNorth(); moveMouse() end)
hotkey.bind(hyper, ']', function() win.focusedWindow():moveOneScreenSouth(); moveMouse() end) hotkey.bind(hyper, ']', function() win.focusedWindow():moveOneScreenSouth(); moveMouse() end)
hotkey.bind(hyper, 'z', function() applyPosition('full'); moveMouse() end) hotkey.bind(hyper, 'z', function() applyPosition('full'); moveMouse() end)
hotkey.bind(hyper, 'x', function() applyPosition('max'); moveMouse() end) hotkey.bind(hyper, 'x', function() applyPosition('max'); moveMouse() end)
hotkey.bind(hyper, 'c', function() applyPosition('center'); moveMouse() end) hotkey.bind(hyper, 'c', function() applyPosition('center'); moveMouse() end)
@ -137,3 +141,4 @@ hotkey.bind(hyper, '0', function() eventtap.keyStroke({}, 'F10') end)
hotkey.bind(hyper, '-', function() eventtap.keyStroke({}, 'F11') end) hotkey.bind(hyper, '-', function() eventtap.keyStroke({}, 'F11') end)
hotkey.bind(hyper, '=', function() eventtap.keyStroke({}, 'F12') end) hotkey.bind(hyper, '=', function() eventtap.keyStroke({}, 'F12') end)
vimouse(hyper, ',')

Loading…
Cancel
Save