2017-10-18 2 views
0

J'ai installé le module « espaces sans papiers » de https://github.com/asmagill/hs._asm.undocumented.spaces. En particulier, il fournit une méthode moveWindowToSpace que je suis en train d'utiliser pour lier cmd+1 pour déplacer la la fenêtre en cours à l'espace 1 en utilisant les éléments suivants:En utilisant hammerspoon et le module des espaces pour déplacer la fenêtre de nouvel espace

local spaces = require("hs._asm.undocumented.spaces") 
function MoveWindowToSpace(sp) 
    local spaceID = spaces.query()[sp] 
    spaces.moveWindowToSpace(hs.window.focusedWindow():id(), spaceID) 
    spaces.changeToSpace(spaceID) 
end 
hs.hotkey.bind({"cmd"}, "1",function() MoveWindowToSpace(1) end) 

Cela fonctionne dans le sens où il déplace la fenêtre à une nouvelle espace, cependant, les espaces semblent être dans un ordre pseudo-aléatoire.

Est-ce que quelqu'un sait comment mapper correctement spaceID s, tel que renvoyé par spaces.query(), aux espaces réels?

Répondre

0

Après quelques conseils de l'auteur du module espaces je suis venu avec ce qui suit, qui semble faire l'affaire.

local spaces = require("hs._asm.undocumented.spaces") 
-- move current window to the space sp 
function MoveWindowToSpace(sp) 
    local win = hs.window.focusedWindow()  -- current window 
    local uuid = win:screen():spacesUUID()  -- uuid for current screen 
    local spaceID = spaces.layout()[uuid][sp] -- internal index for sp 
    spaces.moveWindwToSpace(win:id(), spaceID) -- move window to new space 
    spaces.changeToSpace(spaceID)    -- follow window to new space 
end 
hs.hotkey.bind(hyper, '1', function() MoveWindowToSpace(1) end) 

Auparavant, j'utilisais une variation du code à https://github.com/Hammerspoon/hammerspoon/issues/235, qui accroche dans les raccourcis clavier définis par osx pour les espaces de commutation, mais le code ci-dessus est beaucoup plus rapide!