Abra una aplicación periódicamente en Mac OSX

1

Quiero abrir una aplicación GUI (probablemente basada en Electrón) periódicamente en un Mac Book. El período se configurará (diario, por hora, etc.) dentro de la aplicación. ¿Cómo haría para lograr esto?

    
pregunta Prathik Rajendran M 03.03.2018 - 07:07

2 respuestas

2

Hay muchos enfoques que puedes tomar.

launchd o Third Party Launcher

Puede utilizar herramientas como launchd de macOS o herramientas de terceros como Power Manager (que escribí, así que no dude en hacerme preguntas sobre su uso):

PowerManagerincluyeunatareaqueabarca Cómo programar una aplicación para que se inicie en Mac OS X .

Prefiero launchd sobre cron

Probablemente desee evitar cron porque no funciona en la sesión gráfica del usuario actual . cron es bueno para las herramientas de línea de comandos y los scripts, pero es menos adecuado para las aplicaciones gráficas de Mac.

AppleScript y calendario

Una simple aplicación AppleScript combinada con un archivo abierto de evento de calendario como alarma puede ser suficiente. El siguiente fragmento de AppleScript abrirá una aplicación específica y la llevará al frente:

tell application "My Electron Application" to activate

Estas preguntas relacionadas entran en detalles:

respondido por el Graham Miln 03.03.2018 - 10:51
0

archivo Launchd .plist

Puede crear un archivo plist que describa el trabajo a realizar por launchd a intervalos que puede definir en el plist. Hay una terminología que es más fácil de aprender con solo leer otro archivo plist, como el que he escrito a continuación.

Una vez que hayas hecho eso, puedes mover el archivo plist a ~/Library/LaunchAgents , que ejecutará el trabajo con tu nombre de usuario.

Finalmente, obtenga el daemon launchd para load su archivo de configuración, que iniciará el trabajo:

launchctl load chri.sk.launchd.plist

A partir de ese momento, el trabajo especificado en el archivo plist se llevará a cabo en los intervalos definidos, y continuará ejecutándose para siempre, o hasta que unload it:

launchctl unload chri.sk.launchd.plist

Se iniciará automáticamente en cada reinicio del sistema, y se reiniciará si alguna vez se cancela.

    <?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>chri.sk.launchd</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/open</string>
            <string>-a</string>
            <string>TextEdit</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>Nice</key>
        <integer>1</integer>
        <key>StartInterval</key>
        <integer>60</integer>
        <key>StandardErrorPath</key>
        <string>/Users/CK/Documents/launchd.err.txt</string>
        <key>StandardOutPath</key>
        <string>/dev/null</string>
    </dict>
    </plist>

Esto abre TextEdit cada 60 segundos. Aquí es una guía bastante útil para definir intervalos.

Cualquier error se escribe en la ruta del archivo especificada por StandardErrorPath .

Haz que el nombre del archivo y el valor label sean iguales. La convención de nomenclatura de Apple recomienda usar un identificador de nombre de host inverso, pero en ausencia de un nombre de dominio que le pertenezca, simplemente podría usar algo como surname.firstname.jobtitle .

La página de manual launchd.plist define todas las claves de la lista de propiedades y explica qué hacen cada una. Vaya a Terminal y escriba man launchd.plist .

AppleScript

    property hour : 3600
    property day : 86400
    property RunEvery : day
    property AppName : "An Application"

    on run
        idle
    end run

    on idle
        tell application named AppName to activate
        return RunEvery
    end idle

    on quit
        continue quit
    end quit

Si guarda este AppleScript como una aplicación permanecer abierto y luego lo ejecuta, permanecerá abierto y ejecutará los comandos idle todos los días. Actualmente, para evitar que esta secuencia de comandos continúe, deberías terminarlo desde el Dock o Monitor de actividad .

    
respondido por el CJK 03.03.2018 - 11:05

Lea otras preguntas en las etiquetas