mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: changed minimum macOS version to macOS 11.15 (Big Sur)
This commit is contained in:
@@ -347,9 +347,7 @@ private class OrderTableView: NSView, NSTableViewDelegate, NSTableViewDataSource
|
|||||||
self.tableView.registerForDraggedTypes([dragDropType])
|
self.tableView.registerForDraggedTypes([dragDropType])
|
||||||
self.tableView.gridColor = .gridColor
|
self.tableView.gridColor = .gridColor
|
||||||
self.tableView.gridStyleMask = [.solidVerticalGridLineMask, .solidHorizontalGridLineMask]
|
self.tableView.gridStyleMask = [.solidVerticalGridLineMask, .solidHorizontalGridLineMask]
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
self.tableView.style = .plain
|
self.tableView.style = .plain
|
||||||
}
|
|
||||||
|
|
||||||
self.tableView.addTableColumn(NSTableColumn(identifier: NSUserInterfaceItemIdentifier(rawValue: "name")))
|
self.tableView.addTableColumn(NSTableColumn(identifier: NSUserInterfaceItemIdentifier(rawValue: "name")))
|
||||||
|
|
||||||
|
|||||||
@@ -37,13 +37,7 @@ public struct Widget_c_s {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public var margin: CGPoint {
|
public var margin: CGPoint {
|
||||||
get {
|
get { CGPoint(x: 0, y: 2) }
|
||||||
var point: CGPoint = CGPoint(x: 2, y: 2)
|
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
point.x = 0
|
|
||||||
}
|
|
||||||
return point
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public let spacing: CGFloat = 2
|
public let spacing: CGFloat = 2
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -597,18 +597,8 @@ extension CGFloat {
|
|||||||
public class KeyboardShartcutView: NSStackView {
|
public class KeyboardShartcutView: NSStackView {
|
||||||
private let callback: (_ value: [UInt16]) -> Void
|
private let callback: (_ value: [UInt16]) -> Void
|
||||||
|
|
||||||
private var startIcon: NSImage {
|
private var startIcon: NSImage { iconFromSymbol(name: "record.circle", scale: .large) }
|
||||||
if #available(macOS 12.0, *), let icon = iconFromSymbol(name: "record.circle", scale: .large) {
|
private var stopIcon: NSImage { iconFromSymbol(name: "stop.circle.fill", scale: .large) }
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("record"))!
|
|
||||||
}
|
|
||||||
private var stopIcon: NSImage {
|
|
||||||
if #available(macOS 12.0, *), let icon = iconFromSymbol(name: "stop.circle.fill", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("stop"))!
|
|
||||||
}
|
|
||||||
|
|
||||||
private var valueField: NSTextField? = nil
|
private var valueField: NSTextField? = nil
|
||||||
private var startButton: NSButton? = nil
|
private var startButton: NSButton? = nil
|
||||||
|
|||||||
@@ -1211,13 +1211,12 @@ public func controlState(_ sender: NSControl) -> Bool {
|
|||||||
return state == .on
|
return state == .on
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
public func iconFromSymbol(name: String, scale: NSImage.SymbolScale) -> NSImage {
|
||||||
public func iconFromSymbol(name: String, scale: NSImage.SymbolScale) -> NSImage? {
|
|
||||||
let config = NSImage.SymbolConfiguration(textStyle: .body, scale: scale)
|
let config = NSImage.SymbolConfiguration(textStyle: .body, scale: scale)
|
||||||
if let symbol = NSImage(systemSymbolName: name, accessibilityDescription: nil) {
|
if let symbol = NSImage(systemSymbolName: name, accessibilityDescription: nil), let icon = symbol.withSymbolConfiguration(config) {
|
||||||
return symbol.withSymbolConfiguration(config)
|
return icon
|
||||||
}
|
}
|
||||||
return nil
|
return NSImage()
|
||||||
}
|
}
|
||||||
|
|
||||||
public func showAlert(_ message: String, _ information: String? = nil, _ style: NSAlert.Style = .informational) {
|
public func showAlert(_ message: String, _ information: String? = nil, _ style: NSAlert.Style = .informational) {
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ public struct module_c {
|
|||||||
if let state = dict["State"] as? Bool {
|
if let state = dict["State"] as? Bool {
|
||||||
self.defaultState = state
|
self.defaultState = state
|
||||||
}
|
}
|
||||||
if let symbol = dict["Symbol"] as? String, #available(macOS 11.0, *) {
|
if let symbol = dict["Symbol"] as? String {
|
||||||
self.icon = NSImage(systemSymbolName: symbol, accessibilityDescription: nil)
|
self.icon = NSImage(systemSymbolName: symbol, accessibilityDescription: nil)
|
||||||
}
|
}
|
||||||
if self.icon == nil, #available(macOS 11.0, *), let symbol = dict["AlternativeSymbol"] as? String {
|
if self.icon == nil, let symbol = dict["AlternativeSymbol"] as? String {
|
||||||
self.icon = NSImage(systemSymbolName: symbol, accessibilityDescription: nil)
|
self.icon = NSImage(systemSymbolName: symbol, accessibilityDescription: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -678,18 +678,8 @@ private class ButtonSelectorView: NSStackView {
|
|||||||
return view
|
return view
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private var settingsIcon: NSImage {
|
private var settingsIcon: NSImage { iconFromSymbol(name: "gear", scale: .large) }
|
||||||
if #available(macOS 12.0, *), let icon = iconFromSymbol(name: "gear", scale: .large) {
|
private var previewIcon: NSImage { iconFromSymbol(name: "command", scale: .large) }
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("settings"))!
|
|
||||||
}
|
|
||||||
private var previewIcon: NSImage {
|
|
||||||
if #available(macOS 12.0, *), let icon = iconFromSymbol(name: "command", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("chart"))!
|
|
||||||
}
|
|
||||||
|
|
||||||
private var button: NSButton? = nil
|
private var button: NSButton? = nil
|
||||||
private var isSettingsEnabled: Bool = false
|
private var isSettingsEnabled: Bool = false
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ public struct ColorValue: Equatable {
|
|||||||
self.color = color
|
self.color = color
|
||||||
}
|
}
|
||||||
|
|
||||||
// swiftlint:disable operator_whitespace
|
// swiftlint:disable function_name_whitespace
|
||||||
public static func ==(lhs: ColorValue, rhs: ColorValue) -> Bool {
|
public static func ==(lhs: ColorValue, rhs: ColorValue) -> Bool {
|
||||||
return lhs.value == rhs.value
|
return lhs.value == rhs.value
|
||||||
}
|
}
|
||||||
// swiftlint:enable operator_whitespace
|
// swiftlint:enable function_name_whitespace
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum AppUpdateInterval: String {
|
public enum AppUpdateInterval: String {
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ func main() {
|
|||||||
|
|
||||||
let pathComponents = (Bundle.main.bundlePath as NSString).pathComponents
|
let pathComponents = (Bundle.main.bundlePath as NSString).pathComponents
|
||||||
let mainPath = NSString.path(withComponents: Array(pathComponents[0...(pathComponents.count - 5)]))
|
let mainPath = NSString.path(withComponents: Array(pathComponents[0...(pathComponents.count - 5)]))
|
||||||
NSWorkspace.shared.launchApplication(mainPath)
|
NSWorkspace.shared.openApplication(at: NSURL.fileURL(withPath: mainPath), configuration: NSWorkspace.OpenConfiguration(), completionHandler: { _, _ in
|
||||||
|
|
||||||
exit(0)
|
exit(0)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -225,8 +225,6 @@ internal class DevicesReader: Reader<[BLEDevice]>, CBCentralManagerDelegate, CBP
|
|||||||
// MARK: - system_profiler
|
// MARK: - system_profiler
|
||||||
|
|
||||||
private func profilerDevices() -> ([bleDevice], [String]) {
|
private func profilerDevices() -> ([bleDevice], [String]) {
|
||||||
if #unavailable(macOS 11) { return ([], []) }
|
|
||||||
|
|
||||||
guard let res = process(path: "/usr/sbin/system_profiler", arguments: ["SPBluetoothDataType", "-json"]) else {
|
guard let res = process(path: "/usr/sbin/system_profiler", arguments: ["SPBluetoothDataType", "-json"]) else {
|
||||||
return ([], [])
|
return ([], [])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -238,7 +238,6 @@ public class CPU: Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.systemWidgetsUpdatesState {
|
if self.systemWidgetsUpdatesState {
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
if isWidgetActive(self.userDefaults, [CPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
|
if isWidgetActive(self.userDefaults, [CPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
|
||||||
self.userDefaults?.set(blobData, forKey: "CPU@LoadReader")
|
self.userDefaults?.set(blobData, forKey: "CPU@LoadReader")
|
||||||
}
|
}
|
||||||
@@ -247,4 +246,3 @@ public class CPU: Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ public struct CPU_entry: TimelineEntry {
|
|||||||
public var value: CPU_Load? = nil
|
public var value: CPU_Load? = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
|
||||||
public struct Provider: TimelineProvider {
|
public struct Provider: TimelineProvider {
|
||||||
public typealias Entry = CPU_entry
|
public typealias Entry = CPU_entry
|
||||||
|
|
||||||
|
|||||||
@@ -277,11 +277,7 @@ private class CalendarView: NSStackView {
|
|||||||
prev.bezelStyle = .regularSquare
|
prev.bezelStyle = .regularSquare
|
||||||
prev.translatesAutoresizingMaskIntoConstraints = false
|
prev.translatesAutoresizingMaskIntoConstraints = false
|
||||||
prev.imageScaling = .scaleNone
|
prev.imageScaling = .scaleNone
|
||||||
if #available(macOS 11.0, *) {
|
prev.image = iconFromSymbol(name: "arrow.left", scale: .medium)
|
||||||
prev.image = iconFromSymbol(name: "arrow.left", scale: .medium)!
|
|
||||||
} else {
|
|
||||||
prev.title = "<"
|
|
||||||
}
|
|
||||||
prev.contentTintColor = .labelColor
|
prev.contentTintColor = .labelColor
|
||||||
prev.isBordered = false
|
prev.isBordered = false
|
||||||
prev.action = #selector(self.prevMonth)
|
prev.action = #selector(self.prevMonth)
|
||||||
@@ -293,11 +289,7 @@ private class CalendarView: NSStackView {
|
|||||||
next.bezelStyle = .regularSquare
|
next.bezelStyle = .regularSquare
|
||||||
next.translatesAutoresizingMaskIntoConstraints = false
|
next.translatesAutoresizingMaskIntoConstraints = false
|
||||||
next.imageScaling = .scaleNone
|
next.imageScaling = .scaleNone
|
||||||
if #available(macOS 11.0, *) {
|
next.image = iconFromSymbol(name: "arrow.right", scale: .medium)
|
||||||
next.image = iconFromSymbol(name: "arrow.right", scale: .medium)!
|
|
||||||
} else {
|
|
||||||
next.title = ">"
|
|
||||||
}
|
|
||||||
next.contentTintColor = .labelColor
|
next.contentTintColor = .labelColor
|
||||||
next.isBordered = false
|
next.isBordered = false
|
||||||
next.action = #selector(self.nextMonth)
|
next.action = #selector(self.nextMonth)
|
||||||
@@ -719,9 +711,7 @@ private class OrderTableView: NSView, NSTableViewDelegate, NSTableViewDataSource
|
|||||||
self.tableView.registerForDraggedTypes([dragDropType])
|
self.tableView.registerForDraggedTypes([dragDropType])
|
||||||
self.tableView.gridColor = .gridColor
|
self.tableView.gridColor = .gridColor
|
||||||
self.tableView.gridStyleMask = [.solidVerticalGridLineMask, .solidHorizontalGridLineMask]
|
self.tableView.gridStyleMask = [.solidVerticalGridLineMask, .solidHorizontalGridLineMask]
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
self.tableView.style = .plain
|
self.tableView.style = .plain
|
||||||
}
|
|
||||||
|
|
||||||
let nameColumn = NSTableColumn(identifier: nameColumnID)
|
let nameColumn = NSTableColumn(identifier: nameColumnID)
|
||||||
nameColumn.headerCell.title = localizedString("Name")
|
nameColumn.headerCell.title = localizedString("Name")
|
||||||
|
|||||||
@@ -83,9 +83,7 @@ internal class Settings: NSStackView, Settings_v, NSTableViewDelegate, NSTableVi
|
|||||||
self.tableView.allowsColumnResizing = false
|
self.tableView.allowsColumnResizing = false
|
||||||
self.tableView.gridStyleMask = [.solidVerticalGridLineMask, .solidHorizontalGridLineMask]
|
self.tableView.gridStyleMask = [.solidVerticalGridLineMask, .solidHorizontalGridLineMask]
|
||||||
self.tableView.usesAlternatingRowBackgroundColors = true
|
self.tableView.usesAlternatingRowBackgroundColors = true
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
self.tableView.style = .plain
|
self.tableView.style = .plain
|
||||||
}
|
|
||||||
self.tableView.rowHeight = 32
|
self.tableView.rowHeight = 32
|
||||||
|
|
||||||
let nameColumn = NSTableColumn(identifier: nameColumnID)
|
let nameColumn = NSTableColumn(identifier: nameColumnID)
|
||||||
@@ -140,11 +138,7 @@ internal class Settings: NSStackView, Settings_v, NSTableViewDelegate, NSTableVi
|
|||||||
btn.widthAnchor.constraint(equalToConstant: 27).isActive = true
|
btn.widthAnchor.constraint(equalToConstant: 27).isActive = true
|
||||||
btn.heightAnchor.constraint(equalToConstant: 27).isActive = true
|
btn.heightAnchor.constraint(equalToConstant: 27).isActive = true
|
||||||
btn.bezelStyle = .rounded
|
btn.bezelStyle = .rounded
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
btn.image = iconFromSymbol(name: "plus", scale: .medium)
|
btn.image = iconFromSymbol(name: "plus", scale: .medium)
|
||||||
} else {
|
|
||||||
btn.title = localizedString("Add")
|
|
||||||
}
|
|
||||||
btn.action = #selector(self.addNewClock)
|
btn.action = #selector(self.addNewClock)
|
||||||
btn.target = self
|
btn.target = self
|
||||||
btn.toolTip = localizedString("Add new clock")
|
btn.toolTip = localizedString("Add new clock")
|
||||||
@@ -156,11 +150,7 @@ internal class Settings: NSStackView, Settings_v, NSTableViewDelegate, NSTableVi
|
|||||||
btn.widthAnchor.constraint(equalToConstant: 27).isActive = true
|
btn.widthAnchor.constraint(equalToConstant: 27).isActive = true
|
||||||
btn.heightAnchor.constraint(equalToConstant: 27).isActive = true
|
btn.heightAnchor.constraint(equalToConstant: 27).isActive = true
|
||||||
btn.bezelStyle = .rounded
|
btn.bezelStyle = .rounded
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
btn.image = iconFromSymbol(name: "minus", scale: .medium)
|
btn.image = iconFromSymbol(name: "minus", scale: .medium)
|
||||||
} else {
|
|
||||||
btn.title = localizedString("Delete")
|
|
||||||
}
|
|
||||||
btn.action = #selector(self.deleteClock)
|
btn.action = #selector(self.deleteClock)
|
||||||
btn.target = self
|
btn.target = self
|
||||||
btn.toolTip = localizedString("Delete selected clock")
|
btn.toolTip = localizedString("Delete selected clock")
|
||||||
|
|||||||
@@ -339,7 +339,6 @@ public class Disk: Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.systemWidgetsUpdatesState {
|
if self.systemWidgetsUpdatesState {
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
if isWidgetActive(self.userDefaults, [Disk_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(d) {
|
if isWidgetActive(self.userDefaults, [Disk_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(d) {
|
||||||
self.userDefaults?.set(blobData, forKey: "Disk@CapacityReader")
|
self.userDefaults?.set(blobData, forKey: "Disk@CapacityReader")
|
||||||
}
|
}
|
||||||
@@ -347,7 +346,6 @@ public class Disk: Module {
|
|||||||
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
|
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private func activityCallback(_ value: Disks) {
|
private func activityCallback(_ value: Disks) {
|
||||||
guard self.enabled else { return }
|
guard self.enabled else { return }
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ public struct Disk_entry: TimelineEntry {
|
|||||||
public var value: drive? = nil
|
public var value: drive? = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
|
||||||
public struct Provider: TimelineProvider {
|
public struct Provider: TimelineProvider {
|
||||||
public typealias Entry = Disk_entry
|
public typealias Entry = Disk_entry
|
||||||
|
|
||||||
|
|||||||
@@ -194,7 +194,6 @@ public class GPU: Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.systemWidgetsUpdatesState {
|
if self.systemWidgetsUpdatesState {
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
if isWidgetActive(self.userDefaults, [GPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(selectedGPU) {
|
if isWidgetActive(self.userDefaults, [GPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(selectedGPU) {
|
||||||
self.userDefaults?.set(blobData, forKey: "GPU@InfoReader")
|
self.userDefaults?.set(blobData, forKey: "GPU@InfoReader")
|
||||||
}
|
}
|
||||||
@@ -203,4 +202,3 @@ public class GPU: Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ public struct GPU_entry: TimelineEntry {
|
|||||||
public var value: GPU_Info? = nil
|
public var value: GPU_Info? = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
|
||||||
public struct Provider: TimelineProvider {
|
public struct Provider: TimelineProvider {
|
||||||
public typealias Entry = GPU_entry
|
public typealias Entry = GPU_entry
|
||||||
|
|
||||||
|
|||||||
@@ -335,14 +335,12 @@ public class Network: Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.systemWidgetsUpdatesState {
|
if self.systemWidgetsUpdatesState {
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
if isWidgetActive(self.userDefaults, [Network_entry.kind]), let blobData = try? JSONEncoder().encode(raw) {
|
if isWidgetActive(self.userDefaults, [Network_entry.kind]), let blobData = try? JSONEncoder().encode(raw) {
|
||||||
self.userDefaults?.set(blobData, forKey: "Network@UsageReader")
|
self.userDefaults?.set(blobData, forKey: "Network@UsageReader")
|
||||||
}
|
}
|
||||||
WidgetCenter.shared.reloadTimelines(ofKind: Network_entry.kind)
|
WidgetCenter.shared.reloadTimelines(ofKind: Network_entry.kind)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private func connectivityCallback(_ raw: Network_Connectivity?) {
|
private func connectivityCallback(_ raw: Network_Connectivity?) {
|
||||||
guard let value = raw, self.enabled else { return }
|
guard let value = raw, self.enabled else { return }
|
||||||
|
|||||||
@@ -398,7 +398,6 @@ internal class UsageReader: Reader<Network_Usage>, CWEventDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.usage.wifiDetails.ssid == nil || self.usage.wifiDetails.ssid == "" {
|
if self.usage.wifiDetails.ssid == nil || self.usage.wifiDetails.ssid == "" {
|
||||||
if #available(macOS 15, *) {
|
|
||||||
guard let res = process(path: "/usr/sbin/system_profiler", arguments: ["SPAirPortDataType", "-json"]) else {
|
guard let res = process(path: "/usr/sbin/system_profiler", arguments: ["SPAirPortDataType", "-json"]) else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -419,15 +418,6 @@ internal class UsageReader: Reader<Network_Usage>, CWEventDelegate {
|
|||||||
error("error to parse system_profiler SPAirPortDataType: \(err.localizedDescription)")
|
error("error to parse system_profiler SPAirPortDataType: \(err.localizedDescription)")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
let networksetupResponse = syncShell("networksetup -getairportnetwork \(self.interfaceID)")
|
|
||||||
if networksetupResponse.split(separator: "\n").count == 1 {
|
|
||||||
let arr = networksetupResponse.split(separator: ":")
|
|
||||||
if let ssid = arr.last {
|
|
||||||
self.usage.wifiDetails.ssid = ssid.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ public struct Network_entry: TimelineEntry {
|
|||||||
public var value: Network_Usage? = nil
|
public var value: Network_Usage? = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
|
||||||
public struct Provider: TimelineProvider {
|
public struct Provider: TimelineProvider {
|
||||||
public typealias Entry = Network_entry
|
public typealias Entry = Network_entry
|
||||||
|
|
||||||
|
|||||||
@@ -237,7 +237,6 @@ public class RAM: Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.systemWidgetsUpdatesState {
|
if self.systemWidgetsUpdatesState {
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
if isWidgetActive(self.userDefaults, [RAM_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
|
if isWidgetActive(self.userDefaults, [RAM_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
|
||||||
self.userDefaults?.set(blobData, forKey: "RAM@UsageReader")
|
self.userDefaults?.set(blobData, forKey: "RAM@UsageReader")
|
||||||
}
|
}
|
||||||
@@ -246,4 +245,3 @@ public class RAM: Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ public struct RAM_entry: TimelineEntry {
|
|||||||
public var value: RAM_Usage? = nil
|
public var value: RAM_Usage? = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
|
||||||
public struct Provider: TimelineProvider {
|
public struct Provider: TimelineProvider {
|
||||||
public typealias Entry = RAM_entry
|
public typealias Entry = RAM_entry
|
||||||
|
|
||||||
|
|||||||
@@ -1005,12 +1005,8 @@ private class ModeButtons: NSStackView {
|
|||||||
var turboIcon: NSImage = NSImage(named: NSImage.Name("ac_unit"))!
|
var turboIcon: NSImage = NSImage(named: NSImage.Name("ac_unit"))!
|
||||||
var offIcon: NSImage = NSImage(named: NSImage.Name("ac_unit"))!
|
var offIcon: NSImage = NSImage(named: NSImage.Name("ac_unit"))!
|
||||||
if #available(macOS 12.0, *) {
|
if #available(macOS 12.0, *) {
|
||||||
if let icon = iconFromSymbol(name: "snowflake", scale: .large) {
|
turboIcon = iconFromSymbol(name: "snowflake", scale: .large)
|
||||||
turboIcon = icon
|
offIcon = iconFromSymbol(name: "fanblades.slash", scale: .medium)
|
||||||
}
|
|
||||||
if let icon = iconFromSymbol(name: "fanblades.slash", scale: .medium) {
|
|
||||||
offIcon = icon
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.offBtn = NSButton(image: offIcon, target: nil, action: #selector(offMode))
|
self.offBtn = NSButton(image: offIcon, target: nil, action: #selector(offMode))
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ brew install stats
|
|||||||
Legacy version for older systems could be found [here](https://mac-stats.com/downloads).
|
Legacy version for older systems could be found [here](https://mac-stats.com/downloads).
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
Stats is supported on the released macOS version starting from macOS 10.15 (Catalina).
|
Stats is supported on the released macOS version starting from macOS 11.15 (Big Sur).
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
Stats is an application that allows you to monitor your macOS system.
|
Stats is an application that allows you to monitor your macOS system.
|
||||||
|
|||||||
@@ -2450,7 +2450,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Clock;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Clock;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
@@ -2488,7 +2488,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Clock;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Clock;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
@@ -2590,7 +2590,7 @@
|
|||||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/SMC/Helper/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/SMC/Helper/Info.plist";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0.1;
|
MARKETING_VERSION = 1.0.1;
|
||||||
"OTHER_LDFLAGS[arch=*]" = (
|
"OTHER_LDFLAGS[arch=*]" = (
|
||||||
"-sectcreate",
|
"-sectcreate",
|
||||||
@@ -2622,7 +2622,7 @@
|
|||||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/SMC/Helper/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/SMC/Helper/Info.plist";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0.1;
|
MARKETING_VERSION = 1.0.1;
|
||||||
"OTHER_LDFLAGS[arch=*]" = (
|
"OTHER_LDFLAGS[arch=*]" = (
|
||||||
"-sectcreate",
|
"-sectcreate",
|
||||||
@@ -2664,7 +2664,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Bluetooth;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Bluetooth;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -2698,7 +2698,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Bluetooth;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Bluetooth;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -2866,7 +2866,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 2.11.67;
|
MARKETING_VERSION = 2.11.67;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats;
|
||||||
@@ -2903,7 +2903,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 2.11.67;
|
MARKETING_VERSION = 2.11.67;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats;
|
||||||
@@ -2937,7 +2937,7 @@
|
|||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
LIBRARY_SEARCH_PATHS = "$(SRCROOT)/Kit/lldb";
|
LIBRARY_SEARCH_PATHS = "$(SRCROOT)/Kit/lldb";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
OTHER_LDFLAGS = "-w";
|
OTHER_LDFLAGS = "-w";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Kit;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Kit;
|
||||||
@@ -2974,7 +2974,7 @@
|
|||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
LIBRARY_SEARCH_PATHS = "$(SRCROOT)/Kit/lldb";
|
LIBRARY_SEARCH_PATHS = "$(SRCROOT)/Kit/lldb";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
OTHER_LDFLAGS = "-w";
|
OTHER_LDFLAGS = "-w";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Kit;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Kit;
|
||||||
@@ -3007,7 +3007,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.LaunchAtLogin;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.LaunchAtLogin;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3036,7 +3036,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.LaunchAtLogin;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.LaunchAtLogin;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3067,7 +3067,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Net;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Net;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3101,7 +3101,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Net;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Net;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3134,7 +3134,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.RAM;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.RAM;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3168,7 +3168,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.RAM;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.RAM;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3201,7 +3201,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.GPU;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.GPU;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
@@ -3236,7 +3236,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.GPU;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.GPU;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
@@ -3274,7 +3274,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
@@ -3315,7 +3315,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
@@ -3344,7 +3344,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/../Frameworks",
|
"@loader_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = io.serhiy.Stats.Tests;
|
PRODUCT_BUNDLE_IDENTIFIER = io.serhiy.Stats.Tests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3368,7 +3368,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/../Frameworks",
|
"@loader_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = io.serhiy.Stats.Tests;
|
PRODUCT_BUNDLE_IDENTIFIER = io.serhiy.Stats.Tests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3399,7 +3399,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Battery;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Battery;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3433,7 +3433,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Battery;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Battery;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3457,7 +3457,7 @@
|
|||||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/SMC/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/SMC/Info.plist";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.0;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.SMC;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.SMC;
|
||||||
@@ -3481,7 +3481,7 @@
|
|||||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
"DEVELOPMENT_TEAM[sdk=macosx*]" = RP2S87B72W;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/SMC/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/SMC/Info.plist";
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
MARKETING_VERSION = 1.0.0;
|
MARKETING_VERSION = 1.0.0;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.SMC;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.SMC;
|
||||||
@@ -3514,7 +3514,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Sensors;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Sensors;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3549,7 +3549,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Sensors;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Sensors;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3584,7 +3584,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Disk;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Disk;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -3620,7 +3620,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 11.5;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Disk;
|
PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.Disk;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
@@ -280,49 +280,13 @@ private class SidebarView: NSStackView {
|
|||||||
set { Store.shared.set(key: "pause", value: newValue) }
|
set { Store.shared.set(key: "pause", value: newValue) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private var dashboardIcon: NSImage {
|
private var dashboardIcon: NSImage { NSImage(systemSymbolName: "circle.grid.3x3.fill", accessibilityDescription: nil)! }
|
||||||
if #available(macOS 11.0, *), let icon = NSImage(systemSymbolName: "circle.grid.3x3.fill", accessibilityDescription: nil) {
|
private var settingsIcon: NSImage { iconFromSymbol(name: "gear", scale: .large) }
|
||||||
return icon
|
private var bugIcon: NSImage { iconFromSymbol(name: "ladybug", scale: .large) }
|
||||||
}
|
private var supportIcon: NSImage { iconFromSymbol(name: "heart.fill", scale: .large) }
|
||||||
return NSImage(named: NSImage.Name("apps"))!
|
private var pauseIcon: NSImage { iconFromSymbol(name: "pause.fill", scale: .large) }
|
||||||
}
|
private var resumeIcon: NSImage { iconFromSymbol(name: "play.fill", scale: .large) }
|
||||||
private var settingsIcon: NSImage {
|
private var closeIcon: NSImage { iconFromSymbol(name: "power", scale: .large) }
|
||||||
if #available(macOS 11.0, *), let icon = iconFromSymbol(name: "gear", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("settings"))!
|
|
||||||
}
|
|
||||||
|
|
||||||
private var bugIcon: NSImage {
|
|
||||||
if #available(macOS 12.0, *), let icon = iconFromSymbol(name: "ladybug", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("bug"))!
|
|
||||||
}
|
|
||||||
private var supportIcon: NSImage {
|
|
||||||
if #available(macOS 12.0, *), let icon = iconFromSymbol(name: "heart.fill", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("donate"))!
|
|
||||||
}
|
|
||||||
private var pauseIcon: NSImage {
|
|
||||||
if #available(macOS 11.0, *), let icon = iconFromSymbol(name: "pause.fill", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("pause"))!
|
|
||||||
}
|
|
||||||
private var resumeIcon: NSImage {
|
|
||||||
if #available(macOS 11.0, *), let icon = iconFromSymbol(name: "play.fill", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("resume"))!
|
|
||||||
}
|
|
||||||
private var closeIcon: NSImage {
|
|
||||||
if #available(macOS 12.0, *), let icon = iconFromSymbol(name: "power", scale: .large) {
|
|
||||||
return icon
|
|
||||||
}
|
|
||||||
return NSImage(named: NSImage.Name("power"))!
|
|
||||||
}
|
|
||||||
|
|
||||||
override init(frame: NSRect) {
|
override init(frame: NSRect) {
|
||||||
self.scrollView = ScrollableStackView(frame: NSRect(x: 0, y: 0, width: frame.width, height: frame.height))
|
self.scrollView = ScrollableStackView(frame: NSRect(x: 0, y: 0, width: frame.width, height: frame.height))
|
||||||
@@ -362,9 +326,6 @@ private class SidebarView: NSStackView {
|
|||||||
let emptySpace = NSView()
|
let emptySpace = NSView()
|
||||||
emptySpace.heightAnchor.constraint(equalToConstant: 28).isActive = true
|
emptySpace.heightAnchor.constraint(equalToConstant: 28).isActive = true
|
||||||
|
|
||||||
if #unavailable(macOS 11) {
|
|
||||||
self.addArrangedSubview(emptySpace)
|
|
||||||
}
|
|
||||||
self.addArrangedSubview(self.scrollView)
|
self.addArrangedSubview(self.scrollView)
|
||||||
self.addArrangedSubview(additionalButtons)
|
self.addArrangedSubview(additionalButtons)
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ public struct United_entry: TimelineEntry {
|
|||||||
public var disk: Value? = nil
|
public var disk: Value? = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
|
||||||
public struct Provider: TimelineProvider {
|
public struct Provider: TimelineProvider {
|
||||||
public typealias Entry = United_entry
|
public typealias Entry = United_entry
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user