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 hddtemp
import cpufantemp import cpufantemp
from rich import print from rich.console import Console
from rich.layout import Layout from rich.columns import Columns
from rich.panel import Panel 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(): def main():
global hddtempDict
global fanTempDict
hddtempDict = hddtemp.getHddTemp() hddtempDict = hddtemp.getHddTemp()
fanTempDict = cpufantemp.getCpuTempAndFanSpeed() fanTempDict = cpufantemp.getCpuTempAndFanSpeed()
layout = Layout() console = Console()
layout.split_row( columns = Columns([
Layout(name="left"), buildTable_HddTemperature(),
Layout(name="center"), buildTable_CpuTemperature(),
Layout(name="right"), buildTable_FanSpeed()
) ], padding=1, expand=True)
console.print(columns)
## 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)
if __name__ == "__main__": if __name__ == "__main__":
main() main()