Add Battery Icon To Taskbar [better] May 2026

// Run the app let app = NSApplication.shared let delegate = AppDelegate() app.delegate = delegate app.run() # For Python versions pip install psutil pillow pystray For Linux GTK version sudo apt-get install python3-gi gir1.2-appindicator3-0.1 For macOS, Swift is built-in Quick Windows Registry Fix Save as enable_battery.reg :

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()

// App delegate class AppDelegate: NSObject, NSApplicationDelegate private var batteryStatusItem: BatteryStatusItem? add battery icon to taskbar

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()

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 // Run the app let app = NSApplication

override init() super.init() setupStatusItem() startMonitoring()

def create_menu(self): # Battery percentage item percent_item = Gtk.MenuItem(label="Battery Percentage: --%") percent_item.set_sensitive(False) self.menu.append(percent_item) # Status item status_item = Gtk.MenuItem(label="Status: --") status_item.set_sensitive(False) self.menu.append(status_item) # Separator separator = Gtk.SeparatorMenuItem() self.menu.append(separator) # Quit item quit_item = Gtk.MenuItem(label="Quit") quit_item.connect("activate", self.quit) self.menu.append(quit_item) self.menu.show_all() self.exit_app) ) self.icon = pystray.Icon("battery"

def create_battery_icon(self, percent, is_charging): # Create icon image size = 64 image = Image.new('RGBA', (size, size), (0, 0, 0, 0)) draw = ImageDraw.Draw(image) # Battery outline draw.rectangle( [(8, 20), (56, 44)], outline='white', width=2 ) # Battery terminal draw.rectangle( [(56, 28), (60, 36)], fill='white' ) # Battery level fill_width = int(48 * (percent / 100)) draw.rectangle( [(10, 22), (10 + fill_width, 42)], fill='#00ff00' if percent > 20 else '#ff0000' ) # Charging indicator if is_charging: draw.line([(28, 12), (36, 12)], fill='#00ff00', width=2) draw.line([(32, 12), (32, 20)], fill='#00ff00', width=2) return image