如何通过AppleScript更改主显示?

如何通过AppleScript更改主显示?,applescript,Applescript,在系统首选项的“显示”窗格中,我可以通过将菜单栏从一个显示器拖到另一个显示器来手动更改主显示器。我想将其自动化,并将其作为AppleScript的一部分。就像您可以告诉System Events.app使Mac休眠一样,您可以告诉Image Events.app使显示器混乱。图像事件应用程序提供“显示”集合。每个展品都有一个“简介”,里面有很多好吃的东西。然而,我刚才提到的所有内容都是只读的,所以我没有一个好的方法从脚本中执行它 在Automator中,您可能会有更好的运气–点击记录,运行系统首

在系统首选项的“显示”窗格中,我可以通过将菜单栏从一个显示器拖到另一个显示器来手动更改主显示器。我想将其自动化,并将其作为AppleScript的一部分。

就像您可以告诉System Events.app使Mac休眠一样,您可以告诉Image Events.app使显示器混乱。图像事件应用程序提供“显示”集合。每个展品都有一个“简介”,里面有很多好吃的东西。然而,我刚才提到的所有内容都是只读的,所以我没有一个好的方法从脚本中执行它


在Automator中,您可能会有更好的运气–点击记录,运行系统首选项,转到显示,将菜单栏拖到另一个屏幕,然后点击停止。我打赌会有办法的。

你应该看看是否可以通过AppleScript的用户界面脚本来实现。它允许您操作应用程序的GUI元素;当应用程序不直接支持脚本时非常有用。我会自己测试,但我没有任何额外的显示器


以下是。

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

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

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

    使用AppleScript,plist文件中的键将分别更改,以更改主显示:

  • 备份
    /Library/Preferences/com.apple.windowserver.plist
    (在以下情况下)
  • 使用
    默认值
    命令更改显示集,选择主显示(
    DisplaySets
    IOFlags
    键)
  • 重新启动窗口服务器:
    killall-KILL SystemUIServer

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

    我编写的工具就是这样做的

    按照您喜欢的方式配置屏幕,将“白条”拖动到macOS系统设置中的主屏幕,然后执行
    displayplacer list
    。它将输出要运行的命令,以将屏幕置于其当前配置中。带有
    原点:(0,0)
    的屏幕是带有“白色条”的主显示屏。通过脚本、自动机、BetterTouchTool等运行此终端命令

    示例配置文件1将白色条放在左侧监视器的菜单栏上。
    displayplacer“id:res:1920x1080缩放:在原点:(0,0)度:0”id:res:1920x1080缩放:在原点:(1920,0)度:0”

    示例概要文件1将白色条放在右侧监视器的菜单栏上。
    displayplacer“id:res:1920x1080缩放:在原点:(1920,0)度:0”id:res:1920x1080缩放:在原点:(0,0)度:0”


    也可通过自制
    brew点击jakehilborn/jakehilborn&&brew安装displayplacer

    使用Automator录制似乎无法录制打开的系统首选项(易于操作)或拖动菜单栏。在我看来,通过GUI脚本无法访问相关控件。我想我可以生成鼠标点击和拖动,但坐标对于不同的Mac电脑和显示器布局是不同的。