Skip to content

Commit 25fb32c

Browse files
committed
Add line graph to more data: RAM, Disk and Network
1 parent 6a2a661 commit 25fb32c

File tree

5 files changed

+164
-13
lines changed

5 files changed

+164
-13
lines changed

library/scheduler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ def CPUTemperature():
113113
@async_job("CPU_FanSpeed")
114114
@schedule(timedelta(seconds=config.THEME_DATA['STATS']['CPU']['FAN_SPEED'].get("INTERVAL", None)).total_seconds())
115115
def CPUFanSpeed():
116-
""" Refresh the CPU Temperature """
117-
# logger.debug("Refresh CPU Temperature")
116+
""" Refresh the CPU Fan Speed """
117+
# logger.debug("Refresh CPU Fan Speed")
118118
stats.CPU.fan_speed()
119119

120120

library/stats.py

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -518,18 +518,27 @@ def is_available():
518518

519519

520520
class Memory:
521-
@staticmethod
522-
def stats():
521+
last_values_memory_swap = []
522+
last_values_memory_virtual = []
523+
524+
@classmethod
525+
def stats(cls):
523526
memory_stats_theme_data = config.THEME_DATA['STATS']['MEMORY']
524527

525528
swap_percent = sensors.Memory.swap_percent()
529+
save_last_value(swap_percent, cls.last_values_memory_swap,
530+
memory_stats_theme_data['SWAP']['LINE_GRAPH'].get("HISTORY_SIZE", DEFAULT_HISTORY_SIZE))
526531
display_themed_progress_bar(memory_stats_theme_data['SWAP']['GRAPH'], swap_percent)
527532
display_themed_percent_radial_bar(memory_stats_theme_data['SWAP']['RADIAL'], swap_percent)
533+
display_themed_line_graph(memory_stats_theme_data['SWAP']['LINE_GRAPH'], cls.last_values_memory_swap)
528534

529535
virtual_percent = sensors.Memory.virtual_percent()
536+
save_last_value(virtual_percent, cls.last_values_memory_virtual,
537+
memory_stats_theme_data['VIRTUAL']['LINE_GRAPH'].get("HISTORY_SIZE", DEFAULT_HISTORY_SIZE))
530538
display_themed_progress_bar(memory_stats_theme_data['VIRTUAL']['GRAPH'], virtual_percent)
531539
display_themed_percent_radial_bar(memory_stats_theme_data['VIRTUAL']['RADIAL'], virtual_percent)
532540
display_themed_percent_value(memory_stats_theme_data['VIRTUAL']['PERCENT_TEXT'], virtual_percent)
541+
display_themed_line_graph(memory_stats_theme_data['VIRTUAL']['LINE_GRAPH'], cls.last_values_memory_virtual)
533542

534543
display_themed_value(
535544
theme_data=memory_stats_theme_data['VIRTUAL']['USED'],
@@ -552,17 +561,22 @@ def stats():
552561

553562

554563
class Disk:
555-
@staticmethod
556-
def stats():
564+
last_values_disk_usage = []
565+
566+
@classmethod
567+
def stats(cls):
557568
used = sensors.Disk.disk_used()
558569
free = sensors.Disk.disk_free()
559570

560571
disk_theme_data = config.THEME_DATA['STATS']['DISK']
561572

562573
disk_usage_percent = sensors.Disk.disk_usage_percent()
574+
save_last_value(disk_usage_percent, cls.last_values_disk_usage,
575+
disk_theme_data['USED']['LINE_GRAPH'].get("HISTORY_SIZE", DEFAULT_HISTORY_SIZE))
563576
display_themed_progress_bar(disk_theme_data['USED']['GRAPH'], disk_usage_percent)
564577
display_themed_percent_radial_bar(disk_theme_data['USED']['RADIAL'], disk_usage_percent)
565578
display_themed_percent_value(disk_theme_data['USED']['PERCENT_TEXT'], disk_usage_percent)
579+
display_themed_line_graph(disk_theme_data['USED']['LINE_GRAPH'], cls.last_values_disk_usage)
566580

567581
display_themed_value(
568582
theme_data=disk_theme_data['USED']['TEXT'],
@@ -585,25 +599,42 @@ def stats():
585599

586600

587601
class Net:
588-
@staticmethod
589-
def stats():
590-
interval = config.THEME_DATA['STATS']['CPU']['PERCENTAGE'].get("INTERVAL", None)
591-
upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo = sensors.Net.stats(WLO_CARD, interval)
602+
last_values_wlo_upload = []
603+
last_values_wlo_download = []
604+
last_values_eth_upload = []
605+
last_values_eth_download = []
606+
607+
@classmethod
608+
def stats(cls):
592609
net_theme_data = config.THEME_DATA['STATS']['NET']
610+
interval = net_theme_data.get("INTERVAL", None)
611+
upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo = sensors.Net.stats(WLO_CARD, interval)
593612

613+
save_last_value(upload_wlo, cls.last_values_wlo_upload,
614+
net_theme_data['WLO']['UPLOAD']['LINE_GRAPH'].get("HISTORY_SIZE", DEFAULT_HISTORY_SIZE))
594615
Net._show_themed_tax_rate(net_theme_data['WLO']['UPLOAD']['TEXT'], upload_wlo)
595616
Net._show_themed_total_data(net_theme_data['WLO']['UPLOADED']['TEXT'], uploaded_wlo)
617+
display_themed_line_graph(net_theme_data['WLO']['UPLOAD']['LINE_GRAPH'], cls.last_values_wlo_upload)
596618

619+
save_last_value(download_wlo, cls.last_values_wlo_download,
620+
net_theme_data['WLO']['DOWNLOAD']['LINE_GRAPH'].get("HISTORY_SIZE", DEFAULT_HISTORY_SIZE))
597621
Net._show_themed_tax_rate(net_theme_data['WLO']['DOWNLOAD']['TEXT'], download_wlo)
598622
Net._show_themed_total_data(net_theme_data['WLO']['DOWNLOADED']['TEXT'], downloaded_wlo)
623+
display_themed_line_graph(net_theme_data['WLO']['DOWNLOAD']['LINE_GRAPH'], cls.last_values_wlo_download)
599624

600625
upload_eth, uploaded_eth, download_eth, downloaded_eth = sensors.Net.stats(ETH_CARD, interval)
601626

627+
save_last_value(upload_eth, cls.last_values_eth_upload,
628+
net_theme_data['ETH']['UPLOAD']['LINE_GRAPH'].get("HISTORY_SIZE", DEFAULT_HISTORY_SIZE))
602629
Net._show_themed_tax_rate(net_theme_data['ETH']['UPLOAD']['TEXT'], upload_eth)
603630
Net._show_themed_total_data(net_theme_data['ETH']['UPLOADED']['TEXT'], uploaded_eth)
631+
display_themed_line_graph(net_theme_data['ETH']['UPLOAD']['LINE_GRAPH'], cls.last_values_eth_upload)
604632

633+
save_last_value(download_eth, cls.last_values_eth_download,
634+
net_theme_data['ETH']['DOWNLOAD']['LINE_GRAPH'].get("HISTORY_SIZE", DEFAULT_HISTORY_SIZE))
605635
Net._show_themed_tax_rate(net_theme_data['ETH']['DOWNLOAD']['TEXT'], download_eth)
606636
Net._show_themed_total_data(net_theme_data['ETH']['DOWNLOADED']['TEXT'], downloaded_eth)
637+
display_themed_line_graph(net_theme_data['ETH']['DOWNLOAD']['LINE_GRAPH'], cls.last_values_eth_download)
607638

608639
@staticmethod
609640
def _show_themed_total_data(theme_data, amount):

res/themes/default.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,15 @@ STATS:
118118
SHOW: False
119119
RADIAL:
120120
SHOW: False
121+
LINE_GRAPH:
122+
SHOW: False
121123
VIRTUAL:
122124
GRAPH:
123125
SHOW: False
124126
RADIAL:
125127
SHOW: False
128+
LINE_GRAPH:
129+
SHOW: False
126130
USED:
127131
SHOW: False
128132
SHOW_UNIT: False
@@ -142,6 +146,8 @@ STATS:
142146
SHOW: False
143147
RADIAL:
144148
SHOW: False
149+
LINE_GRAPH:
150+
SHOW: False
145151
TEXT:
146152
SHOW: False
147153
SHOW_UNIT: False
@@ -162,25 +168,33 @@ STATS:
162168
UPLOAD:
163169
TEXT:
164170
SHOW: False
171+
LINE_GRAPH:
172+
SHOW: False
165173
UPLOADED:
166174
TEXT:
167175
SHOW: False
168176
DOWNLOAD:
169177
TEXT:
170178
SHOW: False
179+
LINE_GRAPH:
180+
SHOW: False
171181
DOWNLOADED:
172182
TEXT:
173183
SHOW: False
174184
ETH:
175185
UPLOAD:
176186
TEXT:
177187
SHOW: False
188+
LINE_GRAPH:
189+
SHOW: False
178190
UPLOADED:
179191
TEXT:
180192
SHOW: False
181193
DOWNLOAD:
182194
TEXT:
183195
SHOW: False
196+
LINE_GRAPH:
197+
SHOW: False
184198
DOWNLOADED:
185199
TEXT:
186200
SHOW: False

res/themes/theme_example.yaml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,21 @@ STATS:
653653
FONT_COLOR: 200, 200, 200
654654
# BACKGROUND_COLOR: 0, 0, 0
655655
BACKGROUND_IMAGE: background.png
656+
LINE_GRAPH:
657+
SHOW: False
658+
X: 300
659+
Y: 220
660+
WIDTH: 133
661+
HEIGHT: 70
662+
MIN_VALUE: 30
663+
MAX_VALUE: 120
664+
HISTORY_SIZE: 10
665+
AUTOSCALE: True
666+
LINE_COLOR: 61, 184, 225
667+
AXIS: True
668+
AXIS_COLOR: 255, 135, 0
669+
# BACKGROUND_COLOR: 0, 0, 0
670+
BACKGROUND_IMAGE: background.png
656671
VIRTUAL:
657672
GRAPH:
658673
SHOW: False
@@ -687,6 +702,21 @@ STATS:
687702
FONT_COLOR: 200, 200, 200
688703
# BACKGROUND_COLOR: 0, 0, 0
689704
BACKGROUND_IMAGE: background.png
705+
LINE_GRAPH:
706+
SHOW: False
707+
X: 300
708+
Y: 220
709+
WIDTH: 133
710+
HEIGHT: 70
711+
MIN_VALUE: 30
712+
MAX_VALUE: 120
713+
HISTORY_SIZE: 10
714+
AUTOSCALE: True
715+
LINE_COLOR: 61, 184, 225
716+
AXIS: True
717+
AXIS_COLOR: 255, 135, 0
718+
# BACKGROUND_COLOR: 0, 0, 0
719+
BACKGROUND_IMAGE: background.png
690720
USED:
691721
SHOW: False
692722
SHOW_UNIT: True
@@ -763,6 +793,21 @@ STATS:
763793
FONT_COLOR: 200, 200, 200
764794
# BACKGROUND_COLOR: 0, 0, 0
765795
BACKGROUND_IMAGE: background.png
796+
LINE_GRAPH:
797+
SHOW: False
798+
X: 300
799+
Y: 220
800+
WIDTH: 133
801+
HEIGHT: 70
802+
MIN_VALUE: 30
803+
MAX_VALUE: 120
804+
HISTORY_SIZE: 10
805+
AUTOSCALE: True
806+
LINE_COLOR: 61, 184, 225
807+
AXIS: True
808+
AXIS_COLOR: 255, 135, 0
809+
# BACKGROUND_COLOR: 0, 0, 0
810+
BACKGROUND_IMAGE: background.png
766811
TEXT:
767812
SHOW: False
768813
SHOW_UNIT: True
@@ -818,6 +863,21 @@ STATS:
818863
FONT_COLOR: 255, 255, 255
819864
# BACKGROUND_COLOR: 132, 154, 165
820865
BACKGROUND_IMAGE: background.png
866+
LINE_GRAPH:
867+
SHOW: False
868+
X: 300
869+
Y: 220
870+
WIDTH: 133
871+
HEIGHT: 70
872+
MIN_VALUE: 30
873+
MAX_VALUE: 120
874+
HISTORY_SIZE: 10
875+
AUTOSCALE: True
876+
LINE_COLOR: 61, 184, 225
877+
AXIS: True
878+
AXIS_COLOR: 255, 135, 0
879+
# BACKGROUND_COLOR: 0, 0, 0
880+
BACKGROUND_IMAGE: background.png
821881
UPLOADED:
822882
TEXT:
823883
SHOW: FALSE
@@ -838,6 +898,21 @@ STATS:
838898
FONT_COLOR: 255, 255, 255
839899
# BACKGROUND_COLOR: 132, 154, 165
840900
BACKGROUND_IMAGE: background.png
901+
LINE_GRAPH:
902+
SHOW: False
903+
X: 300
904+
Y: 220
905+
WIDTH: 133
906+
HEIGHT: 70
907+
MIN_VALUE: 30
908+
MAX_VALUE: 120
909+
HISTORY_SIZE: 10
910+
AUTOSCALE: True
911+
LINE_COLOR: 61, 184, 225
912+
AXIS: True
913+
AXIS_COLOR: 255, 135, 0
914+
# BACKGROUND_COLOR: 0, 0, 0
915+
BACKGROUND_IMAGE: background.png
841916
DOWNLOADED:
842917
TEXT:
843918
SHOW: FALSE
@@ -859,6 +934,21 @@ STATS:
859934
FONT_COLOR: 255, 255, 255
860935
# BACKGROUND_COLOR: 132, 154, 165
861936
BACKGROUND_IMAGE: background.png
937+
LINE_GRAPH:
938+
SHOW: False
939+
X: 300
940+
Y: 220
941+
WIDTH: 133
942+
HEIGHT: 70
943+
MIN_VALUE: 30
944+
MAX_VALUE: 120
945+
HISTORY_SIZE: 10
946+
AUTOSCALE: True
947+
LINE_COLOR: 61, 184, 225
948+
AXIS: True
949+
AXIS_COLOR: 255, 135, 0
950+
# BACKGROUND_COLOR: 0, 0, 0
951+
BACKGROUND_IMAGE: background.png
862952
UPLOADED:
863953
TEXT:
864954
SHOW: FALSE
@@ -879,6 +969,21 @@ STATS:
879969
FONT_COLOR: 255, 255, 255
880970
# BACKGROUND_COLOR: 132, 154, 165
881971
BACKGROUND_IMAGE: background.png
972+
LINE_GRAPH:
973+
SHOW: False
974+
X: 300
975+
Y: 220
976+
WIDTH: 133
977+
HEIGHT: 70
978+
MIN_VALUE: 30
979+
MAX_VALUE: 120
980+
HISTORY_SIZE: 10
981+
AUTOSCALE: True
982+
LINE_COLOR: 61, 184, 225
983+
AXIS: True
984+
AXIS_COLOR: 255, 135, 0
985+
# BACKGROUND_COLOR: 0, 0, 0
986+
BACKGROUND_IMAGE: background.png
882987
DOWNLOADED:
883988
TEXT:
884989
SHOW: FALSE

theme-editor.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ def refresh_theme():
105105
stats.CPU.frequency()
106106
stats.CPU.load()
107107
stats.CPU.temperature()
108+
stats.CPU.fan_speed()
108109
stats.Gpu.stats()
109110
stats.Memory.stats()
110111
stats.Disk.stats()
@@ -197,9 +198,6 @@ def on_zone_click(event):
197198
# Apply system locale to this program
198199
locale.setlocale(locale.LC_ALL, '')
199200

200-
# Load theme file and generate first preview
201-
refresh_theme()
202-
203201
logger.debug("Starting Theme Editor...")
204202

205203
# Get theme file to edit
@@ -217,6 +215,9 @@ def on_zone_click(event):
217215
else: # linux variants
218216
subprocess.call(('xdg-open', "./" + theme_file))
219217

218+
# Load theme file and generate first preview
219+
refresh_theme()
220+
220221
# Create preview window
221222
logger.debug("Opening theme preview window with static data")
222223
viewer = tkinter.Tk()

0 commit comments

Comments
 (0)