diff --git a/Packages/OnyxKit/Sources/MetricsProvider/Calculations.swift b/Packages/OnyxKit/Sources/MetricsProvider/Calculations.swift index 9ce27de..a4db16b 100644 --- a/Packages/OnyxKit/Sources/MetricsProvider/Calculations.swift +++ b/Packages/OnyxKit/Sources/MetricsProvider/Calculations.swift @@ -105,6 +105,16 @@ public enum MetricFormat { "\(Int((min(max(fraction, 0), 1) * 100).rounded())) %" } + /// Ohne Leerzeichen — nur für die Menüleiste. + /// + /// Dort ist die Breite fest für „100 %" reserviert, damit nichts springt, + /// wenn der Wert eine Stelle mehr bekommt. Das Leerzeichen kostet in dieser + /// Reservierung drei Punkte je Element, und in der Menüleiste ist Platz + /// das knappste Gut. Im Panel und in den Popovern bleibt es stehen. + public static func percentCompact(_ fraction: Double) -> String { + "\(Int((min(max(fraction, 0), 1) * 100).rounded()))%" + } + public static func temperature(_ celsius: Double) -> String { "\(Int(celsius.rounded()))°" } diff --git a/Packages/OnyxKit/Sources/MetricsProvider/MetricMenuBarModule.swift b/Packages/OnyxKit/Sources/MetricsProvider/MetricMenuBarModule.swift index 8778270..821b212 100644 --- a/Packages/OnyxKit/Sources/MetricsProvider/MetricMenuBarModule.swift +++ b/Packages/OnyxKit/Sources/MetricsProvider/MetricMenuBarModule.swift @@ -133,7 +133,7 @@ final class MetricStatusView: NSView, WidthReporting { private var reference: String { switch (metric, mode) { case (.temperature, _), (_, .temperature): "100°" - default: "100 %" + default: "100%" } } @@ -174,7 +174,10 @@ final class MetricStatusView: NSView, WidthReporting { if metric == .temperature, let celsius = sensorCelsius { return MetricFormat.temperature(celsius) } - return MetricSummary.value(metric, snapshot, mode: mode) + // In der Menüleiste ohne Leerzeichen vor dem Prozentzeichen — siehe + // `MetricFormat.percentCompact`. + let value = MetricSummary.value(metric, snapshot, mode: mode) + return value.replacingOccurrences(of: " %", with: "%") }