keyboard maestro有什么办法可以识别窗口所在显示器吗

已经实现了按下快捷键调整窗口大小
但是因为有多个显示器而且显示器大小不同
想加个判断,判断窗口在哪个显示器,进而调整成不同的大小

前面让gpt生成了一个apple script,但是好像只有在单个显示器情况下才可以用,多个的时候会报错
所以想请教下各位,谢谢

apple script如下,供参考

osascript -e '
tell application "System Events"
    -- 获取当前前台应用程序的名称
    set frontApp to name of first process whose frontmost is true
    
    tell application "Finder"
        -- 获取屏幕分辨率
        set screenResolution to bounds of window of desktop
        set screenWidth to item 3 of screenResolution as text
        set screenHeight to item 4 of screenResolution as text
        
        -- 返回应用名称和分辨率
        return frontApp & ": " & screenWidth & "x" & screenHeight
    end tell
end tell
'

顺带想问下,有没有推荐的apple script的教程:thinking:

看你的代码,似乎是想通过当前屏幕分辨率来判断位于哪个显示器?如果想做到这一点,Keyboard Maestro 本身就带了相关 Token。

不建议学习 AppleScript,投入产出不成正比。每一次系统升级,AppleScript 都会偷偷变动一些语法,大概率 Apple 已经不想维护这玩意儿了。LaunchBar 也基本放弃了 AppleScript,live feedback 失效了三年都不修。实在避不开的时候,找现成代码或问 GPT 就行。

感谢回复
我试了一下你这个,但是没有任何反应诶:thinking:

检查一下你那边的 %Screen%Main% 的输出是什么?我截图中的数据是我的,肯定不能直接用。

请教下这个怎么检查呢,我试了那个try,也没有反应

测试可以,这个显示的是主显示器的分辨率
我想获取到的是 当前软件 所在显示器的分辨率,这个有什么办法可以获取到吗

用函数。一般来说长度或宽度就足够判断显示器了,如果不行,再考虑长宽组合。

1 个赞

非常赞的办法!!
再请教一下,调整窗口大小,有什么办法让它只在当前显示器中调整吗?

“只在当前显示器中调整”具体指什么?Keyboard Maestro 默认就是只调整当前显示器中的当前窗口,不知道你具体想要什么效果。

image

如果窗口标题不一样的话可以用 If then else 里的 Front Window condition

感谢建议
目前是想做一个通用的,能在不同显示器中及时还原到统一尺寸呢

目前用的是这种调整,结果是,无论在哪个显示器中,这个都会在调整大小之后回到主显示器
期望是能直接在当前显示器中调整大小,不会移动回主显示器中

image

箭头处Main改为“Second”试试
来源

@Minja 我傻了,其实直接在这里选Resize to就可以在原显示器调整了,因为加了Move所以会移动…
Keyboard Maestro 2025-01-01 09.29.12

1 个赞

Main 变成 mouse 可以变成鼠标所在的显示器

1 个赞