Я скопировал текущий полный файл .plist внизу этого вопроса.

Прямо сейчас у меня есть файл .plist который я загрузил с помощью launchctl -w load ~/Library/LaunchAgents/local.setgetscreenres.plist чтобы заставить мою OS X запускаться с разрешением 2880x1800 (retina) при запуске, и это прекрасно работает.

Однако я не знаю, как контролировать порядок файлов .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>

2 ответа2

2

Вам даже не нужно launchctl load -w . Если вы сохраните этот список как /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>

Он не запускается вообще, если включен автоматический вход в систему.

1

Все, что хранится в ~ (ваших домашних папках), запускается или загружается сразу после входа в систему. Поэтому, если вы хотите запустить что-то при загрузке, вы можете взглянуть на корневую библиотеку, например /Library /LauchAgents для ваших запускаемых агентов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .