Refine layout

This commit is contained in:
2024-03-27 10:42:46 +00:00
parent eb9ef8abe2
commit 2a609c5a21

133
sysFanTemp.py Executable file → Normal file
View File

@@ -1,51 +1,104 @@
#!/usr/bin/python3
import hddtemp
import cpufantemp
from rich import print
from rich.layout import Layout
from rich.panel import Panel
from rich.console import Console
from rich.columns import Columns
from rich.table import Table
hddtempDict = {}
fanTempDict = {}
def buildTable(title, headers, rows):
table = Table(title=title)
for header in headers:
table.add_column(
header.get("name", "name"),
justify=header.get("justify", "center"),
style=header.get("style", "cyan"),
no_wrap=header.get("no_wrap", False))
for row in rows:
table.add_row(*row)
return table
def buildTable_HddTemperature():
table = buildTable(
"HDD temperature",
[
{
"name": "HDD ID",
"justify": "center",
"style": "cyan",
"no_wrap": True
},
{
"name": "Celuis",
"justify": "center",
"style": "magenta",
},
],
[[f"{hddKey}", f"{hddtempDict[hddKey].get('temp', -999.9)}°C"] for hddKey in hddtempDict.keys()]
)
return table
def buildTable_CpuTemperature():
table = buildTable(
"CPU temperature",
[
{
"name": "CPU ID",
"justify": "center",
"style": "cyan",
"no_wrap": True
},
{
"name": "Celuis",
"justify": "center",
"style": "magenta",
},
],
[[f"{cpuKey}", f"{fanTempDict['cpu'][cpuKey]}°C"] for cpuKey in fanTempDict["cpu"].keys()]
)
return table
def buildTable_FanSpeed():
table = buildTable(
"Fan Speed",
[
{
"name": "Fan ID",
"justify": "center",
"style": "cyan",
"no_wrap": True
},
{
"name": "RPM",
"justify": "center",
"style": "magenta",
},
],
[[f"{fanKey}", f"{fanTempDict['fan'][fanKey]}"] for fanKey in fanTempDict["fan"].keys()]
)
return table
def main():
global hddtempDict
global fanTempDict
hddtempDict = hddtemp.getHddTemp()
fanTempDict = cpufantemp.getCpuTempAndFanSpeed()
layout = Layout()
layout.split_row(
Layout(name="left"),
Layout(name="center"),
Layout(name="right"),
)
## Fan speed on left
fanSpeedString = ""
for fanKey in sorted(fanTempDict["fan"].keys()):
fanSpeed = fanTempDict["fan"][fanKey]
fanSpeedString += f"{fanKey}: {fanSpeed:<4} RPM\n"
p = Panel(fanSpeedString, title="Fan Speed")
p.height = 15
layout["left"].update(p)
## CPU temp on center
cpuTempString = ""
for cpuKey in sorted(fanTempDict["cpu"].keys()):
cpuTemp = fanTempDict["cpu"][cpuKey]
cpuTempString += f"{cpuKey:<8}: {cpuTemp}°C\n"
p = Panel(cpuTempString, title="CPU Temperature")
p.height = 15
layout["center"].update(p)
## HDD temp on right
hddTempString = ""
print(hddtempDict)
for hddname in sorted(hddtempDict.keys()):
temp = hddtempDict[hddname].get("temp", -999.9)
hddTempString += f"{hddname}: {temp}°C\n"
p = Panel(hddTempString, title="HDD Temperature")
p.height = 15
layout["right"].update(p)
print(layout)
console = Console()
columns = Columns([
buildTable_HddTemperature(),
buildTable_CpuTemperature(),
buildTable_FanSpeed()
], padding=1, expand=True)
console.print(columns)
if __name__ == "__main__":
main()