Stumbled on a solution: in the qtile-extras repo, there's a widget that (per documentation) supports multiple batteries: https://qtile-extras.readthedocs.io/en/stable/manual/ref/widgets.html#upowerwidget
I remembered this thread when I saw it, so figured I'd pass it along. I haven't used it myself, but the qtile-extras package is maintained by one of qtile's core developers. On Tue, Nov 1, 2022, 10:27 James Wright <ja...@jameswright.xyz> wrote: > I don't know about hard to have the feature, but the steps I would > probably do (going off of `widget/battery.py` in the repository) is to: > > 1) Create a `class _MultipleBatteries(_Battery)` class for multiple > batteries, which would take as input a list of battery config dictionaries > and a function that takes in a list of `BatteryStatus` objects and returns > some "average" of them as a new `BatteryStatus` object. This latter > function would effectively set the `update_status` method for > `_MultipleBatteries`. > 2) edit `load_battery` so that it will correctly return the correct > `_Battery` object. > > So pseudo code: > > def load_battery(**config) -> _Battery: > """Default battery loading function > > Loads and returns the _Battery interface suitable for the current > running > platform. > > Parameters > ---------- > config: Dictionary of config options that are passed to the generated > battery. > > Return > ------ > The configured _Battery for the current platform. > """ > system = platform.system() > > + if 'batteries' in config.keys(): > + return _MultipleBatteres(**config) > ~ elif system == "FreeBSD": > return _FreeBSDBattery(str(config["battery"])) > elif system == "Linux": > return _LinuxBattery(**config) > else: > raise RuntimeError("Unknown platform!") > > + class _MultipleBatteries(_Battery): > + > + def __init__(self, config: dict) -> None: > + self.battery_function: Callable[List[BatteryStatus], > BatteryStatus] = config['battery_function'] > + self.batteries = [] > + for bat in config['batteries']: > + self.batteries.append(load_battery(**bat)) > + > + def update_status(self): > + statuses = [] > + for battery in self.batteries: > + statuses.append(battery.update_status) > + return self.battery_function(statuses) > > Unfortunately I don't have time to tackle this myself, but hopefully this > will provide enough info for someone to be able to implement and test it. > > > > On Sun, Oct 30, 2022 at 10:32 AM Sniki <besnik.n.rrust...@gmail.com> > wrote: > >> Hi everyone, a happy Qtile user here with (i think) the last remaining >> problem not solved. >> I have a Lenovo ThinkPad X240 which does have two batteries (internal & >> external) >> I have setup the wiget.battery the way i want to but it only can show >> informations for one of the batteries (BAT0 or BAT1). >> >> Is it hard to have a feature on battery widget to support multiple >> batteries (merge percentage and time remaining from both batteries into >> one). >> >> Possible current workarounds: >> 1. Forced to use two battery widgets but it bloats the bar and not much >> space left for it anyway and having to check both of them is kinda >> exhausting may i say. >> 2. Create a script for that (heard people saying it's possible with some >> math/logic) but that is out of my current knowledge level (awk/grep/cat or >> whatever) so i am not able to do that myself. >> >> config: >> https://gitlab.com/Sniki/dotfiles/-/blob/master/.config/qtile/config.py >> >> Thanks ! >> >> >> >> >> >> config: >> >> -- >> You received this message because you are subscribed to the Google Groups >> "qtile-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to qtile-dev+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/qtile-dev/1055a620-598a-454e-bc72-f41b63e89bden%40googlegroups.com >> <https://groups.google.com/d/msgid/qtile-dev/1055a620-598a-454e-bc72-f41b63e89bden%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "qtile-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to qtile-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/qtile-dev/CAHErDQh9k4y-Pdnb%3Dk8ODNJT-6Lz0WciE1Ve-0BJx3OWjVTWYw%40mail.gmail.com.