diff --git a/Kit/types.swift b/Kit/types.swift
index 74d9741f..4eca442e 100644
--- a/Kit/types.swift
+++ b/Kit/types.swift
@@ -219,12 +219,6 @@ public var isARM: Bool {
}
}
-public var isM1: Bool {
- get {
- return SystemKit.shared.device.info.cpu?.name == "Apple M1" ? true : false
- }
-}
-
public let notificationLevels: [KeyValue_t] = [
KeyValue_t(key: "Disabled", value: "Disabled"),
KeyValue_t(key: "10%", value: "10%"),
diff --git a/Makefile b/Makefile
index 51987cfb..c8098441 100644
--- a/Makefile
+++ b/Makefile
@@ -91,17 +91,10 @@ next-version:
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $$versionNumber" "$(PWD)/Stats/Supporting Files/Info.plist" ;\
check:
- xcrun altool \
- --notarization-info 36ba52a7-97bb-43e7-8faf-72bd6e9e1df3 \
- -itc_provider $(AC_PROVIDER) \
- -u $(AC_USERNAME) \
- -p @keychain:AC_PASSWORD
+ xcrun notarytool log 2d0045cc-8f0d-4f4c-ba6f-728895fd064a --keychain-profile "AC_PASSWORD"
history:
- xcrun altool --notarization-history 0 \
- -itc_provider $(AC_PROVIDER) \
- -u $(AC_USERNAME) \
- -p @keychain:AC_PASSWORD
+ xcrun notarytool history --keychain-profile "AC_PASSWORD"
open:
osascript -e 'display notification "Stats signed and ready for distribution" with title "Build the Stats"'
diff --git a/Modules/Sensors/readers.swift b/Modules/Sensors/readers.swift
index 94a4dffb..9bf5ff23 100644
--- a/Modules/Sensors/readers.swift
+++ b/Modules/Sensors/readers.swift
@@ -13,8 +13,10 @@ import Cocoa
import Kit
internal class SensorsReader: Reader<[Sensor_p]> {
- internal var list: [Sensor_p] = []
static let HIDtypes: [SensorType] = [.temperature, .voltage]
+
+ internal var list: [Sensor_p] = []
+
private var lastRead: Date = Date()
private let firstRead: Date = Date()
@@ -30,9 +32,10 @@ internal class SensorsReader: Reader<[Sensor_p]> {
var available: [String] = SMC.shared.getAllKeys()
var list: [Sensor] = []
var sensorsList = SensorsList
- #if arch(arm64)
- sensorsList = sensorsList.filter({ !$0.isIntelOnly })
- #endif
+
+ if let platform = SystemKit.shared.device.platform {
+ sensorsList = sensorsList.filter({ $0.platforms.contains(platform) })
+ }
if let count = SMC.shared.getValue("FNum") {
self.loadFans(Int(count))
@@ -180,6 +183,64 @@ internal class SensorsReader: Reader<[Sensor_p]> {
self.callback(self.list)
}
+ private func initCalculatedSensors() -> [Sensor] {
+ var list: [Sensor] = []
+
+ var cpuSensors = self.list.filter({ $0.group == .CPU && $0.type == .temperature && $0.average }).map{ $0.value }
+ var gpuSensors = self.list.filter({ $0.group == .GPU && $0.type == .temperature && $0.average }).map{ $0.value }
+
+ #if arch(arm64)
+ if self.HIDState {
+ cpuSensors += self.list.filter({ $0.key.hasPrefix("pACC MTR Temp") || $0.key.hasPrefix("eACC MTR Temp") }).map{ $0.value }
+ gpuSensors += self.list.filter({ $0.key.hasPrefix("GPU MTR Temp") }).map{ $0.value }
+ }
+ #endif
+
+ let fanSensors = self.list.filter({ $0.type == .fan && !$0.isComputed }).map{ $0.value}
+
+ if !cpuSensors.isEmpty {
+ let value = cpuSensors.reduce(0, +) / Double(cpuSensors.count)
+ list.append(Sensor(key: "Average CPU", name: "Average CPU", value: value, group: .CPU, type: .temperature, platforms: Platform.all, isComputed: true))
+ if let max = cpuSensors.max() {
+ list.append(Sensor(key: "Hottest CPU", name: "Hottest CPU", value: max, group: .CPU, type: .temperature, platforms: Platform.all, isComputed: true))
+ }
+ }
+ if !gpuSensors.isEmpty {
+ let value = gpuSensors.reduce(0, +) / Double(gpuSensors.count)
+ list.append(Sensor(key: "Average GPU", name: "Average GPU", value: value, group: .GPU, type: .temperature, platforms: Platform.all, isComputed: true))
+ if let max = gpuSensors.max() {
+ list.append(Sensor(key: "Hottest GPU", name: "Hottest GPU", value: max, group: .GPU, type: .temperature, platforms: Platform.all, isComputed: true))
+ }
+ }
+ if !fanSensors.isEmpty && fanSensors.count > 1 {
+ if let max = fanSensors.max() {
+ list.append(Sensor(key: "Fastest Fan", name: "Fastest Fan", value: max, group: .sensor, type: .fan, platforms: Platform.all, isComputed: true))
+ }
+ }
+
+ // Init total power since launched, only if Total Power sensor is available
+ if self.list.contains(where: { $0.key == "PSTR"}) {
+ list.append(Sensor(key: "Total System Consumption", name: "Total System Consumption", value: 0, group: .sensor, type: .energy, platforms: Platform.all, isComputed: true))
+ list.append(Sensor(key: "Average System Total", name: "Average System Total", value: 0, group: .sensor, type: .power, platforms: Platform.all, isComputed: true))
+ }
+
+ return list.filter({ (s: Sensor_p) -> Bool in
+ switch s.type {
+ case .temperature:
+ return s.value < 110 && s.value >= 0
+ case .voltage:
+ return s.value < 300 && s.value >= 0
+ case .current:
+ return s.value < 100 && s.value >= 0
+ default: return true
+ }
+ }).sorted { $0.key.lowercased() < $1.key.lowercased() }
+ }
+}
+
+// MARK: - Fans
+
+extension SensorsReader {
private func loadFans(_ count: Int) {
debug("Found \(Int(count)) fans", log: self.log)
@@ -231,7 +292,11 @@ internal class SensorsReader: Reader<[Sensor_p]> {
return mode
}
-
+}
+
+// MARK: - HID sensors
+
+extension SensorsReader {
private func m1Preset(type: SensorType) -> (Int32, Int32, Int32) {
var page: Int32 = 0
var usage: Int32 = 0
@@ -300,7 +365,8 @@ internal class SensorsReader: Reader<[Sensor_p]> {
name: name,
value: value,
group: .hid,
- type: typ
+ type: typ,
+ platforms: Platform.all
))
}
}
@@ -309,9 +375,9 @@ internal class SensorsReader: Reader<[Sensor_p]> {
let socSensors = list.filter({ $0.key.hasPrefix("SOC MTR Temp") }).map{ $0.value }
if !socSensors.isEmpty {
let value = socSensors.reduce(0, +) / Double(socSensors.count)
- list.append(Sensor(key: "Average SOC", name: "Average SOC", value: value, group: .hid, type: .temperature))
+ list.append(Sensor(key: "Average SOC", name: "Average SOC", value: value, group: .hid, type: .temperature, platforms: Platform.all))
if let max = socSensors.max() {
- list.append(Sensor(key: "Hottest SOC", name: "Hottest SOC", value: max, group: .hid, type: .temperature))
+ list.append(Sensor(key: "Hottest SOC", name: "Hottest SOC", value: max, group: .hid, type: .temperature, platforms: Platform.all))
}
}
@@ -328,60 +394,6 @@ internal class SensorsReader: Reader<[Sensor_p]> {
}).sorted { $0.key.lowercased() < $1.key.lowercased() }
}
- private func initCalculatedSensors() -> [Sensor] {
- var list: [Sensor] = []
-
- var cpuSensors = self.list.filter({ $0.group == .CPU && $0.type == .temperature && $0.average }).map{ $0.value }
- var gpuSensors = self.list.filter({ $0.group == .GPU && $0.type == .temperature && $0.average }).map{ $0.value }
-
- #if arch(arm64)
- if self.HIDState {
- cpuSensors += self.list.filter({ $0.key.hasPrefix("pACC MTR Temp") || $0.key.hasPrefix("eACC MTR Temp") }).map{ $0.value }
- gpuSensors += self.list.filter({ $0.key.hasPrefix("GPU MTR Temp") }).map{ $0.value }
- }
- #endif
-
- let fanSensors = self.list.filter({ $0.type == .fan && !$0.isComputed }).map{ $0.value}
-
- if !cpuSensors.isEmpty {
- let value = cpuSensors.reduce(0, +) / Double(cpuSensors.count)
- list.append(Sensor(key: "Average CPU", name: "Average CPU", value: value, group: .CPU, type: .temperature, isComputed: true))
- if let max = cpuSensors.max() {
- list.append(Sensor(key: "Hottest CPU", name: "Hottest CPU", value: max, group: .CPU, type: .temperature, isComputed: true))
- }
- }
- if !gpuSensors.isEmpty {
- let value = gpuSensors.reduce(0, +) / Double(gpuSensors.count)
- list.append(Sensor(key: "Average GPU", name: "Average GPU", value: value, group: .GPU, type: .temperature, isComputed: true))
- if let max = gpuSensors.max() {
- list.append(Sensor(key: "Hottest GPU", name: "Hottest GPU", value: max, group: .GPU, type: .temperature, isComputed: true))
- }
- }
- if !fanSensors.isEmpty && fanSensors.count > 1 {
- if let max = fanSensors.max() {
- list.append(Sensor(key: "Fastest Fan", name: "Fastest Fan", value: max, group: .sensor, type: .fan, isComputed: true))
- }
- }
-
- // Init total power since launched, only if Total Power sensor is available
- if self.list.contains(where: { $0.key == "PSTR"}) {
- list.append(Sensor(key: "Total System Consumption", name: "Total System Consumption", value: 0, group: .sensor, type: .energy, isComputed: true))
- list.append(Sensor(key: "Average System Total", name: "Average System Total", value: 0, group: .sensor, type: .power, isComputed: true))
- }
-
- return list.filter({ (s: Sensor_p) -> Bool in
- switch s.type {
- case .temperature:
- return s.value < 110 && s.value >= 0
- case .voltage:
- return s.value < 300 && s.value >= 0
- case .current:
- return s.value < 100 && s.value >= 0
- default: return true
- }
- }).sorted { $0.key.lowercased() < $1.key.lowercased() }
- }
-
public func HIDCallback() {
if self.HIDState {
self.list += self.initHIDSensors()
diff --git a/Modules/Sensors/settings.swift b/Modules/Sensors/settings.swift
index 83259fd8..0157a19b 100644
--- a/Modules/Sensors/settings.swift
+++ b/Modules/Sensors/settings.swift
@@ -29,7 +29,7 @@ internal class Settings: NSStackView, Settings_v {
public init(_ title: String, list: [Sensor_p]) {
self.title = title
self.list = list
- self.hidState = isM1 ? true : false
+ self.hidState = SystemKit.shared.device.platform == .m1 ? true : false
super.init(frame: NSRect(x: 0, y: 0, width: 0, height: 0))
diff --git a/Modules/Sensors/values.swift b/Modules/Sensors/values.swift
index 82db29e9..bd00362a 100644
--- a/Modules/Sensors/values.swift
+++ b/Modules/Sensors/values.swift
@@ -37,7 +37,7 @@ internal protocol Sensor_p {
var group: SensorGroup { get }
var type: SensorType { get }
- var isIntelOnly: Bool { get }
+ var platforms: [Platform] { get }
var isComputed: Bool { get }
var average: Bool { get }
@@ -54,7 +54,7 @@ internal struct Sensor: Sensor_p {
var group: SensorGroup
var type: SensorType
- var isIntelOnly: Bool = false
+ var platforms: [Platform]
var isComputed: Bool = false
var average: Bool = false
@@ -122,7 +122,7 @@ internal struct Sensor: Sensor_p {
name: self.name,
group: self.group,
type: self.type,
- isIntelOnly: self.isIntelOnly,
+ platforms: self.platforms,
isComputed: self.isComputed,
average: self.average
)
@@ -140,6 +140,7 @@ internal struct Fan: Sensor_p {
var group: SensorGroup = .sensor
var type: SensorType = .fan
+ var platforms: [Platform] = Platform.all
var isIntelOnly: Bool = false
var isComputed: Bool = false
var average: Bool = false
@@ -196,128 +197,142 @@ internal struct Fan: Sensor_p {
}
// List of keys: https://github.com/acidanthera/VirtualSMC/blob/master/Docs/SMCSensorKeys.txt
-let SensorsList: [Sensor] = [
+internal let SensorsList: [Sensor] = [
// Temperature
- Sensor(key: "TA%P", name: "Ambient %", group: .sensor, type: .temperature),
- Sensor(key: "Th%H", name: "Heatpipe %", group: .sensor, type: .temperature, isIntelOnly: true),
- Sensor(key: "TZ%C", name: "Thermal zone %", group: .sensor, type: .temperature),
+ Sensor(key: "TA%P", name: "Ambient %", group: .sensor, type: .temperature, platforms: Platform.all),
+ Sensor(key: "Th%H", name: "Heatpipe %", group: .sensor, type: .temperature, platforms: [.intel]),
+ Sensor(key: "TZ%C", name: "Thermal zone %", group: .sensor, type: .temperature, platforms: Platform.all),
- Sensor(key: "TC0D", name: "CPU diode", group: .CPU, type: .temperature),
- Sensor(key: "TC0E", name: "CPU diode virtual", group: .CPU, type: .temperature),
- Sensor(key: "TC0F", name: "CPU diode filtered", group: .CPU, type: .temperature),
- Sensor(key: "TC0H", name: "CPU heatsink", group: .CPU, type: .temperature),
- Sensor(key: "TC0P", name: "CPU proximity", group: .CPU, type: .temperature),
- Sensor(key: "TCAD", name: "CPU package", group: .CPU, type: .temperature),
+ Sensor(key: "TC0D", name: "CPU diode", group: .CPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TC0E", name: "CPU diode virtual", group: .CPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TC0F", name: "CPU diode filtered", group: .CPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TC0H", name: "CPU heatsink", group: .CPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TC0P", name: "CPU proximity", group: .CPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TCAD", name: "CPU package", group: .CPU, type: .temperature, platforms: Platform.all),
- Sensor(key: "TC%c", name: "CPU core %", group: .CPU, type: .temperature, average: true),
- Sensor(key: "TC%C", name: "CPU Core %", group: .CPU, type: .temperature, average: true),
+ Sensor(key: "TC%c", name: "CPU core %", group: .CPU, type: .temperature, platforms: Platform.all, average: true),
+ Sensor(key: "TC%C", name: "CPU Core %", group: .CPU, type: .temperature, platforms: Platform.all, average: true),
- Sensor(key: "TCGC", name: "GPU Intel Graphics", group: .GPU, type: .temperature),
- Sensor(key: "TG0D", name: "GPU diode", group: .GPU, type: .temperature),
- Sensor(key: "TGDD", name: "GPU AMD Radeon", group: .GPU, type: .temperature),
- Sensor(key: "TG0H", name: "GPU heatsink", group: .GPU, type: .temperature),
- Sensor(key: "TG0P", name: "GPU proximity", group: .GPU, type: .temperature),
+ Sensor(key: "TCGC", name: "GPU Intel Graphics", group: .GPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TG0D", name: "GPU diode", group: .GPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TGDD", name: "GPU AMD Radeon", group: .GPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TG0H", name: "GPU heatsink", group: .GPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TG0P", name: "GPU proximity", group: .GPU, type: .temperature, platforms: Platform.all),
- Sensor(key: "Tm0P", name: "Mainboard", group: .system, type: .temperature),
- Sensor(key: "Tp0P", name: "Powerboard", group: .system, type: .temperature, isIntelOnly: true),
- Sensor(key: "TB1T", name: "Battery", group: .system, type: .temperature, isIntelOnly: true),
- Sensor(key: "TW0P", name: "Airport", group: .system, type: .temperature),
- Sensor(key: "TL0P", name: "Display", group: .system, type: .temperature),
- Sensor(key: "TI%P", name: "Thunderbold %", group: .system, type: .temperature),
- Sensor(key: "TH%A", name: "Disk % (A)", group: .system, type: .temperature),
- Sensor(key: "TH%B", name: "Disk % (B)", group: .system, type: .temperature),
- Sensor(key: "TH%C", name: "Disk % (C)", group: .system, type: .temperature),
+ Sensor(key: "Tm0P", name: "Mainboard", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "Tp0P", name: "Powerboard", group: .system, type: .temperature, platforms: [.intel]),
+ Sensor(key: "TB1T", name: "Battery", group: .system, type: .temperature, platforms: [.intel]),
+ Sensor(key: "TW0P", name: "Airport", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TL0P", name: "Display", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TI%P", name: "Thunderbold %", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TH%A", name: "Disk % (A)", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TH%B", name: "Disk % (B)", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TH%C", name: "Disk % (C)", group: .system, type: .temperature, platforms: Platform.all),
- Sensor(key: "TN0D", name: "Northbridge diode", group: .system, type: .temperature),
- Sensor(key: "TN0H", name: "Northbridge heatsink", group: .system, type: .temperature),
- Sensor(key: "TN0P", name: "Northbridge proximity", group: .system, type: .temperature),
+ Sensor(key: "TN0D", name: "Northbridge diode", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TN0H", name: "Northbridge heatsink", group: .system, type: .temperature, platforms: Platform.all),
+ Sensor(key: "TN0P", name: "Northbridge proximity", group: .system, type: .temperature, platforms: Platform.all),
// Apple Silicon
- Sensor(key: "Tp09", name: "CPU efficiency core 1", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp0T", name: "CPU efficiency core 2", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp01", name: "CPU performance core 1", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp05", name: "CPU performance core 2", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp0D", name: "CPU performance core 3", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp0H", name: "CPU performance core 4", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp0L", name: "CPU performance core 5", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp0P", name: "CPU performance core 6", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp0X", name: "CPU performance core 7", group: .CPU, type: .temperature, average: true),
- Sensor(key: "Tp0b", name: "CPU performance core 8", group: .CPU, type: .temperature, average: true),
+ Sensor(key: "Tp09", name: "CPU efficiency core 1", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp0T", name: "CPU efficiency core 2", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp01", name: "CPU performance core 1", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp05", name: "CPU performance core 2", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp0D", name: "CPU performance core 3", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp0H", name: "CPU performance core 4", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp0L", name: "CPU performance core 5", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp0P", name: "CPU performance core 6", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp0X", name: "CPU performance core 7", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tp0b", name: "CPU performance core 8", group: .CPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
- Sensor(key: "Tg05", name: "GPU 1", group: .GPU, type: .temperature, average: true),
- Sensor(key: "Tg0D", name: "GPU 2", group: .GPU, type: .temperature, average: true),
- Sensor(key: "Tg0L", name: "GPU 3", group: .GPU, type: .temperature, average: true),
- Sensor(key: "Tg0T", name: "GPU 4", group: .GPU, type: .temperature, average: true),
+ Sensor(key: "Tg05", name: "GPU 1", group: .GPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tg0D", name: "GPU 2", group: .GPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tg0L", name: "GPU 3", group: .GPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
+ Sensor(key: "Tg0T", name: "GPU 4", group: .GPU, type: .temperature, platforms: [.m1, .m1Pro, .m1Max, .m1Ultra], average: true),
- Sensor(key: "TaLP", name: "Airflow left", group: .sensor, type: .temperature),
- Sensor(key: "TaRF", name: "Airflow right", group: .sensor, type: .temperature),
+ // M2
+ Sensor(key: "Tp05", name: "CPU efficiency core 1", group: .CPU, type: .temperature, platforms: [.m2], average: true),
+ Sensor(key: "Tp0D", name: "CPU efficiency core 2", group: .CPU, type: .temperature, platforms: [.m2], average: true),
+ Sensor(key: "Tp0j", name: "CPU efficiency core 3", group: .CPU, type: .temperature, platforms: [.m2], average: true),
+ Sensor(key: "Tp0r", name: "CPU efficiency core 4", group: .CPU, type: .temperature, platforms: [.m2], average: true),
- Sensor(key: "TH0x", name: "NAND", group: .system, type: .temperature),
- Sensor(key: "TB1T", name: "Battery 1", group: .system, type: .temperature),
- Sensor(key: "TB2T", name: "Battery 2", group: .system, type: .temperature),
- Sensor(key: "TW0P", name: "Airport", group: .system, type: .temperature),
+ Sensor(key: "Tp01", name: "CPU performance core 1", group: .CPU, type: .temperature, platforms: [.m2], average: true),
+ Sensor(key: "Tp09", name: "CPU performance core 2", group: .CPU, type: .temperature, platforms: [.m2], average: true),
+ Sensor(key: "Tp0f", name: "CPU performance core 3", group: .CPU, type: .temperature, platforms: [.m2], average: true),
+ Sensor(key: "Tp0n", name: "CPU performance core 4", group: .CPU, type: .temperature, platforms: [.m2], average: true),
+
+ Sensor(key: "Tg0f", name: "GPU 1", group: .GPU, type: .temperature, platforms: [.m2], average: true),
+ Sensor(key: "Tg0n", name: "GPU 2", group: .GPU, type: .temperature, platforms: [.m2], average: true),
+
+ Sensor(key: "TaLP", name: "Airflow left", group: .sensor, type: .temperature, platforms: Platform.apple),
+ Sensor(key: "TaRF", name: "Airflow right", group: .sensor, type: .temperature, platforms: Platform.apple),
+
+ Sensor(key: "TH0x", name: "NAND", group: .system, type: .temperature, platforms: Platform.apple),
+ Sensor(key: "TB1T", name: "Battery 1", group: .system, type: .temperature, platforms: Platform.apple),
+ Sensor(key: "TB2T", name: "Battery 2", group: .system, type: .temperature, platforms: Platform.apple),
+ Sensor(key: "TW0P", name: "Airport", group: .system, type: .temperature, platforms: Platform.apple),
// Voltage
- Sensor(key: "VCAC", name: "CPU IA", group: .CPU, type: .voltage),
- Sensor(key: "VCSC", name: "CPU System Agent", group: .CPU, type: .voltage),
- Sensor(key: "VC%C", name: "CPU Core %", group: .CPU, type: .voltage),
+ Sensor(key: "VCAC", name: "CPU IA", group: .CPU, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VCSC", name: "CPU System Agent", group: .CPU, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VC%C", name: "CPU Core %", group: .CPU, type: .voltage, platforms: Platform.all),
- Sensor(key: "VCTC", name: "GPU Intel Graphics", group: .GPU, type: .voltage),
- Sensor(key: "VG0C", name: "GPU", group: .GPU, type: .voltage),
+ Sensor(key: "VCTC", name: "GPU Intel Graphics", group: .GPU, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VG0C", name: "GPU", group: .GPU, type: .voltage, platforms: Platform.all),
- Sensor(key: "VM0R", name: "Memory", group: .system, type: .voltage),
- Sensor(key: "Vb0R", name: "CMOS", group: .system, type: .voltage),
+ Sensor(key: "VM0R", name: "Memory", group: .system, type: .voltage, platforms: Platform.all),
+ Sensor(key: "Vb0R", name: "CMOS", group: .system, type: .voltage, platforms: Platform.all),
- Sensor(key: "VD0R", name: "DC In", group: .sensor, type: .voltage),
- Sensor(key: "VP0R", name: "12V rail", group: .sensor, type: .voltage),
- Sensor(key: "Vp0C", name: "12V vcc", group: .sensor, type: .voltage),
- Sensor(key: "VV2S", name: "3V", group: .sensor, type: .voltage),
- Sensor(key: "VR3R", name: "3.3V", group: .sensor, type: .voltage),
- Sensor(key: "VV1S", name: "5V", group: .sensor, type: .voltage),
- Sensor(key: "VV9S", name: "12V", group: .sensor, type: .voltage),
- Sensor(key: "VeES", name: "PCI 12V", group: .sensor, type: .voltage),
+ Sensor(key: "VD0R", name: "DC In", group: .sensor, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VP0R", name: "12V rail", group: .sensor, type: .voltage, platforms: Platform.all),
+ Sensor(key: "Vp0C", name: "12V vcc", group: .sensor, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VV2S", name: "3V", group: .sensor, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VR3R", name: "3.3V", group: .sensor, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VV1S", name: "5V", group: .sensor, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VV9S", name: "12V", group: .sensor, type: .voltage, platforms: Platform.all),
+ Sensor(key: "VeES", name: "PCI 12V", group: .sensor, type: .voltage, platforms: Platform.all),
// Current
- Sensor(key: "IC0R", name: "CPU High side", group: .sensor, type: .current),
- Sensor(key: "IG0R", name: "GPU High side", group: .sensor, type: .current),
- Sensor(key: "ID0R", name: "DC In", group: .sensor, type: .current),
- Sensor(key: "IBAC", name: "Battery", group: .sensor, type: .current),
+ Sensor(key: "IC0R", name: "CPU High side", group: .sensor, type: .current, platforms: Platform.all),
+ Sensor(key: "IG0R", name: "GPU High side", group: .sensor, type: .current, platforms: Platform.all),
+ Sensor(key: "ID0R", name: "DC In", group: .sensor, type: .current, platforms: Platform.all),
+ Sensor(key: "IBAC", name: "Battery", group: .sensor, type: .current, platforms: Platform.all),
// Power
- Sensor(key: "PC0C", name: "CPU Core", group: .CPU, type: .power),
- Sensor(key: "PCAM", name: "CPU Core (IMON)", group: .CPU, type: .power),
- Sensor(key: "PCPC", name: "CPU Package", group: .CPU, type: .power),
- Sensor(key: "PCTR", name: "CPU Total", group: .CPU, type: .power),
- Sensor(key: "PCPT", name: "CPU Package total", group: .CPU, type: .power),
- Sensor(key: "PCPR", name: "CPU Package total (SMC)", group: .CPU, type: .power),
- Sensor(key: "PC0R", name: "CPU Computing high side", group: .CPU, type: .power),
- Sensor(key: "PC0G", name: "CPU GFX", group: .CPU, type: .power),
- Sensor(key: "PCEC", name: "CPU VccEDRAM", group: .CPU, type: .power),
+ Sensor(key: "PC0C", name: "CPU Core", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCAM", name: "CPU Core (IMON)", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCPC", name: "CPU Package", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCTR", name: "CPU Total", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCPT", name: "CPU Package total", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCPR", name: "CPU Package total (SMC)", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PC0R", name: "CPU Computing high side", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PC0G", name: "CPU GFX", group: .CPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCEC", name: "CPU VccEDRAM", group: .CPU, type: .power, platforms: Platform.all),
- Sensor(key: "PCPG", name: "GPU Intel Graphics", group: .GPU, type: .power),
- Sensor(key: "PG0R", name: "GPU", group: .GPU, type: .power),
- Sensor(key: "PCGC", name: "Intel GPU", group: .GPU, type: .power),
- Sensor(key: "PCGM", name: "Intel GPU (IMON)", group: .GPU, type: .power),
+ Sensor(key: "PCPG", name: "GPU Intel Graphics", group: .GPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PG0R", name: "GPU", group: .GPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCGC", name: "Intel GPU", group: .GPU, type: .power, platforms: Platform.all),
+ Sensor(key: "PCGM", name: "Intel GPU (IMON)", group: .GPU, type: .power, platforms: Platform.all),
- Sensor(key: "PC3C", name: "RAM", group: .sensor, type: .power),
- Sensor(key: "PPBR", name: "Battery", group: .sensor, type: .power),
- Sensor(key: "PDTR", name: "DC In", group: .sensor, type: .power),
- Sensor(key: "PSTR", name: "System Total", group: .sensor, type: .power)
+ Sensor(key: "PC3C", name: "RAM", group: .sensor, type: .power, platforms: Platform.all),
+ Sensor(key: "PPBR", name: "Battery", group: .sensor, type: .power, platforms: Platform.all),
+ Sensor(key: "PDTR", name: "DC In", group: .sensor, type: .power, platforms: Platform.all),
+ Sensor(key: "PSTR", name: "System Total", group: .sensor, type: .power, platforms: Platform.all)
]
-let HIDSensorsList: [Sensor] = [
- Sensor(key: "pACC MTR Temp Sensor%", name: "CPU performance core %", group: .CPU, type: .temperature),
- Sensor(key: "eACC MTR Temp Sensor%", name: "CPU efficiency core %", group: .CPU, type: .temperature),
+internal let HIDSensorsList: [Sensor] = [
+ Sensor(key: "pACC MTR Temp Sensor%", name: "CPU performance core %", group: .CPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "eACC MTR Temp Sensor%", name: "CPU efficiency core %", group: .CPU, type: .temperature, platforms: Platform.all),
- Sensor(key: "GPU MTR Temp Sensor%", name: "GPU core %", group: .GPU, type: .temperature),
- Sensor(key: "SOC MTR Temp Sensor%", name: "SOC core %", group: .sensor, type: .temperature),
- Sensor(key: "ANE MTR Temp Sensor%", name: "Neural engine %", group: .sensor, type: .temperature),
- Sensor(key: "ISP MTR Temp Sensor%", name: "Airport %", group: .sensor, type: .temperature),
+ Sensor(key: "GPU MTR Temp Sensor%", name: "GPU core %", group: .GPU, type: .temperature, platforms: Platform.all),
+ Sensor(key: "SOC MTR Temp Sensor%", name: "SOC core %", group: .sensor, type: .temperature, platforms: Platform.all),
+ Sensor(key: "ANE MTR Temp Sensor%", name: "Neural engine %", group: .sensor, type: .temperature, platforms: Platform.all),
+ Sensor(key: "ISP MTR Temp Sensor%", name: "Airport %", group: .sensor, type: .temperature, platforms: Platform.all),
- Sensor(key: "PMGR SOC Die Temp Sensor%", name: "Power manager die %", group: .sensor, type: .temperature),
- Sensor(key: "PMU tdev%", name: "Power management unit dev %", group: .sensor, type: .temperature),
- Sensor(key: "PMU tdie%", name: "Power management unit die %", group: .sensor, type: .temperature),
+ Sensor(key: "PMGR SOC Die Temp Sensor%", name: "Power manager die %", group: .sensor, type: .temperature, platforms: Platform.all),
+ Sensor(key: "PMU tdev%", name: "Power management unit dev %", group: .sensor, type: .temperature, platforms: Platform.all),
+ Sensor(key: "PMU tdie%", name: "Power management unit die %", group: .sensor, type: .temperature, platforms: Platform.all),
- Sensor(key: "gas gauge battery", name: "Battery", group: .sensor, type: .temperature),
- Sensor(key: "NAND CH% temp", name: "Disk %s", group: .GPU, type: .temperature)
+ Sensor(key: "gas gauge battery", name: "Battery", group: .sensor, type: .temperature, platforms: Platform.all),
+ Sensor(key: "NAND CH% temp", name: "Disk %s", group: .GPU, type: .temperature, platforms: Platform.all)
]
diff --git a/Stats/Supporting Files/Info.plist b/Stats/Supporting Files/Info.plist
index 782f2d0d..540b8347 100755
--- a/Stats/Supporting Files/Info.plist
+++ b/Stats/Supporting Files/Info.plist
@@ -17,7 +17,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 391
+ 397
Description
Simple macOS system monitor in your menu bar
LSApplicationCategoryType