Launch apps automatically on logging in to Mac

expand collapsive

Hey guys!

We have a requirement to automatically launch these apps – Notes, Slack and Safari – every time the user’s Mac starts up. I know about the ‘Login Items’ setting in System Preferences but what I’m looking for is a remote way to do this, such as pushing a configuration profile or executing a shell script.

Appreciate any help. Thanks.

All Replies

  • Participant

    Melissa

    Participant

    You can create a LaunchAgent in /Library/LaunchAgents folder which will execute whenever a user logs in to the Mac.

    A sample LaunchAgent plist file looks like this:

    <?xml version=”1.0″ encoding=”UTF-8″?>
    <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
    <plist version=”1.0″>
    <dict>
    <key>Label</key>
    <string>com.appname.plist</string>
    <key>Program</key>
    <string>/Applications/appname.app/</string>
    <key>RunAtLoad</key>
    <true/>
    </dict>
    </plist>

    You can execute a script which automates the whole process. Checkout this post which I found online:

    https://montysmacmusings.wordpress.com/2018/01/06/a-reusable-launchdemon-or-agent-creator-script/

  • Participant

    _patricia_

    Participant

    Here’s something that I put together for launching the Messages application on our employee devices on system startup:

    #!/bin/bash

    touch ‘/Library/LaunchAgents/com.Messages.plist’

    cat > /Library/LaunchAgents/com.Messages.plist <<EOF

    <?xml version=”1.0″ encoding=”UTF-8″?>
    <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
    <plist version=”1.0″>
    <dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>com.Messages.plist</string>
    <key>Program</key>
    <string>/System/Applications/Messages.app/Contents/MacOS/Messages</string>
    <key>RunAtLoad</key>
    <true/>
    </dict>
    </plist>

    Feel free to use the above script. You’d need to replace the application executable path to the required values for the key, depending on the application you need to launch. Keep alive – ‘false’ will kill off the app once quit.

  • Hey @_patricia_. Thanks for sharing the script! We’ve got a little hiccup though. It worked flawlessly for the ‘Notes’ app plist file but the Safari and Slack plist files doesn’t seem to work.

    Here’s a preview of the script I used for creating the Safari.plist:

    #!/bin/bash

    touch ‘/Library/LaunchAgents/com.Safari.plist’

    cat > /Library/LaunchAgents/com.Safari.plist <<EOF

    <?xml version=”1.0″ encoding=”UTF-8″?>

    <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>

    <plist version=”1.0″>
    <dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>com.Safari.plist</string>
    <key>Program</key>
    <string>/System/Applications/Safari.app/Contents/MacOS/Messages</string>
    <key>RunAtLoad</key>
    <true/>
    </dict>
    </plist>

    Not really sure what’s wrong but I’m guessing it has gotta do something with the application path.

  • Participant

    _patricia_

    Participant

    Yes, you might be right. You need to specify the absolute path to the application executable. Go to Finder > Applications and then right-click the app and choose ‘View Package Contents’. This will display all the supporting files of the application. You can find the executable binary at Contents > MacOS. Specify the path of this executable in the script and see if that works.