Como faço para iniciar este arquivo .plist na inicialização * antes de efetuar login?

0

Eu copiei o arquivo .plist completo no final desta questão.

Agora eu tenho um arquivo .plist que eu carreguei com launchctl -w load ~/Library/LaunchAgents/local.setgetscreenres.plist para fazer meu OS X rodar na resolução de 2880x1800 (retina) na inicialização e isso funciona bem.

No entanto, eu realmente não sei como controlar a ordem dos arquivos .plist em ~/Library/LaunchAgents e às vezes levaria até um minuto antes do comando setgetscreenres ser executado após o login. Portanto, eu gostaria de execute este comando antes fazer login, como o iStat faz.

Entendo que preciso mover o arquivo .plist. para /Library/LaunchAgents , chown root:wheel e executar sudo launchctl -w load , mas isso não funcionou. Agora estou pensando que há algo errado / ausente no meu .plist XML.

Existe algo que eu preciso adicionar extra para executar como root ou iniciar a partir de /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>
    
por hobbes3 20.04.2013 / 08:30

2 respostas

2

Você nem precisa de launchctl load -w . Se você salvar este plist como /Library/LaunchAgents/test.plist e pertencer a root, ele deverá ser carregado automaticamente no login:

<?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>

Quando tentei salvar outro plist como esse na biblioteca do usuário, os comandos say se sobrepuseram.

Se LimitLoadToSessionType estiver definido como LoginWindow, o programa será executado quando a janela de login gráfica for mostrada:

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

No entanto, ele não é executado se o login automático estiver ativado.

    
por 27.04.2013 / 09:06
1

Tudo o que é armazenado em ~ (suas pastas iniciais) é iniciado ou carregado assim que você faz login no usuário. Então, se você quiser iniciar algo no boot, você pode querer dar uma olhada na biblioteca raiz, assim / Library / LauchAgents para o seu launchagents por exemplo.

    
por 26.04.2013 / 23:15