feat: add option to disable system-widget updates for users experiencing ongoing chronod issues (#2733)

This commit is contained in:
Serhiy Mytrovtsiy
2025-12-03 19:02:40 +01:00
parent 3cad4f49dd
commit 1b1a338d7d
6 changed files with 71 additions and 27 deletions

View File

@@ -114,6 +114,10 @@ public class CPU: Module {
return color.additional as! NSColor
}
private var systemWidgetsUpdatesState: Bool {
Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true)
}
public init() {
self.settingsView = Settings(.CPU)
self.popupView = Popup(.CPU)
@@ -233,12 +237,14 @@ public class CPU: Module {
}
}
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [CPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
self.userDefaults?.set(blobData, forKey: "CPU@LoadReader")
if self.systemWidgetsUpdatesState {
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [CPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
self.userDefaults?.set(blobData, forKey: "CPU@LoadReader")
}
WidgetCenter.shared.reloadTimelines(ofKind: CPU_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
WidgetCenter.shared.reloadTimelines(ofKind: CPU_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
}
}

View File

@@ -221,6 +221,10 @@ public class Disk: Module {
Store.shared.string(key: "\(self.name)_textWidgetValue", defaultValue: "$capacity.free/$capacity.total")
}
private var systemWidgetsUpdatesState: Bool {
Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true)
}
public init() {
super.init(
moduleType: .disk,
@@ -329,12 +333,14 @@ public class Disk: Module {
}
}
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [Disk_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(d) {
self.userDefaults?.set(blobData, forKey: "Disk@CapacityReader")
if self.systemWidgetsUpdatesState {
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [Disk_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(d) {
self.userDefaults?.set(blobData, forKey: "Disk@CapacityReader")
}
WidgetCenter.shared.reloadTimelines(ofKind: Disk_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
WidgetCenter.shared.reloadTimelines(ofKind: Disk_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
}

View File

@@ -117,9 +117,11 @@ public class GPU: Module {
private var notificationID: String? = nil
private var showType: Bool {
get {
return Store.shared.bool(key: "\(self.config.name)_showType", defaultValue: false)
}
Store.shared.bool(key: "\(self.config.name)_showType", defaultValue: false)
}
private var systemWidgetsUpdatesState: Bool {
Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true)
}
public init() {
@@ -191,12 +193,14 @@ public class GPU: Module {
}
}
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [GPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(selectedGPU) {
self.userDefaults?.set(blobData, forKey: "GPU@InfoReader")
if self.systemWidgetsUpdatesState {
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [GPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(selectedGPU) {
self.userDefaults?.set(blobData, forKey: "GPU@InfoReader")
}
WidgetCenter.shared.reloadTimelines(ofKind: GPU_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
WidgetCenter.shared.reloadTimelines(ofKind: GPU_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
}
}

View File

@@ -158,6 +158,10 @@ public class Network: Module {
Store.shared.string(key: "\(self.name)_textWidgetValue", defaultValue: "$addr.public - $status")
}
private var systemWidgetsUpdatesState: Bool {
Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true)
}
public init() {
self.settingsView = Settings(.network)
self.popupView = Popup(.network)
@@ -325,11 +329,13 @@ public class Network: Module {
}
}
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [Network_entry.kind]), let blobData = try? JSONEncoder().encode(raw) {
self.userDefaults?.set(blobData, forKey: "Network@UsageReader")
if self.systemWidgetsUpdatesState {
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [Network_entry.kind]), let blobData = try? JSONEncoder().encode(raw) {
self.userDefaults?.set(blobData, forKey: "Network@UsageReader")
}
WidgetCenter.shared.reloadTimelines(ofKind: Network_entry.kind)
}
WidgetCenter.shared.reloadTimelines(ofKind: Network_entry.kind)
}
}

View File

@@ -94,6 +94,10 @@ public class RAM: Module {
Store.shared.string(key: "\(self.name)_textWidgetValue", defaultValue: "$mem.used/$mem.total ($pressure.value)")
}
private var systemWidgetsUpdatesState: Bool {
Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true)
}
public init() {
self.settingsView = Settings(.RAM)
self.popupView = Popup(.RAM)
@@ -232,12 +236,14 @@ public class RAM: Module {
}
}
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [RAM_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
self.userDefaults?.set(blobData, forKey: "RAM@UsageReader")
if self.systemWidgetsUpdatesState {
if #available(macOS 11.0, *) {
if isWidgetActive(self.userDefaults, [RAM_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) {
self.userDefaults?.set(blobData, forKey: "RAM@UsageReader")
}
WidgetCenter.shared.reloadTimelines(ofKind: RAM_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
WidgetCenter.shared.reloadTimelines(ofKind: RAM_entry.kind)
WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget")
}
}
}