Skip to content

Commit cd475c1

Browse files
committed
Allow to show/hide units for text sensors from theme
1 parent 84e77d3 commit cd475c1

File tree

1 file changed

+99
-36
lines changed

1 file changed

+99
-36
lines changed

library/stats.py

Lines changed: 99 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,13 @@ def percentage():
5656
# logger.debug(f"CPU Percentage: {cpu_percentage}")
5757

5858
if THEME_DATA['STATS']['CPU']['PERCENTAGE']['TEXT'].get("SHOW", False):
59+
60+
cpu_percentage_text = f"{int(cpu_percentage):>3}"
61+
if THEME_DATA['STATS']['CPU']['PERCENTAGE']['TEXT'].get("SHOW_UNIT", True):
62+
cpu_percentage_text += "%"
63+
5964
display.lcd.DisplayText(
60-
text=f"{int(cpu_percentage):>3}%",
65+
text=cpu_percentage_text,
6166
x=THEME_DATA['STATS']['CPU']['PERCENTAGE']['TEXT'].get("X", 0),
6267
y=THEME_DATA['STATS']['CPU']['PERCENTAGE']['TEXT'].get("Y", 0),
6368
font=THEME_DATA['STATS']['CPU']['PERCENTAGE']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
@@ -90,11 +95,14 @@ def percentage():
9095

9196
@staticmethod
9297
def frequency():
93-
cpu_freq = sensors.Cpu.frequency()
94-
9598
if THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("SHOW", False):
99+
100+
cpu_freq = f'{int(sensors.Cpu.frequency()) / 1000:.2f}'
101+
if THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("SHOW_UNIT", True):
102+
cpu_freq += " GHz"
103+
96104
display.lcd.DisplayText(
97-
text=str(f'{int(cpu_freq) / 1000:.2f}') + " GHz",
105+
text=cpu_freq,
98106
x=THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("X", 0),
99107
y=THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("Y", 0),
100108
font=THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
@@ -113,8 +121,13 @@ def load():
113121
# logger.debug(f"CPU Load: ({cpu_load[0]},{cpu_load[1]},{cpu_load[2]})")
114122

115123
if THEME_DATA['STATS']['CPU']['LOAD']['ONE']['TEXT'].get("SHOW", False):
124+
125+
cpu_load_one = f"{int(cpu_load[0]):>3}"
126+
if THEME_DATA['STATS']['CPU']['LOAD']['ONE']['TEXT'].get("SHOW_UNIT", True):
127+
cpu_load_one += "%"
128+
116129
display.lcd.DisplayText(
117-
text=f"{int(cpu_load[0]):>3}%",
130+
text=cpu_load_one,
118131
x=THEME_DATA['STATS']['CPU']['LOAD']['ONE']['TEXT'].get("X", 0),
119132
y=THEME_DATA['STATS']['CPU']['LOAD']['ONE']['TEXT'].get("Y", 0),
120133
font=THEME_DATA['STATS']['CPU']['LOAD']['ONE']['TEXT'].get("FONT",
@@ -129,8 +142,13 @@ def load():
129142
)
130143

131144
if THEME_DATA['STATS']['CPU']['LOAD']['FIVE']['TEXT'].get("SHOW", False):
145+
146+
cpu_load_five = f"{int(cpu_load[1]):>3}"
147+
if THEME_DATA['STATS']['CPU']['LOAD']['FIVE']['TEXT'].get("SHOW_UNIT", True):
148+
cpu_load_five += "%"
149+
132150
display.lcd.DisplayText(
133-
text=f"{int(cpu_load[1]):>3}%",
151+
text=cpu_load_five,
134152
x=THEME_DATA['STATS']['CPU']['LOAD']['FIVE']['TEXT'].get("X", 0),
135153
y=THEME_DATA['STATS']['CPU']['LOAD']['FIVE']['TEXT'].get("Y", 0),
136154
font=THEME_DATA['STATS']['CPU']['LOAD']['FIVE']['TEXT'].get("FONT",
@@ -145,8 +163,13 @@ def load():
145163
)
146164

147165
if THEME_DATA['STATS']['CPU']['LOAD']['FIFTEEN']['TEXT'].get("SHOW", False):
166+
167+
cpu_load_fifteen = f"{int(cpu_load[2]):>3}"
168+
if THEME_DATA['STATS']['CPU']['LOAD']['FIFTEEN']['TEXT'].get("SHOW_UNIT", True):
169+
cpu_load_fifteen += "%"
170+
148171
display.lcd.DisplayText(
149-
text=f"{int(cpu_load[2]):>3}%",
172+
text=cpu_load_fifteen,
150173
x=THEME_DATA['STATS']['CPU']['LOAD']['FIFTEEN']['TEXT'].get("X", 0),
151174
y=THEME_DATA['STATS']['CPU']['LOAD']['FIFTEEN']['TEXT'].get("Y", 0),
152175
font=THEME_DATA['STATS']['CPU']['LOAD']['FIFTEEN']['TEXT'].get("FONT",
@@ -166,11 +189,14 @@ def is_temperature_available():
166189

167190
@staticmethod
168191
def temperature():
169-
cpu_temp = sensors.Cpu.temperature()
170-
171192
if THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("SHOW", False):
193+
194+
cpu_temp = f"{int(sensors.Cpu.temperature()):>3}"
195+
if THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("SHOW_UNIT", True):
196+
cpu_temp += "°C"
197+
172198
display.lcd.DisplayText(
173-
text=f"{int(cpu_temp):>3}°C",
199+
text=cpu_temp,
174200
x=THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("X", 0),
175201
y=THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("Y", 0),
176202
font=THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("FONT",
@@ -216,8 +242,12 @@ def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature):
216242
THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH']['SHOW'] = False
217243
THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT']['SHOW'] = False
218244
else:
245+
load_text = f"{int(load):>3}"
246+
if THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("SHOW_UNIT", True):
247+
load_text += "%"
248+
219249
display.lcd.DisplayText(
220-
text=f"{int(load):>3}%",
250+
text=load_text,
221251
x=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("X", 0),
222252
y=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("Y", 0),
223253
font=THEME_DATA['STATS']['GPU']['PERCENTAGE']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
@@ -245,7 +275,7 @@ def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature):
245275
max_value=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("MAX_VALUE", 100),
246276
bar_color=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BAR_COLOR", (0, 0, 0)),
247277
bar_outline=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BAR_OUTLINE", False),
248-
background_color=THEME_DATA['STATS']['GPU']['PERCENTAGE']['GRAPH'].get("BACKGROUND_COLOR",
278+
background_color=THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BACKGROUND_COLOR",
249279
(255, 255, 255)),
250280
background_image=get_full_path(THEME_DATA['PATH'],
251281
THEME_DATA['STATS']['GPU']['MEMORY']['GRAPH'].get("BACKGROUND_IMAGE",
@@ -257,8 +287,12 @@ def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature):
257287
logger.warning("Your GPU memory absolute usage (M) is not supported yet")
258288
THEME_DATA['STATS']['GPU']['MEMORY']['TEXT']['SHOW'] = False
259289
else:
290+
mem_used_text = f"{int(memory_used_mb):>5}"
291+
if THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("SHOW_UNIT", True):
292+
mem_used_text += " M"
293+
260294
display.lcd.DisplayText(
261-
text=f"{int(memory_used_mb):>5} M",
295+
text=mem_used_text,
262296
x=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("X", 0),
263297
y=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("Y", 0),
264298
font=THEME_DATA['STATS']['GPU']['MEMORY']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
@@ -275,8 +309,12 @@ def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature):
275309
logger.warning("Your GPU temperature is not supported yet")
276310
THEME_DATA['STATS']['GPU']['TEMPERATURE']['TEXT']['SHOW'] = False
277311
else:
312+
temp_text = f"{int(temperature):>3}"
313+
if THEME_DATA['STATS']['GPU']['TEMPERATURE']['TEXT'].get("SHOW_UNIT", True):
314+
temp_text += "°C"
315+
278316
display.lcd.DisplayText(
279-
text=f"{int(temperature):>3}°C",
317+
text=temp_text,
280318
x=THEME_DATA['STATS']['GPU']['TEMPERATURE']['TEXT'].get("X", 0),
281319
y=THEME_DATA['STATS']['GPU']['TEMPERATURE']['TEXT'].get("Y", 0),
282320
font=THEME_DATA['STATS']['GPU']['TEMPERATURE']['TEXT'].get("FONT",
@@ -289,7 +327,6 @@ def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature):
289327
THEME_DATA['STATS']['GPU']['TEMPERATURE']['TEXT'].get("BACKGROUND_IMAGE",
290328
None))
291329
)
292-
pass
293330

294331

295332
class Gpu:
@@ -347,8 +384,12 @@ def stats():
347384
)
348385

349386
if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['PERCENT_TEXT'].get("SHOW", False):
387+
virtual_percent_text = f"{int(virtual_percent):>3}"
388+
if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['PERCENT_TEXT'].get("SHOW_UNIT", True):
389+
virtual_percent_text += "%"
390+
350391
display.lcd.DisplayText(
351-
text=f"{int(virtual_percent):>3}%",
392+
text=virtual_percent_text,
352393
x=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['PERCENT_TEXT'].get("X", 0),
353394
y=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['PERCENT_TEXT'].get("Y", 0),
354395
font=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['PERCENT_TEXT'].get("FONT",
@@ -362,11 +403,15 @@ def stats():
362403
"BACKGROUND_IMAGE", None))
363404
)
364405

365-
virtual_used = sensors.Memory.virtual_used()
366-
367406
if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("SHOW", False):
407+
virtual_used = sensors.Memory.virtual_used()
408+
409+
virtual_used_text = f"{int(virtual_used / 1000000):>5}"
410+
if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("SHOW_UNIT", True):
411+
virtual_used_text += " M"
412+
368413
display.lcd.DisplayText(
369-
text=f"{int(virtual_used / 1000000):>5} M",
414+
text=virtual_used_text,
370415
x=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("X", 0),
371416
y=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("Y", 0),
372417
font=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("FONT",
@@ -380,11 +425,15 @@ def stats():
380425
"BACKGROUND_IMAGE", None))
381426
)
382427

383-
virtual_free = sensors.Memory.virtual_free()
384-
385428
if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("SHOW", False):
429+
virtual_free = sensors.Memory.virtual_free()
430+
431+
virtual_free_text = f"{int(virtual_free / 1000000):>5}"
432+
if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("SHOW_UNIT", True):
433+
virtual_free_text += " M"
434+
386435
display.lcd.DisplayText(
387-
text=f"{int(virtual_free / 1000000):>5} M",
436+
text=virtual_free_text,
388437
x=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("X", 0),
389438
y=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("Y", 0),
390439
font=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("FONT",
@@ -422,8 +471,12 @@ def stats():
422471
)
423472

424473
if THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("SHOW", False):
474+
used_text = f"{int(used / 1000000000):>5}"
475+
if THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("SHOW_UNIT", True):
476+
used_text += " G"
477+
425478
display.lcd.DisplayText(
426-
text=f"{int(used / 1000000000):>5} G",
479+
text=used_text,
427480
x=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("X", 0),
428481
y=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("Y", 0),
429482
font=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
@@ -436,8 +489,12 @@ def stats():
436489
)
437490

438491
if THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("SHOW", False):
492+
percent_text = f"{int(sensors.Disk.disk_usage_percent()):>3}"
493+
if THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("SHOW_UNIT", True):
494+
percent_text += "%"
495+
439496
display.lcd.DisplayText(
440-
text=f"{int(sensors.Disk.disk_usage_percent()):>3}%",
497+
text=percent_text,
441498
x=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("X", 0),
442499
y=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("Y", 0),
443500
font=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("FONT",
@@ -453,8 +510,12 @@ def stats():
453510
)
454511

455512
if THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("SHOW", False):
513+
total_text = f"{int((free + used) / 1000000000):>5}"
514+
if THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("SHOW_UNIT", True):
515+
total_text += " G"
516+
456517
display.lcd.DisplayText(
457-
text=f"{int((free + used) / 1000000000):>5} G",
518+
text=total_text,
458519
x=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("X", 0),
459520
y=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("Y", 0),
460521
font=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
@@ -467,8 +528,12 @@ def stats():
467528
)
468529

469530
if THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("SHOW", False):
531+
free_text = f"{int(free / 1000000000):>5}"
532+
if THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("SHOW_UNIT", True):
533+
free_text += " G"
534+
470535
display.lcd.DisplayText(
471-
text=f"{int(free / 1000000000):>5} G",
536+
text=free_text,
472537
x=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("X", 0),
473538
y=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("Y", 0),
474539
font=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"),
@@ -487,12 +552,8 @@ def stats():
487552
interval = THEME_DATA['STATS']['CPU']['PERCENTAGE'].get("INTERVAL", None)
488553
upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo = sensors.Net.stats(WLO_CARD, interval)
489554

490-
upload_wlo_text = f"{bytes2human(upload_wlo)}/s"
491-
uploaded_wlo_text = f"{bytes2human(uploaded_wlo)}"
492-
download_wlo_text = f"{bytes2human(download_wlo)}/s"
493-
downloaded_wlo_text = f"{bytes2human(downloaded_wlo)}"
494-
495555
if THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("SHOW", False):
556+
upload_wlo_text = f"{bytes2human(upload_wlo)}/s"
496557
display.lcd.DisplayText(
497558
text=f"{upload_wlo_text:>9}",
498559
x=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("X", 0),
@@ -510,6 +571,7 @@ def stats():
510571
)
511572

512573
if THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("SHOW", False):
574+
uploaded_wlo_text = f"{bytes2human(uploaded_wlo)}"
513575
display.lcd.DisplayText(
514576
text=f"{uploaded_wlo_text:>6}",
515577
x=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("X", 0),
@@ -527,6 +589,7 @@ def stats():
527589
)
528590

529591
if THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("SHOW", False):
592+
download_wlo_text = f"{bytes2human(download_wlo)}/s"
530593
display.lcd.DisplayText(
531594
text=f"{download_wlo_text:>9}",
532595
x=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("X", 0),
@@ -544,6 +607,7 @@ def stats():
544607
)
545608

546609
if THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("SHOW", False):
610+
downloaded_wlo_text = f"{bytes2human(downloaded_wlo)}"
547611
display.lcd.DisplayText(
548612
text=f"{downloaded_wlo_text:>6}",
549613
x=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("X", 0),
@@ -562,12 +626,8 @@ def stats():
562626

563627
upload_eth, uploaded_eth, download_eth, downloaded_eth = sensors.Net.stats(ETH_CARD, interval)
564628

565-
upload_eth_text = f"{bytes2human(upload_eth)}/s"
566-
uploaded_eth_text = f"{bytes2human(uploaded_eth)}"
567-
download_eth_text = f"{bytes2human(download_eth)}/s"
568-
downloaded_eth_text = f"{bytes2human(downloaded_eth)}"
569-
570629
if THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("SHOW", False):
630+
upload_eth_text = f"{bytes2human(upload_eth)}/s"
571631
display.lcd.DisplayText(
572632
text=f"{upload_eth_text:>9}",
573633
x=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("X", 0),
@@ -585,6 +645,7 @@ def stats():
585645
)
586646

587647
if THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("SHOW", False):
648+
uploaded_eth_text = f"{bytes2human(uploaded_eth)}"
588649
display.lcd.DisplayText(
589650
text=f"{uploaded_eth_text:>6}",
590651
x=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("X", 0),
@@ -602,6 +663,7 @@ def stats():
602663
)
603664

604665
if THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("SHOW", False):
666+
download_eth_text = f"{bytes2human(download_eth)}/s"
605667
display.lcd.DisplayText(
606668
text=f"{download_eth_text:>9}",
607669
x=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("X", 0),
@@ -619,6 +681,7 @@ def stats():
619681
)
620682

621683
if THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("SHOW", False):
684+
downloaded_eth_text = f"{bytes2human(downloaded_eth)}"
622685
display.lcd.DisplayText(
623686
text=f"{downloaded_eth_text:>6}",
624687
x=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("X", 0),

0 commit comments

Comments
 (0)