概要
アプリ名で絞り込んでからウィンドウの一覧を取得する方法もありますがプロセスとして独立してる場合にはそれだと取得できないことがあるのですべてのアプリを取得してからアプリ名でウィンドウを絞り込み操作します
環境
- macOS 15.2
- HammerSpoon 1.0.0
サンプルコード
hs.hotkey.bind({"cmd", "alt"}, "S", function()
-- hs.applicatoin.find -> app:allWindows ではミューレータを検知できないのですべてのアプリを取得してからアプリ名で対象のウィンドウを絞り込む
local activeWindows = {}
local apps = hs.application.runningApplications()
for _, app in ipairs(apps) do
if app:name() == "MuMu Android Device" then
local windows = app:allWindows()
for i, win in ipairs(windows) do
table.insert(activeWindows, win)
end
end
end
-- 各ウィンドウにサイズと位置を指定、左上の角が指定したX/Yの開始位置
local width = 275
local height = 527
local center_device_x = 960 - (275 / 2)
local toolbar_mergin_height = 25
local positions = {
-- 上段
{x = center_device_x, y = 0, w = width, h = height},
{x = center_device_x - width, y = 0, w = width, h = height},
{x = center_device_x + width, y = 0, w = width, h = height},
{x = center_device_x - (width * 2), y = 0, w = width, h = height},
{x = center_device_x + (width * 2), y = 0, w = width, h = height},
-- 下段
{x = center_device_x, y = height + toolbar_mergin_height, w = width, h = height},
{x = center_device_x - width, y = height + toolbar_mergin_height, w = width, h = height},
{x = center_device_x + width, y = height + toolbar_mergin_height, w = width, h = height},
{x = center_device_x - (width * 2), y = height + toolbar_mergin_height, w = width, h = height},
{x = center_device_x + (width * 2), y = height + toolbar_mergin_height, w = width, h = height},
}
for i, win in ipairs(activeWindows) do
if positions[i] then
win:setFrame(positions[i])
end
end
end)
最後に
制御するウィンドウをハッシュに登録してあとからウィンドウを操作するようにしています
0 件のコメント:
コメントを投稿