diff --git a/Modules/CPU/main.swift b/Modules/CPU/main.swift index 571d3807..161ac057 100644 --- a/Modules/CPU/main.swift +++ b/Modules/CPU/main.swift @@ -31,16 +31,11 @@ public struct CPU_Load: Codable, RemoteType { } } -public struct CPU_Frequency: Codable, RemoteType { - var value: Double = 0 +public struct CPU_Frequency: Codable { + var value: Double? = nil var eCore: Double? = nil var pCore: Double? = nil var sCore: Double? = nil - - public func remote() -> Data? { - let string = "1,1,\(self.value)$" - return string.data(using: .utf8) - } } public struct CPU_Limit: Codable { diff --git a/Modules/CPU/popup.swift b/Modules/CPU/popup.swift index 119b5714..de96e269 100644 --- a/Modules/CPU/popup.swift +++ b/Modules/CPU/popup.swift @@ -458,15 +458,17 @@ internal class Popup: PopupWrapper { } if (self.window?.isVisible ?? false) || !self.initializedFrequency { - if value.value > self.maxFreq { - self.maxFreq = value.value - } - - self.coresFreqField?.stringValue = "\(Int(value.value)) MHz" - if let circle = self.frequencyCircle { - circle.setValue((100*value.value)/self.maxFreq) - circle.setText("\((value.value/1000).rounded(toPlaces: 2))") - circle.toolTip = "\(localizedString("CPU frequency")): \(Int(value.value)) MHz - \(((100*value.value)/self.maxFreq).rounded(toPlaces: 2))%" + if let v = value.value { + if v > self.maxFreq { + self.maxFreq = v + } + + self.coresFreqField?.stringValue = "\(Int(v)) MHz" + if let circle = self.frequencyCircle { + circle.setValue((100*v)/self.maxFreq) + circle.setText("\((v/1000).rounded(toPlaces: 2))") + circle.toolTip = "\(localizedString("CPU frequency")): \(Int(v)) MHz - \(((100*v)/self.maxFreq).rounded(toPlaces: 2))%" + } } if let v = value.eCore { diff --git a/Modules/CPU/readers.swift b/Modules/CPU/readers.swift index d1e473d1..ffb97b78 100644 --- a/Modules/CPU/readers.swift +++ b/Modules/CPU/readers.swift @@ -372,14 +372,14 @@ public class FrequencyReader: Reader { for sample in samples { guard sample.group == "CPU Stats" else { continue } - if sample.channel.starts(with: "ECPU") { + if sample.channel.contains("ECPU") { eCore.append(self.calculateFrequencies(dict: sample.delta, freqs: self.eCoreFreqs)) } - if sample.channel.starts(with: self.sCoreCount == 0 ? "PCPU" : "MCPU") { + if sample.channel.contains(self.sCoreCount == 0 ? "PCPU" : "MCPU") { pCore.append(self.calculateFrequencies(dict: sample.delta, freqs: self.pCoreFreqs)) } if self.sCoreCount != 0 { - if sample.channel.starts(with: "PCPU") { + if sample.channel.contains("PCPU") { sCore.append(self.calculateFrequencies(dict: sample.delta, freqs: self.sCoreFreqs)) } } @@ -400,8 +400,22 @@ public class FrequencyReader: Reader { let pFreq: Double? = pCores.isEmpty ? nil : pCores.reduce(0, +) / Double(self.measurementCount) let sFreq: Double? = sCores.isEmpty ? nil : sCores.reduce(0, +) / Double(self.measurementCount) - let activeCores: Double = (eFreq != nil ? self.eCoreCount : 0) + (sFreq != nil ? self.sCoreCount : 0) + (pFreq != nil ? self.pCoreCount : 0) - let value: Double = ((eFreq ?? 0) * self.eCoreCount + (sFreq ?? 0) * self.sCoreCount + (pFreq ?? 0) * self.pCoreCount) / activeCores + var activeCores: Double = 0 + var totalFreq: Double = 0 + + if let freq = eFreq { + activeCores += self.eCoreCount + totalFreq += freq * self.eCoreCount + } + if let freq = pFreq { + activeCores += self.pCoreCount + totalFreq += freq * self.pCoreCount + } + if let freq = sFreq { + activeCores += self.sCoreCount + totalFreq += freq * self.sCoreCount + } + let value: Double? = activeCores > 0 ? totalFreq / activeCores : nil self.callback(CPU_Frequency(value: value, eCore: eFreq, pCore: pFreq, sCore: sFreq)) self.isReading = false diff --git a/Modules/Disk/main.swift b/Modules/Disk/main.swift index 9fb4d28d..8d47f85d 100644 --- a/Modules/Disk/main.swift +++ b/Modules/Disk/main.swift @@ -58,6 +58,9 @@ public struct drive: Codable { if usedSpace < 0 { usedSpace = 0 } + if total == 0 { + return 0 + } return Double(usedSpace) / Double(total) } @@ -319,10 +322,14 @@ public class Disk: Module { } case "$percentage": var percentage: Int - switch pair.value { - case "used": percentage = Int((Double(d.size - d.free) / Double(d.size)) * 100) - case "free": percentage = Int((Double(d.free) / Double(d.size)) * 100) - default: return + if d.size == 0 { + percentage = 0 + } else { + switch pair.value { + case "used": percentage = Int((Double(d.size - d.free) / Double(d.size)) * 100) + case "free": percentage = Int((Double(d.free) / Double(d.size)) * 100) + default: return + } } replacement = "\(percentage < 0 ? 0 : percentage)%" default: return diff --git a/Modules/Net/readers.swift b/Modules/Net/readers.swift index 058487c0..ebaf2689 100644 --- a/Modules/Net/readers.swift +++ b/Modules/Net/readers.swift @@ -30,6 +30,7 @@ extension CWPHYMode: @retroactive CustomStringConvertible { case .mode11g: return "802.11g" case .mode11n: return "802.11n" case .mode11ax: return "802.11ax" + case .mode11be: return "802.11be" case .modeNone: return "none" @unknown default: return "unknown" } diff --git a/Stats/Supporting Files/Info.plist b/Stats/Supporting Files/Info.plist index aadb0b4d..32080382 100755 --- a/Stats/Supporting Files/Info.plist +++ b/Stats/Supporting Files/Info.plist @@ -17,7 +17,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 776 + 777 Description Simple macOS system monitor in your menu bar LSApplicationCategoryType diff --git a/Widgets/Supporting Files/Info.plist b/Widgets/Supporting Files/Info.plist index 20dcc418..fcec3f27 100644 --- a/Widgets/Supporting Files/Info.plist +++ b/Widgets/Supporting Files/Info.plist @@ -13,7 +13,7 @@ CFBundleShortVersionString 2.12.6 CFBundleVersion - 776 + 777 NSExtension NSExtensionPointIdentifier