3 votos

applicationDidFinishLaunching - ¿hay alguna manera de conseguir esto usando script/command?

¿Hay alguna manera de detectar cuando una aplicación ha terminado de lanzarse después de usar open <path_to_app> ¿en una cáscara? El aviso después de emitir el comando es inmediato, pero para las aplicaciones que tardan en lanzarse por completo, los eventos de tiempo de espera hasta que se lanzan por completo

Utilizando ps aux | grep -i 'path to app' | grep -v grep | wc -l devuelve un ID de proceso casi inmediatamente (en el momento de lanzar la aplicación), así que no sirve.

Cualquier ayuda, muy apreciada.

2voto

Viper Puntos 1

Resuelto mediante la supervisión de la columna STATE para el paquete de aplicaciones utilizando TOP. Esperar a que STATE cambie a 'sleeping' durante un par de segundos hizo el truco (para mí al menos).

0voto

hjdm Puntos 18

Puedes crear una herramienta de línea de comandos utilizando Swift. Aquí está el código de ejemplo:

import AppKit

let timeout: TimeInterval = 5.0

let appToLaunch = ProcessInfo.processInfo.arguments.dropFirst().joined(separator: " ")
let runningApps = NSWorkspace.shared.runningApplications.map { $0.localizedName }

if runningApps.contains(appToLaunch) {
    exit(EXIT_SUCCESS)
}

NSWorkspace.shared.notificationCenter.addObserver(forName: NSWorkspace.didLaunchApplicationNotification,
                                                  object: nil,
                                                  queue: nil) { (notification) in
    guard let appName = notification.userInfo?["NSApplicationName"] as? String
        else { return }
    if appName == appToLaunch {
        exit(EXIT_SUCCESS)
    }
}

let exitTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { _ in
    exit(EXIT_FAILURE)
}

RunLoop.current.run()

Pasa el nombre de la aplicación como argumento. Por ejemplo: ./listener Mini Calendar

Comprueba si la aplicación ya se está ejecutando. También puede establecer diferentes timeout si quieres.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X