Jak analizować dane wyjściowe lsappinfo?

1

Jest ładne narzędzie lsappinfo, które pozwala robić takie rzeczy, jak monitorowanie przełączania aplikacji. Chciałbym napisać program, który działa lsappinfo listen i podejmuje działania, gdy zmienia się aplikacja na pierwszym planie (w szczególności zmienia kolory LED na mojej nowej klawiaturze).

Czy ktoś wie, jaki jest format serializacji używany przez lsappinfo? To wygląda tak:

$ 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

Mam na myśli, że mogę to przeanalizować za pomocą wyrażenia regularnego szukającego tylko pola, które chcę, ale byłoby lepiej, gdybyśmy mogli przekazać je do jakiejś biblioteki, zamiast używać hackiego regexa, który mógłby zawieść, gdyby dane wyglądały dziwnie. Czy jest to jakiś standardowy format serializacji wewnętrznych systemów MacOS, o którym nie słyszałem, czy jest to coś, co stworzyli tylko dla tego narzędzia?

David Glasser
źródło
Zamknij głosujących: to jest nie pytanie dotyczące rozwoju oprogramowania. Pytanie to dotyczy formatu wyjściowego narzędzia wiersza poleceń. OP odwołuje się tylko do tworzenia oprogramowania czemu on chce tej informacji.
Allan
Wygląda jak quasi-JSON-esque, ale bardziej niż prawdopodobne, że będziesz musiał szukać danych za pomocą jakiegoś oświadczenia REGEX. To naprawdę fajne narzędzie, którego nie byłem świadomy, a teraz patrzę na nie, aby używać go z ControllerMate. Nie mam pojęcia, jak jeszcze ... ale pomyślałem o tym ....
Allan
Tak, miałem nadzieję, że odpowiedź brzmi: „Och, to standardowy format serializacji biblioteki macOS X, nie jest udokumentowany, ponieważ jest to oczywiste dla każdego twórcy kakao”
David Glasser

Odpowiedzi: