如何获取macOS扩展显示器的位置(非分辨率)?
多显示器窗口定位问题与需求
显示器布局变化导致的窗口位置差异
初始布局:主显示器在上,扩展显示器在下居中。此时扩展显示器上的Finder窗口位于左半部分,执行以下AppleScript获取窗口信息:
tell application "System Events" tell process "Finder" {position of window 1, size of window 1} end tell end tell返回结果:
224, 1331, 881, 1075修改后布局:将扩展显示器移至主显示器左侧。执行同一AppleScript,返回窗口位置变为:
10, 1331, 881, 1075
已尝试方法的局限性
获取桌面边界:使用Finder命令
tell application "Finder" to get bounds of window of desktop两种布局下返回结果均为
0, 0, 2304, 2416,无法区分不同显示器的独立边界。获取显示器分辨率:使用系统工具命令
system_profiler SPDisplaysDataType仅能获取各显示器的分辨率参数,无法得到显示器间的相对位置关系。
读取Windowserver配置:
defaults read /Library/Preferences/com.apple.windowserver.plist文件中包含
UnmirroredOriginX和UnmirroredOriginY字段,但存在17项相关设置,无法确定哪一项为当前生效配置。
核心需求
需要实现不受显示器布局影响的窗口定位功能:
- 支持为指定显示器(主/扩展)的窗口生成左、右、中1/3,以及1/4、半屏等预设位置
- 以编程方式复刻Rectangle软件的窗口定位能力,通过脚本触发自动打开并定位窗口
- 不依赖Rectangle的按键指令(其仅支持“下一个/上一个”显示器切换,无法指定目标显示器,定位结果无确定性)
待解决问题
- 如何准确获取扩展显示器相对于主显示器的位置信息?
- 是否存在可指定目标显示器,将窗口定位至1/2、1/3、1/4区域的CLI工具?
内容的提问来源于stack exchange,提问作者Chris Redford
相关产品推荐
相关产品推荐

