From 282c035fdcca03860df15c3f66800731e1ec302b Mon Sep 17 00:00:00 2001 From: Steffen Rademacker Date: Sat, 16 Oct 2021 18:01:33 +0200 Subject: [PATCH] Minor hammerspoon fixes, better code --- hammerspoon/init.lua | 47 ++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/hammerspoon/init.lua b/hammerspoon/init.lua index 925d9346..e706e521 100644 --- a/hammerspoon/init.lua +++ b/hammerspoon/init.lua @@ -1,5 +1,4 @@ local vimouse = require('vimouse') - local app = require('hs.application') local eventtap = require('hs.eventtap') local geometry = require('hs.geometry') @@ -8,11 +7,16 @@ local layout = require('hs.layout') local screen = require('hs.screen') local win = require('hs.window') +-- Custom variables +-------------------- + local hyper = { 'cmd', 'alt', 'shift', 'ctrl' } local laptopMonitor = "Built-in Retina Display" 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 = { left = geometry.rect(0.01, 0.01, 0.485, 0.98), leftTop = { x = 0.01, y = 0.01, w = 0.485, h = 0.485 }, @@ -28,9 +32,9 @@ local screenPositions = { } local layoutDouble = { - { "Calendar", nil, laptopMonitor, screenPositions.max, nil, nil }, + { "Calendar", nil, laptopMonitor, screenPositions.full, 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 }, { "iTerm2", nil, mainMonitor, screenPositions.right, nil, nil }, { "Messages", nil, mainMonitor, screenPositions.rightTop, nil, nil }, @@ -40,15 +44,15 @@ local layoutDouble = { } local layoutSingle = { - { "Calendar", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "Firefox", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "ForkLift", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "Spotify", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "iTerm2", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "Messages", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "Signal", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "Telegram", nil, laptopMonitor, screenPositions.max, nil, nil }, - { "Microsoft Teams", nil, laptopMonitor, screenPositions.max, nil, nil }, + { "Calendar", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "Firefox", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "ForkLift", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "Spotify", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "iTerm2", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "Messages", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "Signal", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "Telegram", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "Microsoft Teams", nil, laptopMonitor, screenPositions.full, nil, nil }, } local appNames = { @@ -63,6 +67,9 @@ local appNames = { "Microsoft Teams", } +-- Local helper functions +-------------------- + local function launchApps() for i, appName in ipairs(appNames) do app.launchOrFocus(appName) @@ -78,8 +85,6 @@ local function applyPosition(pos) local w = win.focusedWindow() local screenName = w:screen():name() local tempPos = screenPositions[pos] - print(meh) - local tempLayout = { { app.frontmostApplication(), nil, screenName, tempPos, nil, nil }, } @@ -87,29 +92,28 @@ local function applyPosition(pos) layout.apply(tempLayout) end --- Window management +-- Window management and general config -------------------- win.animationDuration = 0 --- Move and click mouse via keyboard -vimouse(hyper, ',') +-- Keybindings +-------------------- -- Applying main two layouts hotkey.bind(hyper, 'q', function() layout.apply(layoutSingle) end) hotkey.bind(hyper, 'w', function() layout.apply(layoutDouble) end) --- Window Navigation +-- Direct app navigation -- hotkey D is set in Dash itself hotkey.bind(hyper, 'a', function() app.launchOrFocus('iTerm') end) hotkey.bind(hyper, 's', function() app.launchOrFocus('Firefox') end) hotkey.bind(hyper, 'f', function() app.launchOrFocus('ForkLift') 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():moveOneScreenSouth(); moveMouse() end) - hotkey.bind(hyper, 'z', function() applyPosition('full'); moveMouse() end) hotkey.bind(hyper, 'x', function() applyPosition('max'); 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({}, 'F12') end) +vimouse(hyper, ',')