我将当前的完整.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
,但那不起作用。现在我想我的.plist
XML 中存在错误/缺失。
为了以 身份运行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 是您的启动代理。