我在用着锤子勺在 OSX 上调整窗口大小。特别是,我希望能够让窗口占据屏幕的一半,无论是垂直还是水平,以及占据整个屏幕。
但是,当我在轴之间切换时(例如垂直到水平),会出现严重的重绘延迟。以前我使用过奇观,它可以快速执行相同的任务。
为了演示,以下是我在 Hammerspoon 和 Spectacle 中调整窗口大小的短片。Hammerspoon
-死链接
奇观 -死链接
这是 Hammerspoon 调整窗口大小的限制吗,或者我可以更好地优化我的配置吗?
这是我的init.lua
--
-- Window management
--
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Left", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local max = win:screen():frame()
f.x = max.x
f.y = max.y
f.w = max.w / 2
f.h = max.h
win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Right", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local max = win:screen():frame()
f.x = max.w / 2
f.y = max.y
f.w = max.w / 2
f.h = max.h
win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Up", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local max = win:screen():frame()
f.x = max.x
f.y = max.y
f.w = max.w
f.h = max.h / 2
win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Down", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local max = win:screen():frame()
f.x = max.x
f.y = max.h / 2
f.w = max.w
f.h = max.h / 2
win:setFrame(f)
end)
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "f", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local max = win:screen():frame()
f.x = max.x
f.y = max.y
f.w = max.w
f.h = max.h
win:setFrame(f)
end)
答案1
看起来你已经打开了窗口动画,你可以用以下方法关闭它hs.window.animationDuration = 0
http://www.hammerspoon.org/docs/hs.window.html#animationDuration
答案2
前面的答案很好(默认的 animationDuration 值为 0.2),但您将更改全局值。在本地,您可以执行 win:setFrame(f) 而不是 win:setFrame(f)
win:setFrame(f, 0)
也会有同样的效果。