Tho*_*ggi 5 display gui window macos
我正在寻找一种在给定屏幕上排列所有打开的应用程序窗口的方法。我想“级联”它们,以便每个窗口的一部分都是可见的,当单击它们中的任何一个时,我可以轻松地单击返回另一个窗口,这意味着没有一个窗口会丢失在另一个窗口之后。
这是想法:
这包括在屏幕的 X 轴和 Y 轴上重新定位每个窗口以及调整每个窗口的大小。大小相同。
更新:
尝试了 Hammerspoon 解决方案并得到以下错误。它确实将我所有的窗口从外接显示器移动到了 MacBook,而且它并没有真正级联。
小智 4
除了任务控制之外,我不知道有什么方法可以本地执行此操作。
Hammerspoon是一个低级自动化工具,非常适合此类事情,尽管有点笨拙。它将许多操作系统级操作公开给 Lua 脚本引擎,包括窗口定位等。
要在 Hammerspoon 中实现此功能,您可以执行以下操作:
function cascadeWindows()
local windows = hs.window.allWindows()
local screen = windows[1]:screen():frame()
local xMargin, yMargin = screen.w/5, screen.h/5 -- This is equal to the gap between the edge of the topleft window and the edge of the screen.
local layout = {}
for i, win in ipairs(windows) do
local winPos = {
win:application(),
win:title(),
win:screen(),
nil, hs.geometry.rect(
(i-1)*(xMargin/(#windows-1)), -- x
(i-1)*(yMargin/(#windows-1)), -- y, you might end up having to add some number here
screen.w - xMargin, -- w
screen.h - yMargin -- h
), nil
}
layout[#layout+1] = winPos
end
hs.layout.apply(layout)
end
hs.hotkey.bind({'cmd','alt','ctrl'}, 'space', cascadeWindows)
Run Code Online (Sandbox Code Playgroud)
该代码已经过松散测试,但应该作为起点。要安装,首先安装 Hammerspoon,然后将此代码放入您的~/.hammerspoon/init.lua文件中。您可以在 的文档中找到有关具体情况的更多信息hs.layout.apply,更一般的信息可以在 Hammerspoon 纪录片中找到。
如果你不懂Lua并且不想学习Lua(又快又简单!),或者不想学习像Hammerspoon这样深入的新工具,你可以按照上面的说明更改键绑定到您想要的任何内容。
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |