diff --git a/Modules/GPU/main.swift b/Modules/GPU/main.swift index 4db1cb74..8e4bbb1f 100644 --- a/Modules/GPU/main.swift +++ b/Modules/GPU/main.swift @@ -35,7 +35,7 @@ public struct GPUs: value_t { public var widget_value: Double { get { - return list[0].utilization + return list.isEmpty ? 0 : list[0].utilization } } } @@ -87,7 +87,7 @@ public class GPU: Module { } private func infoCallback(_ value: GPUs?) { - guard value != nil else { + guard value != nil && !value!.list.isEmpty else { return } diff --git a/Modules/GPU/reader.swift b/Modules/GPU/reader.swift index 035f74c3..b68c8a42 100644 --- a/Modules/GPU/reader.swift +++ b/Modules/GPU/reader.swift @@ -39,8 +39,8 @@ internal class InfoReader: Reader { return false } - let pciMatch = "0x" + Data([deviceID[1], deviceID[0], vendorID[1], vendorID[0]]).map { String(format: "%02hhX", $0) }.joined() - let accMatch = accelerator["IOPCIMatch"] as? String ?? accelerator["IOPCIPrimaryMatch"] as? String ?? "" + let pciMatch = "0x" + Data([deviceID[1], deviceID[0], vendorID[1], vendorID[0]]).map { String(format: "%02hhX", $0) }.joined().lowercased() + let accMatch = (accelerator["IOPCIMatch"] as? String ?? accelerator["IOPCIPrimaryMatch"] as? String ?? "").lowercased() return accMatch.range(of: pciMatch) != nil }) else { return } @@ -53,10 +53,10 @@ internal class InfoReader: Reader { return } - guard let model = matchedGPU.object(forKey: "model") as? Data else { + guard let model = matchedGPU.object(forKey: "model") as? Data, var modelName = String(data: model, encoding: .ascii) else { return } - let modelName = String(data: model, encoding: .ascii)!.replacingOccurrences(of: "\0", with: "") + modelName = modelName.replacingOccurrences(of: "\0", with: "") guard let IOClass = accelerator.object(forKey: "IOClass") as? String else { return diff --git a/Stats/Supporting Files/Info.plist b/Stats/Supporting Files/Info.plist index 2c1098bc..cd41bfea 100755 --- a/Stats/Supporting Files/Info.plist +++ b/Stats/Supporting Files/Info.plist @@ -17,7 +17,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 39 + 44 Description Simple macOS system monitor in your menu bar LSApplicationCategoryType diff --git a/StatsKit/extensions.swift b/StatsKit/extensions.swift index 94a8a8b8..abb5efcf 100644 --- a/StatsKit/extensions.swift +++ b/StatsKit/extensions.swift @@ -938,3 +938,17 @@ public class ColorView: NSView { } } } + +public struct Log: TextOutputStream { + public func write(_ string: String) { + let fm = FileManager.default + let log = fm.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("log.txt") + if let handle = try? FileHandle(forWritingTo: log) { + handle.seekToEndOfFile() + handle.write(string.data(using: .utf8)!) + handle.closeFile() + } else { + try? string.data(using: .utf8)?.write(to: log) + } + } +}