!7 cmodule BatteryTrayIcon > DynPrintLog { transient S value; transient JLabel lbl; transient bool _startMinimized = true; switchable double interval = 10.0; // restart to take effect transient double level; start { dm_addTrayIcon(onLeftClick(rThreadEnter dm_showModule, lbl = dm_fieldLabel_noAutoToolTip value())); doEveryAndNow(interval, r actualUpdate); dm_registerAs_direct batteryLevel(); } void actualUpdate { S value = "-"; level = oshi_batteryLevel_withZeroPercentFix(); if (!isNaN(level)) value = iround(level) + "%"; if (set_trueIfChanged(this, +value)) fireChangeWithoutPersisting(); toolTip(lbl, "Battery level: " + value); } }