Architekturübersicht

Wie XDragMover aus einer Modifikator+Klick-Geste ein verschobenes oder vergrößertes Fenster macht — ausschließlich über öffentliche und leicht-private macOS-APIs.

Pipeline

XDragMover läuft als Hintergrund-App in der Menüleiste und installiert über die Quartz-Event-Services-API einen systemweiten Event-Monitor, der Modifikatortasten und Mausstatus beobachtet. Wird eine passende Geste erkannt, ermittelt die App das Zielfenster über die macOS-Accessibility-API und steuert dessen Position bzw. Größe direkt an.

Globaler Event-Monitor Quartz Event Services
Event Tap Move-/Resize-/Focus-Taps
Controller Gesten- & Ausschlusslogik
Accessibility-API AXUIElement Position / Größe
Zielfenster Fenster einer beliebigen App

Eine gemeinsame AppSettings-Schicht (auf Basis von UserDefaults) speist Modifikator, Verweildauer und Ausschlussmuster live in jedes Tap-/Controller-Paar ein — Änderungen in den Einstellungen wirken sofort, ohne Neustart. Ein StatusMenuController stellt das Menüleisten-Symbol sowie die Einstellungs-/Debug-Fenster rund um diese Kernpipeline bereit.

Die Stufen im Detail

Berechtigungen

Da systemweit Eingabeereignisse beobachtet und Fenster fremder Apps neu positioniert werden, benötigt XDragMover die Bedienungshilfen-Berechtigung (Systemeinstellungen → Datenschutz & Sicherheit → Bedienungshilfen), die beim ersten Start einmalig erteilt wird. Weitere besondere Berechtigungen, Kernel-Extensions oder Hintergrunddienste werden nicht verwendet.

← Zurück zur Startseite