Refine layout
This commit is contained in:
133
sysFanTemp.py
Executable file → Normal file
133
sysFanTemp.py
Executable file → Normal 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()
|
||||||
|
|||||||
Reference in New Issue
Block a user