Add Battery Icon To Taskbar ((hot)) May 2026

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?

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

self.menu = Gtk.Menu() self.create_menu() self.indicator.set_menu(self.menu) self.update_icon() def get_battery_info(self): battery = psutil.sensors_battery() if battery: percent = battery.percent is_charging = battery.power_plugged return percent, is_charging return None, None def quit(self, source): Gtk

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() self.exit_app) ) self.icon = pystray.Icon("battery"

def exit_app(self): if self.icon: self.icon.stop() if == " main ": BatteryTrayIcon() Linux (GTK) #!/usr/bin/env python3 import gi gi.require_version('Gtk', '3.0') gi.require_version('AppIndicator3', '0.1') from gi.repository import Gtk, AppIndicator3 import psutil import threading import time class BatteryIndicator: def init (self): self.indicator = AppIndicator3.Indicator.new( "battery-indicator", "battery-full", AppIndicator3.IndicatorCategory.SYSTEM_SERVICES ) self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)

def update_icon(self): percent, is_charging = self.get_battery_info() if percent is not None: icon_name = self.get_icon_name(percent, is_charging) self.indicator.set_icon(icon_name) # Update menu items for item in self.menu.get_children(): if item.get_label() == "Battery Percentage": item.set_label(f"Battery Percentage: percent%") elif item.get_label() == "Status": status = "Charging" if is_charging else "Discharging" item.set_label(f"Status: status") # Update every minute threading.Timer(60, self.update_icon).start()