Hay una buena herramienta lsappinfo que te permite hacer cosas como monitorear el cambio de aplicaciones. Me gustaría escribir un programa que ejecute lsappinfo listen
y realiza acciones cuando la aplicación en primer plano cambia (concretamente, cambia los colores del LED en mi nuevo teclado).
¿Alguien sabe cuál es el formato de serialización que utiliza lsappinfo? Se parece a esto:
$ lsappinfo listen +becameFrontmost forever
Notification: kLSNotifyBecameFrontmost time=10/18/2017 06:58:18.843 dataRef={ "ApplicationType"="Foreground", "CFBundleIdentifier"="com.google.Chrome", "LSASN"=ASN:0x0-0x10010:, "LSFrontApplicationSeed"=3367, "LSMenuBarOwnerApplicationSeed"=3270, "LSMenuBarOwnerASN"=ASN:0x0-0x10010:, "LSOtherASN"=ASN:0x0-0x2f52f5: } affectedASN="Google Chrome" ASN:0x0-0x10010: context=0x0 sessionID=186a6 notificationID=0x7fb529d00a90
Notification: kLSNotifyBecameFrontmost time=+0.835684s dataRef={ "ApplicationType"="Foreground", "CFBundleIdentifier"="org.gnu.Emacs", "LSASN"=ASN:0x0-0x2f52f5:, "LSFrontApplicationSeed"=3368, "LSMenuBarOwnerApplicationSeed"=3271, "LSMenuBarOwnerASN"=ASN:0x0-0x2f52f5:, "LSOtherASN"=ASN:0x0-0x10010: } affectedASN="Emacs" ASN:0x0-0x2f52f5: context=0x0 sessionID=186a6 notificationID=0x7fb529d00a90
Es decir, puedo analizar esto con una regex buscando sólo el campo que quiero, pero sería mejor poder pasarlo a alguna biblioteca en lugar de usar una regex que podría fallar si los datos se ven raros. ¿Se trata de algún tipo de formato de serialización interno de MacOS del que no he oído hablar, o es algo que han inventado sólo para esta herramienta?