From 1ace3ef4f4cc90520d5607fde073e6cd1b66d56a Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Mon, 10 Jan 2022 18:33:32 -0500 Subject: [PATCH] ui: hide system tray icon when there are no devices to control --- lib/solaar/ui/tray.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/solaar/ui/tray.py b/lib/solaar/ui/tray.py index 986fcbbf..e488f8c3 100644 --- a/lib/solaar/ui/tray.py +++ b/lib/solaar/ui/tray.py @@ -197,9 +197,12 @@ try: return ind - def _destroy(indicator): + def _hide(indicator): indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE) + def _show(indicator): + indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE) + def _update_tray_icon(): if _picked_device and gtk.battery_icons_style != 'solaar': _ignore, _ignore, name, device_status = _picked_device @@ -246,9 +249,12 @@ except ImportError: return icon - def _destroy(icon): + def _hide(icon): icon.set_visible(False) + def _show(icon): + icon.set_visible(True) + def _update_tray_icon(): tooltip_lines = _generate_tooltip_lines() tooltip = '\n'.join(tooltip_lines).rstrip('\n') @@ -463,13 +469,14 @@ def init(_quit_handler): _menu = _create_menu(_quit_handler) assert _icon is None _icon = _create(_menu) + update() def destroy(): global _icon, _menu, _devices_info if _icon is not None: i, _icon = _icon, None - _destroy(i) + _hide(i) i = None _icon = None @@ -525,3 +532,9 @@ def update(device=None): _picked_device = _pick_device_with_lowest_battery() _update_tray_icon() + + if _icon: + if not _devices_info: + _hide(_icon) + else: + _show(_icon)