【发布时间】:2008-09-16 01:10:40
【问题描述】:
在“系统偏好设置”的“显示器”窗格中,我可以通过将菜单栏从一个显示器拖到另一个显示器来手动更改主显示器。我想将其自动化并使其成为 AppleScript 的一部分。
【问题讨论】:
标签: applescript
在“系统偏好设置”的“显示器”窗格中,我可以通过将菜单栏从一个显示器拖到另一个显示器来手动更改主显示器。我想将其自动化并使其成为 AppleScript 的一部分。
【问题讨论】:
标签: applescript
显示由/Library/Preferences/com.apple.windowserver.plist 首选项文件控制:
DisplayMainOnInternal键。DisplaySets 键包含显示集的列表。第一组是使用的(需要检查的事实)。IOFlags 键似乎表明显示器是主显示器(值为 7)还是不是(值为 3)。在使用 Apple Script 之前,您可以手动更改显示配置,并保存一份 /Library/Preferences/com.apple.windowserver.plist 文件的副本以研究它。
请注意,以下程序未经测试!!!
使用 AppleScript,plist 文件中的键被单独更改,以更改主显示:
/Library/Preferences/com.apple.windowserver.plist(以防万一)defaults 命令更改显示设置选择主显示(DisplaySets 和IOFlags 键)killall -KILL SystemUIServer
【讨论】:
我编写的工具displayplacer 就是这样做的。
按你喜欢的方式配置你的屏幕,在 macOS 系统设置中将“白条”拖到你的主屏幕上,然后执行displayplacer list。它将输出要运行的命令,以将您的屏幕置于其当前配置中。带有origin:(0,0) 的屏幕是带有“白条”的主显示屏。通过脚本、Automator、BetterTouchTool 等运行此终端命令。
示例配置文件 1 将白条放在左侧显示器的菜单栏上。
displayplacer "id:<leftScreenId> res:1920x1080 scaling:on origin:(0,0) degree:0" "id:<rightScreenId> res:1920x1080 scaling:on origin:(1920,0) degree:0"
示例配置文件 1 将白条放在右侧显示器的菜单栏上。
displayplacer "id:<leftScreenId> res:1920x1080 scaling:on origin:(1920,0) degree:0" "id:<rightScreenId> res:1920x1080 scaling:on origin:(0,0) degree:0"
也可通过 Homebrew brew tap jakehilborn/jakehilborn && brew install displayplacer
【讨论】:
您应该看看是否可以通过 AppleScript 的用户界面脚本来实现。它允许您操作应用程序的 GUI 元素;当应用程序不直接支持脚本时很有用。我会自己测试它,但我周围没有任何额外的显示器。
【讨论】:
就像您可以让 System Events.app 让您的 Mac 进入睡眠状态一样,您也可以让 Image Events.app 让您的显示器变得混乱。 Image Events 应用程序提供了一个“显示”集合。每个显示器都有一个“配置文件”,里面有很多好东西。但是,我刚才提到的所有内容都是只读的,所以我没有从脚本中执行此操作的好方法。
您可能在 Automator 中运气更好 - 点击记录,运行系统偏好设置,转到显示,将菜单栏拖到另一个屏幕,然后点击停止。我敢打赌一定会奏效的。
【讨论】:
使用 AppleScript,您可以调用 default 来编写更改主监视器的设置。
【讨论】: