
Blog · · Mis à jour · Par Matt Senter
Pluie derrière vos fenêtres, aucun enregistrement d'écran nécessaire
Weatherling n'a pas besoin d'autorisation d'enregistrement d'écran, ni de toute autre autorisation, pour mettre de la pluie derrière vos fenêtres. Il ne voit jamais ce qu'il y a sur votre écran. Il fonctionne à partir du contour de chaque fenêtre, que macOS partage avec chaque application, et s'exécute dans l'App Sandbox d'Apple sans accès au réseau.
Cela peut paraître trop beau pour être vrai. Lorsque vous regardez une goutte atterrir sur une barre de titre, courir sur le côté et vous glisser derrière la fenêtre devant, il est raisonnable de se demander comment l'application sait ce qu'il y a sur votre écran. La réponse courte est que non. Il sait où se trouvent les choses, et cela s’avère être tout ce dont la pluie a besoin.
Géométrie de la fenêtre, pas contenu de la fenêtre
Chaque application Mac peut demander à macOS une liste des fenêtres actuellement à l'écran. Weatherling le fait via CGWindowListCopyWindowInfo, le même appel public à partir duquel les gestionnaires de fenêtres et les outils de capture d'écran démarrent. Pour chaque fenêtre, il lit cinq choses et rien d'autre :
- Limites. Où se trouve la fenêtre et quelle est sa taille.
- Calque. Qu'il s'agisse d'une fenêtre ordinaire, d'un menu ou d'une partie de l'interface utilisateur du système.
- Alpha. Qu'il soit réellement visible ou entièrement transparent.
- Numéro de fenêtre. Un identifiant, permettant de suivre une fenêtre lors de son déplacement.
- ID du processus propriétaire. Un numéro, utilisé uniquement pour distinguer les propres fenêtres de Weatherling des vôtres.
La liste revient dans l'ordre d'avant en arrière, ce qui constitue l'autre moitié du truc. Une goutte qui dépasse le bord d'une fenêtre avant et atterrit sur une fenêtre plus en arrière est simplement une goutte comparée au contour suivant de la liste. C’est ainsi que la pluie peut tomber devant une fenêtre et derrière une autre sans que l’application n’en voie un seul pixel.
La même liste propose également le titre d’une fenêtre, le nom de l’application qui la possède et si elle est partagée. Weatherling ne lit jamais ces champs. La pluie ne leur sert à rien, et les laisser seuls explique en partie pourquoi aucune autorisation n’est impliquée.
Pourquoi les titres de fenêtres nécessiteraient un enregistrement d'écran
Depuis macOS Catalina, le titre de la fenêtre d’une autre application compte comme contenu d’écran. Un titre peut contenir le sujet d'un e-mail, le nom d'un document ou la page que vous lisez, de sorte que macOS ne transmet les titres qu'aux applications que vous avez autorisées sous Enregistrement d'écran. Sans cette autorisation, le champ titre revient simplement vide.
Cette ligne constitue toute la contrainte de conception. Une application qui voudrait se comporter différemment pour votre courrier que pour votre éditeur de code aurait besoin de titres ou de captures d'écran, et devrait le demander. Weatherling ne se soucie pas de ce qu'est une fenêtre, seulement de son emplacement, elle reste donc du côté de la ligne qui ne nécessite aucune invite. Il n’y a pas non plus de demande d’accessibilité, car rien n’est lu depuis les autres applications et rien ne les contrôle. Pas de surveillance du clavier, pas d'accès aux entrées, pas d'automatisation.
En mode bac à sable, sans rien ajouté
Les applications du Mac App Store s'exécutent dans l'App Sandbox d'Apple et déclarent tout ce qu'elles souhaitent via des droits : accès au réseau, caméra, fichiers en dehors de leur propre conteneur, etc. Weatherling déclare com.apple.security.app-sandbox et com.apple.security.files.user-selected.read-write. Ce dernier permet d'enregistrer une carte de score dans un fichier que vous choisissez dans la boîte de dialogue Enregistrer. (La signature de code d'Apple tamponne également chaque application de l'App Store avec ses identifiants d'application et d'équipe, ce qui n'accorde rien.)
L’absence compte autant que la présence. Une application en bac à sable sans le droit du client réseau ne peut pas ouvrir une connexion sortante, donc le fait que Weatherling n'effectue aucune requête réseau est appliqué par macOS, et pas seulement promis ici. Il n'y a pas de compte, pas d'analyse et pas de service de rapport d'erreur. Les paramètres tels que l’intensité de la pluie et le vent sont stockés dans le propre stockage sandbox de l’application sur votre Mac.
Le son de la pluie fonctionne de la même manière. L'enregistrement est expédié dans l'application et lorsque vous êtes en communication, la pluie disparaît. Weatherling remarque l'appel en vérifiant si une application utilise le microphone, un oui ou un non que macOS signale à propos de l'appareil. Il n'ouvre jamais le microphone, ne capture jamais l'audio et ne demande jamais l'accès au microphone.
Vérifiez-le vous-même
Vous n’êtes pas obligé de prendre tout cela en confiance. Trois vérifications prennent environ une minute :
- Ouvrez Réglages système, Confidentialité et sécurité, puis Enregistrement d'écran (appelé Enregistrement audio de l'écran et du système sur les versions plus récentes de macOS). Weatherling n'est pas dans la liste, car il ne l'a jamais demandé.
- Vérifiez Accessibilité et Microphone dans la même section. Ce n’est pas non plus.
- Dans Terminal, exécutez
codesign -d --entitlements - /Applications/Weatherling.app. Outre les identifiants d'application et d'équipe que la signature d'Apple ajoute à chaque application de l'App Store, les droits sont App Sandbox et l'accès aux fichiers sélectionnés par l'utilisateur pour enregistrer les cartes de score. Il n'y a aucun droit au réseau.
Si une version future en avait besoin de plus, vous verriez d'abord une invite. macOS ne permet pas à une application d'acquérir ces éléments en silence.
Le coût du suivi des fenêtres
La lecture de la liste des fenêtres est bon marché. Weatherling le demande environ dix fois par seconde lorsque vos fenêtres sont immobiles, et brièvement plus rapidement lorsque quelque chose bouge, de sorte que l'eau suit une fenêtre que vous faites glisser au lieu de rester derrière elle. Rien n'est stocké entre les contrôles, à l'exception des contours eux-mêmes, et ils disparaissent dès la fermeture de la fenêtre.
Une décoration de bureau ne devrait pas s’accompagner d’une négociation en matière de confidentialité. Allumez la pluie, réglez-la selon votre humeur et reprenez ce que vous faisiez. Weatherling n’a pas besoin de savoir ce que c’est.
Vous pouvez essayer le comportement sans rien installer sur le page d'accueil, où les fenêtres déplaçables sont une version navigateur de la même idée. Les détails de ce que l'application fait et ne stocke pas se trouvent dans le politique de confidentialité, et pourquoi tout cela vaut la peine d'être fait est dans Pourquoi la pluie sur votre bureau peut être apaisante.