如何在登录之前在启动时启动此 .plist 文件?

如何在登录之前在启动时启动此 .plist 文件?

我将当前的完整.plist文件复制到了这个问题的底部。

现在我有一个.plist文件,我加载它launchctl -w load ~/Library/LaunchAgents/local.setgetscreenres.plist以使我的 OS X 在启动时以 2880x1800(视网膜)分辨率运行,并且它运行正常。

.plist但是,我真的不知道如何控制文件的顺序~/Library/LaunchAgents,有时登录后命令运行可能需要一分钟的时间setgetscreenres。因此,我想运行此命令我像 iStat 一样登录。

我知道我需要将.plist.文件移动到/Library/LaunchAgents、,chown root:wheel然后运行sudo launchctl -w load,但那不起作用。现在我想我的.plistXML 中存在错误/缺失。

为了以 身份运行root或从 启动,我需要添加一些额外的东西吗/Library/LaunchAgents

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.setgetscreenres</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/hobbes3/Code/setgetscreenres</string>
        <string>2880</string>
        <string>1800</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>AbandonProcessGroup</key>
    <true/>
</dict>
</plist>

答案1

你甚至不需要launchctl load -w。如果你将此 plist 另存为,/Library/LaunchAgents/test.plist并且它归 root 所有,则它应该在登录时自动加载:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>test</string>
    <key>ProgramArguments</key>
    <array>
        <string>say</string>
        <string>a</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

当我尝试在用户库中保存另一个类似的 plist 时,say 命令却重叠了。

如果 LimitLoadToSessionType 设置为 LoginWindow,则在显示图形登录窗口时运行程序:

<key>LimitLoadToSessionType</key>
<string>LoginWindow</string>

如果启用了自动登录,它根本就不会运行。

答案2

存储在 ~(您的主文件夹)中的所有内容都会在您登录用户后立即启动或加载。因此,如果您想在启动时启动某些东西,您可能需要查看根库,例如 /Library/LauchAgents 是您的启动代理。

相关内容