diff --git a/DynamicIsland/managers/BatteryActivityManager.swift b/DynamicIsland/managers/BatteryActivityManager.swift index 61b1c66..17bc024 100644 --- a/DynamicIsland/managers/BatteryActivityManager.swift +++ b/DynamicIsland/managers/BatteryActivityManager.swift @@ -304,6 +304,14 @@ class BatteryActivityManager { } } + /// Determines if the device has a battery + /// - Returns: True if the computer has a battery, false otherwhise + func hasBattery() -> Bool { + guard let snapshot = IOPSCopyPowerSourcesInfo()?.takeRetainedValue() else { return false } + guard let sources = IOPSCopyPowerSourcesList(snapshot)?.takeRetainedValue() as? [CFTypeRef] else { return false } + return !sources.isEmpty + } + deinit { stopMonitoring() NotificationCenter.default.removeObserver(self) diff --git a/DynamicIsland/models/Constants.swift b/DynamicIsland/models/Constants.swift index 4d6dc3d..41cd135 100644 --- a/DynamicIsland/models/Constants.swift +++ b/DynamicIsland/models/Constants.swift @@ -483,7 +483,7 @@ extension Defaults.Keys { // MARK: Battery static let showPowerStatusNotifications = Key("showPowerStatusNotifications", default: true) - static let showBatteryIndicator = Key("showBatteryIndicator", default: true) + static let showBatteryIndicator = Key("showBatteryIndicator", default: BatteryActivityManager.shared.hasBattery()) static let showBatteryPercentage = Key("showBatteryPercentage", default: true) static let showPowerStatusIcons = Key("showPowerStatusIcons", default: true) static let playLowBatteryAlertSound = Key("playLowBatteryAlertSound", default: true)