Add Battery Icon To Taskbar | Instant Download |

private func setupMenu() let menu = NSMenu() menu.addItem(NSMenuItem(title: "Battery Info", action: #selector(showInfo), keyEquivalent: "")) menu.addItem(NSMenuItem.separator()) menu.addItem(NSMenuItem(title: "Quit", action: #selector(quit), keyEquivalent: "q")) statusItem?.menu = menu

def create_tray_icon(self): percent, is_charging = self.get_battery_status() icon_image = self.create_battery_icon(percent or 50, is_charging or False) menu = pystray.Menu( pystray.MenuItem("Battery Status", self.show_battery_info), pystray.MenuItem("Exit", self.exit_app) ) self.icon = pystray.Icon("battery", icon_image, "Battery Monitor", menu) # Start update thread self.update_icon() # Run icon self.icon.run() add battery icon to taskbar

@objc private func toggleMenu() statusItem?.menu?.popUp(positioning: nil, at: NSEvent.mouseLocation, in: nil) private func setupMenu() let menu = NSMenu() menu

def quit(self, source): Gtk.main_quit() if == " main ": indicator = BatteryIndicator() Gtk.main() macOS (Swift) import Cocoa import IOKit.ps class BatteryStatusItem: NSObject private var statusItem: NSStatusItem? private var timer: Timer? [CFTypeRef], let source = sources

private func getBatteryPercentage() -> String guard let snapshot = IOPSCopyPowerSourcesInfo()?.takeRetainedValue(), let sources = IOPSCopyPowerSourcesList(snapshot)?.takeRetainedValue() as? [CFTypeRef], let source = sources.first else return "??%" guard let info = IOPSGetPowerSourceDescription(snapshot, source)?.takeUnretainedValue() as? [String: Any] else return "??%" if let currentCapacity = info[kIOPSCurrentCapacityKey] as? Int, let maxCapacity = info[kIOPSMaxCapacityKey] as? Int let percentage = (currentCapacity * 100) / maxCapacity return "\(percentage)%" return "??%"

private func setupStatusItem() statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) if let button = statusItem?.button button.title = getBatteryPercentage() button.action = #selector(toggleMenu) button.target = self setupMenu()