Ma Magic Mouse 2 est morte aujourd'hui et j'ai pensé que ce serait cool si je pouvais utiliser le verrouillage de l'écran comme un déclencheur pour envoyer une notification push à mon iPhone pour me rappeler de brancher ma souris pour la recharger.
Je me suis un peu renseigné. Il y a une application appelée EventScripts qui a un déclencheur d'écran de veille. J'ai essayé la démo, mais c'est trop lent.
J'ai également appris que je peux envoyer des notifications push via script de mon Mac à mon iPhone en utilisant Prowl/Growl.
Et j'ai trouvé que l'un des journaux du système ( /var/log/DiagnosticMessages/*
) contient activeScreenSaver
des événements qui apparaissent immédiatement lorsque je regarde la console. Ce serait génial si je pouvais envoyer une notification push de prowl à chaque fois que activeScreenSaver
apparaît dans ce journal, je sais comment envoyer le push, mais tous les fichiers dans /var/log/DiagnosticMessages
sont binaires. Je peux les récupérer pour activeScreenSaver
et voir qu'il y a des correspondances, mais je n'ai pas de fichier en ASCII que je puisse appliquer tail -f
et de le transmettre à un script qui surveille les activeScreenSaver
les occurrences et envoie le push... Est-ce que quelqu'un sait comment je pourrais surveiller ces fichiers pour activeScreenSaver
occurrences ? J'ai déjà écrit des analyseurs de journaux similaires pour d'autres journaux en texte brut, mais je ne sais pas par où commencer lorsque j'ai affaire à des fichiers binaires qui changent de temps en temps.
J'ai essayé d'utiliser une balise iBeacon pour les rappels, mais le temps que je reçoive la notification, je suis trop paresseux pour retourner à mon bureau et brancher la souris. J'aimerais donc recevoir la notification push juste après avoir verrouillé l'écran... au moins jusqu'à ce que cela devienne une habitude.
UPDATE :
En cherchant sur Google, j'ai découvert que je pouvais le faire :
cat 2019.05.17.asl | strings - -o | grep activeScreenSaver
290676 (com.apple.ScreenSaver.activeScreenSaver
452746 (com.apple.ScreenSaver.activeScreenSaver
481785 (com.apple.ScreenSaver.activeScreenSaver
Note, j'ai utilisé -o
pour montrer le numéro de ligne correspondant afin que je puisse dire quels événements sont les bons.
Cependant, cela n'incluait pas tous mes événements de test de l'écran de verrouillage aujourd'hui. J'ai cherché dans la sortie des chaînes brutes et j'ai découvert que si je faisais ceci à la place, j'obtenais tous les événements d'aujourd'hui (lorsque je les compare à ce que je vois dans l'application Console en recherchant activeScreenSaver) :
cat 2019.05.17.asl | strings - -o | grep "QuartzCore,ScreenSaver"
290278 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
443512 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
481387 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
482889 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
486926 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
488824 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
501148 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
504036 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
Je pensais que j'étais prêt à partir, mais quand j'ai essayé tail -f
au lieu de cat
la sortie a été tronquée :
tail -c +1 -f 2019.05.17.asl | strings - -o | grep "QuartzCore,ScreenSaver"
290278 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
443512 nAppKit,GLEngine,Flurry,QuartzCore,ScreenSaver,libdispatch.dylib,CoreFoundation,HIToolbox,Direct,libdyld.dylib
Je ne suis pas sûr de savoir pourquoi tail -f
s'arrête au milieu du fichier... De plus, il faudrait encore que je trouve comment mettre à jour la queue quand le fichier change...
tail -F
me permet d'aller plus loin - jusqu'à la fin du fichier, mais les nouvelles entrées ajoutées au fichier ne sortent pas.
De plus, j'ai essayé quelques versions homebrew de tail qui, je l'espérais, permettraient de surveiller plusieurs fichiers, mais aucune d'entre elles n'était capable de gérer les fichiers binaires...
Il est intéressant de noter que si je ne pipe pas la sortie de l'application strings
à quoi que ce soit, je vois des messages en direct qui sortent continuellement. Mais si je fais un pipe vers grep d'un on-liner perl, le flux meurt à mi-chemin.