Technischer Hintergrund
Wie PausePace Anrufe ohne Mikrofon erkennt
PausePace für den Mac hält eine Pause zurück, bis ein Anruf, ein Video oder eine Präsentation vorbei ist. Dafür fragt die App weder nach Zugriff auf Mikrofon und Kamera noch auf Bildschirmaufnahme oder Bedienungshilfen. Diese Seite zeigt, welche macOS-Signale sie liest, nach welchen Regeln sie sie auswertet und wo diese Regeln an Grenzen stoßen.
Veröffentlicht:
Signale
- Mikrofon oder Kamera aktiv (ja/nein)
- Sekunden seit der letzten Eingabe
- App im Vordergrund, Vollbild, Display bleibt wach
- Gesperrt oder im Ruhezustand
Regeln
- Warten, solange ein Anruf, Video oder eine Präsentation läuft
- Auf eine Tipppause, einen App-Wechsel oder das Ende einer Wartephase warten
- Nie länger verschieben als erlaubt
Pause
- Eine kurze Vorwarnung
- Die Pausenkarte auf deinem Mac
- Dieselbe Pause auf iPhone und Apple Watch, wenn gekoppelt
Kurz gesagt
- PausePace liest einige Ja/Nein- und Zeitsignale, die macOS jeder App bereitstellt – etwa, ob ein Mikrofon oder eine Kamera in Benutzung ist und wie lange dein letzter Tastendruck her ist.
- Die App liest nie, was du tippst oder was auf dem Bildschirm ist, keine Fenstertitel, keinen Ton und kein Bild.
- Die Signale werden einmal pro Sekunde auf dem Mac geprüft und verlassen ihn nie.
- Ein Anruf kann eine Pause verzögern, aber nicht streichen. Standardmäßig dürfen Wartephasen eine fällige Pause um insgesamt höchstens 30 Minuten verschieben.
Welche Signale die App liest
Jedes Signal stammt aus einer standardmäßigen macOS-API oder Systemmitteilung, die in der App-Sandbox ohne Berechtigungsabfrage funktioniert. Jedes wird von einer eigenen kleinen Komponente gelesen, und keine davon kann den Timer direkt verändern.
- Mikrofon in Benutzung
- API:
kAudioDevicePropertyDeviceIsRunningSomewhere(Core Audio) - Wird bei jedem Audiogerät mit Eingangsstream abgefragt. Die Antwort lautet ja oder nein. Reine Ausgabegeräte wie Lautsprecher werden übersprungen, Musikhören zählt also nicht.
- Kamera in Benutzung
- API:
kCMIODevicePropertyDeviceIsRunningSomewhere(Core Media I/O) - Ja oder nein für jede Kamera. Es werden keine Bilder gelesen.
- Zeit seit der letzten Eingabe
- API:
CGEventSource.secondsSinceLastEventType - Sekunden seit dem letzten Tastendruck, Klick und der letzten Mausbewegung. Welche Taste oder wo, verrät dieser Aufruf nicht.
- App im Vordergrund
- API:
NSWorkspace.frontmostApplication - Die Bundle-ID der App und ihre App-Store-Kategorie aus der Info.plist – damit erkennt PausePace App-Wechsel und Spiele. Keine Fenstertitel.
- Anruf-App geöffnet
- API:
NSWorkspace.runningApplications - Ob eine bekannte Anruf-App (Zoom, Teams, FaceTime, Slack, Webex und weitere) oder ein Webbrowser geöffnet ist. Nur Bundle-IDs.
- Vollbild
- API:
CGWindowListCopyWindowInfoundCGDisplayBounds - Vergleicht Position und Größe der Fenster der App im Vordergrund mit jedem Display. Namen und Inhalte der Fenster werden nicht gelesen.
- Display bleibt wach
- API:
IOPMCopyAssertionsByProcess - Welche Prozesse macOS bitten, das Display eingeschaltet zu lassen (
PreventUserIdleDisplaySleep,NoDisplaySleepAssertion), wie es Videoplayer und Diashows tun. - Gesperrt, Ruhezustand oder Bildschirmschoner
- API:
com.apple.screenIsLocked, die Mitteilungen des Bildschirmschoners und die Mitteilungen vonNSWorkspacezu Ruhezustand und Aufwachen - Sagt dem Timer, dass du nicht am Mac bist. Auch das Ausschalten des Displays zählt dazu.
Von Signalen zum Anruf
Rohe Signale sind unzuverlässig. Diktieren schaltet das Mikrofon ein, eine Videovorschau hält das Display kurz wach. Deshalb muss ein Signal eine Weile anhalten, bevor es als Wartephase zählt – so nennt PausePace den Zustand „jetzt nicht stören“:
- Videoanruf: Eine Kamera läuft seit 10 Sekunden.
- Audioanruf: Ein Mikrofon läuft seit 10 Sekunden, und die Kamera ist an oder eine Anruf-App bzw. ein Webbrowser ist geöffnet. Browser zählen, weil Google Meet und Teams im Web darin laufen.
- Video oder Diashow: Die App im Vordergrund oder einer ihrer Hilfsprozesse hält das Display seit 15 Sekunden wach, und sie füllt entweder den Bildschirm aus, oder du hast seit 30 Sekunden nicht getippt oder geklickt. Wachhalte-Tools wie caffeinate und Amphetamine werden ignoriert.
- Präsentation oder Spiel: Die App im Vordergrund füllt ein ganzes Display aus und ist Keynote, PowerPoint, WPS Office, QuickTime Player oder eine App aus der Kategorie „Spiele“. Ein Editor oder Browser im Vollbild ist keine Wartephase, denn viele arbeiten den ganzen Tag im Vollbild.
Ein stummgeschaltetes Mikrofon gilt weiterhin als in Benutzung – genau das, was du während eines Anrufs willst. Jede Art von Wartephase (Anrufe, Videos, Präsentationen) lässt sich in den Einstellungen abschalten.
Den richtigen Moment wählen
Ist deine Arbeitszeit um (standardmäßig 20 Minuten), ist die Pause fällig – PausePace zeigt sie aber nicht sofort an, sondern wartet auf einen natürlichen Moment:
- Eine Wartephase ist gerade zu Ende, zum Beispiel weil du aufgelegt hast.
- Du hast in den letzten 3 Sekunden die App gewechselt.
- Du hast 8 Sekunden lang weder getippt noch geklickt.
Dann erscheint vor dem Start der Pause eine Vorwarnung (standardmäßig 20 Sekunden) mit dem Grund, etwa „Guter Moment – ein Anruf ist gerade vorbei“. Kommt innerhalb von 5 Minuten kein natürlicher Moment – Zeit in einer Wartephase nicht mitgerechnet –, erscheint die Vorwarnung trotzdem.
Wenn ein Anruf länger dauert
Wartephasen können eine fällige Pause um insgesamt 30 Minuten verschieben; das lässt sich in den Einstellungen ändern. Ist diese Zeit aufgebraucht, erscheint die Vorwarnung auch dann, wenn der Anruf noch läuft, und zählt vollständig herunter, damit du trotzdem vorgewarnt bist. Bei „Sanft“ und „Ausgewogen“ kannst du sie verschieben, bei „Bestimmt“ nicht.
Die Arbeitszeit läuft weiter, während eine Pause wartet. Ein Meeting kann eine Pause verzögern, aber nicht verschwinden lassen.
Wenn du weggehst
Ein gesperrter Bildschirm, der Ruhezustand oder der Bildschirmschoner bedeuten sofort: Du bist weg. Ansonsten nimmt PausePace nach 45 Sekunden ohne Eingabe an, dass du vielleicht liest, und zählt die Arbeitszeit weiter. Nach 5 Minuten ohne Eingabe giltst du als abwesend. Abwesenheit zählt nicht zur Arbeitszeit, und 5 Minuten Abwesenheit gelten als Pause. Während einer Wartephase macht dich fehlende Eingabe allein nie abwesend – wer im Anruf still sitzt, macht keine Pause.
Während einer Pause halten 3 Sekunden durchgehender Eingabe den Countdown an, und nach 5 ruhigen Sekunden läuft er weiter. So zählt eine Pause nur, solange sie wirklich eine ist.
Was die App nie liest und wonach sie fragt
PausePace liest nie Tastatureingaben, Bildschirminhalte, Fenstertitel, Ton oder Bild. Die App fragt nie nach Zugriff auf Mikrofon, Kamera, Bildschirmaufnahme oder Bedienungshilfen, und ihr fehlen die Sandbox-Berechtigungen für Audio- und Kameraeingang – macOS würde ihr diesen Zugriff also gar nicht gewähren. Du kannst das prüfen: Öffne nach der Installation „Systemeinstellungen“ › „Datenschutz & Sicherheit“. PausePace taucht in diesen Listen nicht auf.
Es können drei Systemabfragen erscheinen, jede an eine Funktion gebunden, die du selbst wählst:
- Mitteilungen: optional, für Pausenhinweise.
- Kalender: nur wenn du die Kalender-Vorwarnung (Pro) einschaltest.
- Lokales Netzwerk: nur wenn du ein iPhone koppelst. Bis dahin lauscht der Mac nicht im Netzwerk.
Die App hat kein Konto und keine Analysetools. Die Signale werden im Arbeitsspeicher verwendet und wieder verworfen. Auf dem Datenträger bleiben nur der Timer-Status und dein Pausenverlauf, den du in der App begrenzen oder abschalten kannst.
Kalender-Vorwarnung (Pro)
Würde deine nächste Pause in einen Termin fallen, in dem du als beschäftigt markiert bist und der innerhalb von 10 Minuten beginnt, bietet PausePace die Pause kurz davor an – sofern mindestens die Hälfte deiner Arbeitszeit vorbei ist. Über EventKit liest die App Beginn und Ende jedes Termins, deinen Verfügbarkeitsstatus und ob du ihn abgelehnt hast. Titel, Notizen, Orte und andere Teilnehmende liest sie nie, und sie speichert nichts auf dem Datenträger. Ganztägige, abgesagte, als frei markierte und abgelehnte Termine werden ignoriert.
Eine ehrliche Einschränkung: macOS gibt einer App entweder vollen Zugriff auf deine Kalender oder nur die Erlaubnis, Termine hinzuzufügen. Um Terminzeiten zu lesen, braucht es vollen Zugriff, deshalb fragt die Systemabfrage danach. PausePace liest trotzdem nur die oben genannten Zeiten und den Verfügbarkeitsstatus und speichert nichts davon. Schaltest du die Funktion aus, endet das Lesen, und den Zugriff kannst du unter „Systemeinstellungen“ › „Datenschutz & Sicherheit“ › „Kalender“ wieder entziehen.
Ein iPhone koppeln
Die iPhone-App kann deinen Mac spiegeln, und die Apple Watch erhält den Pausenstatus vom iPhone. Mac und iPhone kommunizieren direkt über dein lokales Netzwerk; ein Server von PausePace ist nicht beteiligt.
- Der Mac macht sich über Bonjour (
_pausepace._tcp) bekannt und zeigt einen 6-stelligen Code. Das Kopplungsfenster schließt sich nach 2 Minuten oder 5 falschen Versuchen. - Aus dem Code wird ein Pre-Shared Key (HKDF-SHA256) für eine TLS-1.2-PSK-Verbindung abgeleitet; ein falscher Code lässt den Handshake also scheitern.
- Innerhalb dieser Verbindung führen beide Geräte einen ephemeren X25519-Schlüsselaustausch durch. Der Mac sendet ein zufälliges 256-Bit-Geheimnis, versiegelt mit ChaCha20-Poly1305 unter einem Schlüssel, der aus dem Austausch und dem Code abgeleitet ist. Wer die Kopplung mitschneidet und den Code später errät, kann es trotzdem nicht wiederherstellen.
- Das Geheimnis liegt auf jedem Gerät im Schlüsselbund, beschränkt auf dieses Gerät, und wird deshalb nie über iCloud synchronisiert. Jede spätere Verbindung nutzt TLS mit einem daraus abgeleiteten Schlüssel.
Was der Mac sendet, ist der Pausenstatus (zum Beispiel „Warten, bis der Anruf endet“) und die Tagessummen. Die Signale auf dieser Seite werden nicht gesendet.
Grenzen
- Bildschirmfreigabe allein wird nicht erkannt. macOS bietet dafür kein öffentliches Signal ohne Berechtigung. Teilst du deinen Bildschirm bei ausgeschaltetem Mikrofon und ausgeschalteter Kamera, merkt PausePace das nicht. Private APIs nutzt die App dafür nicht.
- Anrufe werden abgeleitet. Ein Anruf, der Mikrofon oder Kamera nicht auf die übliche Weise nutzt, kann unbemerkt bleiben. Umgekehrt kann ein Mikrofon, das für etwas anderes wie Diktieren genutzt wird, wie ein Anruf aussehen, wenn gleichzeitig ein Browser oder eine Anruf-App geöffnet ist.
- Manche virtuellen Kameras melden ihren Status uneinheitlich.
- Vollbild ist eine Geometrieprüfung. Ein maximiertes Fenster, das nicht ganz den Bildschirm ausfüllt, zählt nicht, und ein Dokument im Vollbild sieht genauso aus wie ein Video im Vollbild.
- Die Videoerkennung hängt vom Player ab, der das Display wach halten muss. Die meisten tun das, manche nicht.
- Lange Anrufe bekommen irgendwann eine Pause – so gewollt, sobald die Höchstdauer fürs Verschieben aufgebraucht ist.
- Smartes Timing läuft auf dem Mac. Auf einem iPhone ohne Mac ist PausePace ein einfacher Pausentimer und erkennt keine Anrufe.
Fragen
Hört PausePace bei meinen Anrufen mit?
Nein. Die App fragt Core Audio nur, ob ein Eingabegerät läuft – die Antwort ist ja oder nein. Sie hat keine Mikrofonberechtigung und öffnet nie ein Eingabegerät, kann also nichts hören.
Funktioniert das mit Zoom, Teams und Google Meet?
Ja, über die Signale von Kamera und Mikrofon. Zoom, Teams, FaceTime, Slack, Webex, Discord und einige weitere Apps werden an ihrer Bundle-ID erkannt. Meet und andere Anrufe im Browser sind abgedeckt, weil Browser ebenfalls zählen.
Unterbricht PausePace jemals einen Anruf?
Nur wenn Wartephasen eine Pause um die Höchstdauer verschoben haben, standardmäßig 30 Minuten. Selbst dann kommt zuerst eine Vorwarnung, und bei „Sanft“ oder „Ausgewogen“ kannst du verschieben.
Verlässt irgendetwas meinen Mac?
Nur wenn du ein iPhone koppelst. Dann sendet der Mac den Pausenstatus und die Tagessummen verschlüsselt über dein lokales Netzwerk an das iPhone. Die hier beschriebenen Signale bleiben auf dem Mac.