我已经从https://github.com/asmagill/hs._asm.undocumented.spaces安装了“未记录的空格”模块。特别是,它提供了一个方法moveWindowToSpace
,我试图用它绑定cmd+1
以使用以下内容将当前窗口移动到空格1:
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)
这在将窗口移动到新空间的意义上起作用,但是,空格看起来是伪随机顺序。
是否有人知道如何正确地将spaceID
的{{1}}映射到实际空格?
答案 0 :(得分:0)
在对空间模块的作者提出一些提示后,我想出了以下内容,这似乎可以解决问题。
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.moveWindowToSpace(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)
以前我在https://github.com/Hammerspoon/hammerspoon/issues/235使用了代码的变体,它挂接到osx定义的热键以切换空格,但上面的代码要快得多!
答案 1 :(得分:0)
对于2020年寻求更简单的工作解决方案的人,您可以使用Apple脚本:
function moveWindowOneSpace(direction)
local keyCode = direction == "left" and 123 or 124
return hs.osascript.applescript([[
tell application "System Events"
keystroke (key code ]] .. keyCode .. [[ using control down)
end tell
]])
end
我尝试使用this issue中的解决方案,但是没有用。另一方面,苹果脚本的工作原理就像是魅力。