Présentation de SpinWin

SpinWin est une application macOS qui permet de faire pivoter visuellement n'importe quelle fenêtre sous macOS. Elle utilise une approche originale pour contourner les limitations de l'API publique de macOS, qui ne permet pas de faire pivoter les fenêtres d'autres applications.

Fonctionnement de SpinWin

Pour faire pivoter une fenêtre, SpinWin utilise les API d'accessibilité pour cacher la fenêtre sélectionnée hors de l'écran, tout en continuant à la rendre. Elle capture ensuite le contenu de la fenêtre à l'aide de ScreenCaptureKit, qui permet de capturer uniquement le tampon de la fenêtre sélectionnée. Les trames sont ensuite dessinées dans une fenêtre de superposition transparente et sans bord, placée à l'emplacement d'origine de la fenêtre, mais tournée à l'aide d'une transformation CALayer.

./scripts/build-app.sh

Cette approche permet de faire pivoter la fenêtre à n'importe quel angle, sans aucune limitation. La fenêtre de superposition est redimensionnée pour s'adapter au contenu tourné, de sorte que rien ne soit tronqué.

Limites et contraintes de SpinWin

SpinWin nécessite l'autorisation de capture d'écran et d'accessibilité pour fonctionner. La fenêtre de superposition est une image animée en direct, mais elle n'est pas interactive. Les clics et les frappes de clavier ne sont pas transmis à la fenêtre réelle en dessous. De plus, la fenêtre cachée peut apparaître dans Mission Control ou Exposé, car il n'y a pas d'API publique pour exclure les fenêtres d'autres applications de ces fonctionnalités.

Utilisation et personnalisation de SpinWin

Pour utiliser SpinWin, il suffit de télécharger la dernière version de l'application, qui est signée avec un ID de développeur et notariée par Apple. Il est également possible de compiler l'application soi-même à l'aide de la commande swift build && swift run SpinWin. Une fois lancée, l'application permet de choisir une rotation dans la barre d'options en bas, puis de cliquer sur la fenêtre à faire pivoter. Il est également possible de personnaliser la vitesse et la direction de rotation, ainsi que de faire pivoter librement la fenêtre en faisant glisser son handle.