如何通过AppleScript更改主显示屏?

时间:2008-09-16 01:10:40

标签: applescript

在“系统偏好设置”的“显示”窗格中,我可以通过将菜单栏从一个显示拖动到另一个显示来手动更改主监视器。我想将其自动化并使其成为AppleScript的一部分。

5 个答案:

答案 0 :(得分:4)

显示由/Library/Preferences/com.apple.windowserver.plist首选项文件控制:

  1. 标志控制主显示屏是否为DisplayMainOnInternal键的板载屏幕。
  2. DisplaySets键包含显示集列表。第一组是使用的(事实要检查)。
  3. 在集合中,每个项目都包含屏幕属性。 IOFlags键似乎表示显示是否为主显示(值为7)或不显示(值为3)。
  4. 在使用Apple Script之前,您可以手动更改显示配置,并保存/Library/Preferences/com.apple.windowserver.plist文件的副本以进行研究。

    请注意,以下程序尚未经过测试!!!

    使用AppleScript,plist文件中的键会单独更改,以便更改主显示:

    1. 备份/Library/Preferences/com.apple.windowserver.plist(如果是)
    2. 更改显示设置,使用DisplaySets命令
    3. 选择主显示屏(IOFlagsdefaults键)
    4. 重新启动Window Server:killall -KILL SystemUIServer

答案 1 :(得分:1)

您应该看看是否可以通过AppleScript的用户界面脚本执行此操作。它允许您操作应用程序的GUI元素;当应用程序不支持直接编写脚本时很有用。我自己测试一下,但周围没有任何额外的显示器。

这是a pretty good overview by MacTech

答案 2 :(得分:0)

就像你可以告诉System Events.app让你的Mac睡觉一样,你可以告诉Image Events.app弄乱你的显示器。 Image Events应用程序提供“显示”集合。每个显示器都有一个带有很多好东西的“配置文件”。但是,我刚刚提到的所有内容都是只读的,所以我没有一个很好的方法可以在脚本中完成它。

你可能在Automator中有更好的运气 - 点击记录,运行系统偏好设置,转到显示,将菜单栏拖动到另一个屏幕,然后点击停止。我打赌有些东西会起作用。

答案 3 :(得分:0)

使用AppleScript,您可以调用default来编写设置以更改主监视器。

答案 4 :(得分:0)

我写的工具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

获得