From 52d21619bf4e9668c42ec431ff75c388f40f3ca1 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Sat, 14 Feb 2026 18:39:49 +0100 Subject: [PATCH] feat: changed the default value of `macOS widgets` to disabled to prevent heavy load on some systems, and added information text to the widgets (#2733) --- Modules/CPU/main.swift | 2 +- Modules/CPU/widget.swift | 10 +++++++++- Modules/Disk/main.swift | 2 +- Modules/GPU/main.swift | 2 +- Modules/Net/main.swift | 2 +- Modules/RAM/main.swift | 2 +- Stats/Views/AppSettings.swift | 12 +++++++++--- 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Modules/CPU/main.swift b/Modules/CPU/main.swift index ddb229b5..5ffa333c 100644 --- a/Modules/CPU/main.swift +++ b/Modules/CPU/main.swift @@ -115,7 +115,7 @@ public class CPU: Module { } private var systemWidgetsUpdatesState: Bool { - Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + self.userDefaults?.bool(forKey: "systemWidgetsUpdates_state") ?? false } public init() { diff --git a/Modules/CPU/widget.swift b/Modules/CPU/widget.swift index c913ddf3..2d8026af 100644 --- a/Modules/CPU/widget.swift +++ b/Modules/CPU/widget.swift @@ -30,6 +30,10 @@ public struct Provider: TimelineProvider { private let userDefaults: UserDefaults? = UserDefaults(suiteName: "\(Bundle.main.object(forInfoDictionaryKey: "TeamId") as! String).eu.exelban.Stats.widgets") + public var systemWidgetsUpdatesState: Bool { + self.userDefaults?.bool(forKey: "systemWidgetsUpdates_state") ?? false + } + public func placeholder(in context: Context) -> CPU_entry { CPU_entry() } @@ -60,7 +64,7 @@ public struct CPUWidget: Widget { public var body: some WidgetConfiguration { StaticConfiguration(kind: CPU_entry.kind, provider: Provider()) { entry in VStack(spacing: 10) { - if let value = entry.value { + if Provider().systemWidgetsUpdatesState, let value = entry.value { HStack { Chart { SectorMark(angle: .value(localizedString("System"), value.systemLoad), innerRadius: .ratio(0.8)).foregroundStyle(self.systemColor) @@ -97,6 +101,10 @@ public struct CPUWidget: Widget { Text("\(Int(value.userLoad*100))%") } } + } else if !Provider().systemWidgetsUpdatesState { + Text("Enable in Settings") + .font(.system(size: 12, weight: .regular)) + .foregroundColor(.secondary) } else { Text("No data") } diff --git a/Modules/Disk/main.swift b/Modules/Disk/main.swift index 72656ae1..0f1ba66a 100644 --- a/Modules/Disk/main.swift +++ b/Modules/Disk/main.swift @@ -222,7 +222,7 @@ public class Disk: Module { } private var systemWidgetsUpdatesState: Bool { - Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + self.userDefaults?.bool(forKey: "systemWidgetsUpdates_state") ?? false } public init() { diff --git a/Modules/GPU/main.swift b/Modules/GPU/main.swift index 536ae9db..2cbcf14a 100644 --- a/Modules/GPU/main.swift +++ b/Modules/GPU/main.swift @@ -121,7 +121,7 @@ public class GPU: Module { } private var systemWidgetsUpdatesState: Bool { - Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + self.userDefaults?.bool(forKey: "systemWidgetsUpdates_state") ?? false } public init() { diff --git a/Modules/Net/main.swift b/Modules/Net/main.swift index 9c1b05e6..e71094e7 100644 --- a/Modules/Net/main.swift +++ b/Modules/Net/main.swift @@ -164,7 +164,7 @@ public class Network: Module { } private var systemWidgetsUpdatesState: Bool { - Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + self.userDefaults?.bool(forKey: "systemWidgetsUpdates_state") ?? false } public init() { diff --git a/Modules/RAM/main.swift b/Modules/RAM/main.swift index 6d41d7c6..ae0160f4 100644 --- a/Modules/RAM/main.swift +++ b/Modules/RAM/main.swift @@ -95,7 +95,7 @@ public class RAM: Module { } private var systemWidgetsUpdatesState: Bool { - Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + self.userDefaults?.bool(forKey: "systemWidgetsUpdates_state") ?? false } public init() { diff --git a/Stats/Views/AppSettings.swift b/Stats/Views/AppSettings.swift index c0ef77e2..2faddc65 100644 --- a/Stats/Views/AppSettings.swift +++ b/Stats/Views/AppSettings.swift @@ -40,8 +40,14 @@ class ApplicationSettings: NSStackView { } private var systemWidgetsUpdatesState: Bool { - get { Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) } - set { Store.shared.set(key: "systemWidgetsUpdates_state", value: newValue) } + get { + let userDefaults = UserDefaults(suiteName: "\(Bundle.main.object(forInfoDictionaryKey: "TeamId") as! String).eu.exelban.Stats.widgets") + return userDefaults?.bool(forKey: "systemWidgetsUpdates_state") ?? false + } + set { + let userDefaults = UserDefaults(suiteName: "\(Bundle.main.object(forInfoDictionaryKey: "TeamId") as! String).eu.exelban.Stats.widgets") + userDefaults?.set(newValue, forKey: "systemWidgetsUpdates_state") + } } private var updateSelector: NSPopUpButton? @@ -103,7 +109,7 @@ class ApplicationSettings: NSStackView { ])) scrollView.stackView.addArrangedSubview(PreferencesSection([ - PreferencesRow(localizedString("System widgets updates"), component: switchView( + PreferencesRow(localizedString("macOS widgets"), component: switchView( action: #selector(self.toggleSystemWidgetsUpdatesState), state: self.systemWidgetsUpdatesState ))