C'è un simpatico strumento lsappinfo che ti permette di fare cose come il monitoraggio per il cambio di app. Mi piacerebbe scrivere un programma che esegue lsappinfo listen
e intraprende azioni quando l'app in primo piano cambia (in particolare, cambia i colori dei LED sulla mia nuova tastiera).
Qualcuno sa quale sia il formato di serializzazione che usa lsappinfo? Sembra così:
$ 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
Voglio dire, posso analizzare questo con una regex che cerca solo il campo che voglio, ma sarebbe più bello essere in grado di passarlo a qualche libreria piuttosto che usare una regex hacky che potrebbe fallire se i dati sembrano strani . Si tratta di una sorta di formato di serializzazione standard per macOS standard di cui non ho sentito parlare o è qualcosa che hanno inventato solo per questo strumento?