Mission Controlを除き、これをネイティブに行う方法は知りません。
Hammerspoonは低レベルの自動化ツールであり、このタイプの場合には少し不器用ではありますが素晴らしいです。これは、ウィンドウの配置など、多くのOSレベルの操作を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)
このコードは緩やかにテストされていますが、出発点として機能するはずです。インストールするには、まずHammerspoonをインストールしてから、このコードを~/.hammerspoon/init.lua
ファイルに追加します。何が起こっているかについての詳細は、のドキュメントでhs.layout.apply
、より一般的にはHammerspoonドキュメンタリーで見つけることができます。
Luaを知らず、Luaを学習したくない場合(迅速かつ簡単です!)、またはHammerspoonほどの新しいツールの学習に参加したくない場合は、上記の指示に従って変更してください。あなたが望むものへのキーバインディング。