Files
onyx/Packages/OnyxKit/Sources/NetworkProvider/Localizable.xcstrings
Guido Schmit 7fcca61d70 Durchsatz je Programm und öffentliche IP
Beides läuft nur, solange jemand hinsieht. Die Prozessliste startet je Messung
einen Fremdprozess — das im Sekundentakt zu tun kostete mehr als der gesamte
übrige Monitor. Sie wird deshalb an das offene Popover gekoppelt, nicht an die
Messschleife.

Für den Durchsatz je Programm gibt es keine Bibliotheksschnittstelle: die
zugrundeliegende NetworkStatistics-API ist privat und verlangt eine
Entitlement, die Apple nicht vergibt. nettop ist Apples eigenes Werkzeug dafür,
liegt im System und läuft — nachgemessen — ohne root für die Prozesse des
eigenen Nutzers. Die Rate entsteht wie bei den Interface-Zählern aus der
Differenz zweier Messungen.

Die öffentliche IP bleibt standardmäßig aus, und der Schalter dafür steht im
Popover statt versteckt in den Einstellungen: wer einen Systemmonitor benutzt,
rechnet nicht damit, dass der nach draußen telefoniert. Ist sie an, steht der
befragte Dienst sichtbar darunter — man soll nachlesen können, wem die Adresse
bekannt wird. Höchstens alle 15 Minuten, weil sie sich selten ändert.

Frequenzen sind der dritte Wunsch und der aufwendigste. Der Weg ist verifiziert:
IOReport ist vollständig verfügbar, die Gruppe "CPU Stats" liefert unter
"CPU Core Performance States" die Kanäle MCPU00 bis MCPU14 mit den
P-Zustands-Residenzen, und die Frequenztabellen stehen als voltage-states* im
IODeviceTree. Das kommt als Nächstes.

145 Tests grün.
2026-08-10 22:27:16 +02:00

359 lines
7.7 KiB
Plaintext

{
"sourceLanguage": "en",
"strings": {
"network.name": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Netzwerk"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Network"
}
}
}
},
"network.wifi.connected": {
"comment": "Wenn der Netzwerkname mangels Ortungsberechtigung fehlt",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "WLAN verbunden"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Wi-Fi connected"
}
}
}
},
"network.offline": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Nicht verbunden"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Not connected"
}
}
}
},
"network.field.interface": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Schnittstelle"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Interface"
}
}
}
},
"network.field.ipv4": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "IP"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "IP"
}
}
}
},
"network.field.router": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Router"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Router"
}
}
}
},
"network.download": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Download"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Download"
}
}
}
},
"network.upload": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Upload"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Upload"
}
}
}
},
"network.peak.download": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Spitze ↓"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Peak ↓"
}
}
}
},
"network.peak.upload": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Spitze ↑"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Peak ↑"
}
}
}
},
"network.addresses": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Adressen"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Addresses"
}
}
}
},
"network.transferred": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Übertragen"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Transferred"
}
}
}
},
"network.total.received": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Empfangen"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Received"
}
}
}
},
"network.total.sent": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Gesendet"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Sent"
}
}
}
},
"network.field.ipv6": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "IPv6"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "IPv6"
}
}
}
},
"network.vpn.active": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Verkehr läuft durch einen Tunnel"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Traffic goes through a tunnel"
}
}
}
},
"network.perProcess.unavailable": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Durchsatz je Programm zeigt Onyx nicht: dafür gibt es ohne root keine Schnittstelle."
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Onyx doesn't show per-app throughput: there is no interface for it without root."
}
}
}
},
"network.public": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Öffentliche Adresse"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Public address"
}
}
}
},
"network.public.enable": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Öffentliche IP anzeigen"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Show public IP"
}
}
}
},
"network.public.hint": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Dafür fragt Onyx einen fremden Dienst — standardmäßig aus, weil ein Systemmonitor nicht ungefragt nach draußen telefonieren sollte."
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "This asks an external service — off by default, because a system monitor shouldn't phone home unasked."
}
}
}
},
"network.public.failed": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Nicht abrufbar"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Unavailable"
}
}
}
},
"network.processes": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Je Programm"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Per app"
}
}
}
}
},
"version": "1.0"
}