return (function() spoon = { name = "C3C Workspace"; version = "0.0.1"; author = "Arnie"; license = "MIT"; } -- DELL S2722DGM: 0F6BDB5B-840D-40BE-AAC9-B467A78E057A -- DELL S2721DGF: D3142823-261D-46EF-B9C2-5181C7FE2CA5 -- AV Receiver: B5A65BB6-E73E-4C3D-977C-33C86798AA5A local appScreenMap = { Slack = { desktop = 1, screen = "0F6BDB5B-840D-40BE-AAC9-B467A78E057A", fullscreen = true, }, } local fullscreen = function(win) local screen = win:screen() local cell = hs.grid.get(win, screen) cell.x = 0 cell.y = 0 cell.w = 24 cell.h = 24 hs.grid.set(win, cell, screen) end function spoon:restoreAppsToScreens() local screens = {} for _, screen in ipairs(hs.screen.allScreens()) do screens[screen:getUUID()] = screen end for appName, def in pairs(appScreenMap) do local scr = screens[def.screen] if scr ~= nil then local app = hs.application.get(appName) if app then local wf = hs.window.filter.new(appName) if wf then -- TODO: Really bad performance for _, win in pairs(wf:getWindows()) do win:moveToScreen(scr) if def.fullscreen then fullscreen(win) end end end end end end end -- https://github.com/Hammerspoon/hammerspoon/blob/master/SPOONS.md#hotkeys function spoon:bindHotKeys(mapping) local spec = { restoreAppsToScreens = hs.fnutils.partial(self.restoreAppsToScreens, self) } hs.spoons.bindHotkeysToSpec(spec, mapping) return self end return spoon end)()