Rename and improve cpus module

This commit is contained in:
2025-12-21 17:16:05 +02:00
parent d1b095ba73
commit e400e338a0
3 changed files with 62 additions and 27 deletions
+26 -14
View File
@@ -10,29 +10,41 @@ import (
"github.com/jackmordaunt/ghw"
)
type CPU struct {
Vendor string
Model string
Cores int
Threads int
}
type Monitor struct {
Width int
Height int
RefreshRate int
}
func GetCPUModel() string {
cpu, err := ghw.CPU()
if err != nil {
return ""
}
if len(cpu.Processors) == 0 {
return ""
}
return cpu.Processors[0].Model
}
func GetCPUs(hiddenCPUs []int) []CPU {
ret := make([]CPU, 0)
func GetCPUThreads() int {
cpu, err := ghw.CPU()
cpus, err := ghw.CPU()
if err != nil {
return 0
return ret
}
return int(cpu.TotalThreads)
for i, cpu := range cpus.Processors {
if slices.Contains(hiddenCPUs, i+1) {
continue
}
ret = append(ret, CPU{
Vendor: cpu.Vendor,
Model: cpu.Model,
Cores: int(cpu.NumCores),
Threads: int(cpu.NumThreads),
})
}
return ret
}
func GetGPUModels(hiddenGPUS []int) (ret []string) {
+35 -12
View File
@@ -171,19 +171,42 @@ func initializeModuleMap() {
RegisterModule(MotherboardModule)
// Motherboard module
cpuModule := StormfetchModule{stormfetchModuleConfig: stormfetchModuleConfig{Name: "cpu", Format: "%3CPU: %4$CPU_MODEL ($CPU_THREADS threads)"}, Execute: func(sm StormfetchModule) string {
return os.Expand(sm.Format, func(s string) string {
switch s {
case "CPU_MODEL":
return GetCPUModel()
case "CPU_THREADS":
return strconv.Itoa(GetCPUThreads())
default:
return ""
}
})
cpusModule := StormfetchModule{stormfetchModuleConfig: stormfetchModuleConfig{Name: "cpus", Format: "%3CPU: %4$CPU_MODEL ($CPU_THREADS threads)"}, Execute: func(sm StormfetchModule) string {
hiddenCPUsInterface, _ := sm.GetData("hidden_cpus", make([]any, 0))
// Convert interface slices to string slices
hiddenCPUs := make([]int, 0)
for _, value := range hiddenCPUsInterface.([]any) {
hiddenCPUs = append(hiddenCPUs, value.(int))
}
builder := strings.Builder{}
cpus := GetCPUs(hiddenCPUs)
for i, cpu := range cpus {
expanded := os.Expand(sm.Format, func(s string) string {
switch s {
case "CPU_NUM":
return strconv.Itoa(i + 1)
case "CPU_VENDOR":
return cpu.Vendor
case "CPU_MODEL":
return cpu.Model
case "CPU_CORES":
return strconv.Itoa(cpu.Cores)
case "CPU_THREADS":
return strconv.Itoa(cpu.Threads)
default:
return ""
}
})
builder.WriteString(expanded + "\n")
}
return builder.String()
}}
RegisterModule(cpuModule)
RegisterModule(cpusModule)
// GPUs module
gpusModule := StormfetchModule{stormfetchModuleConfig: stormfetchModuleConfig{Name: "gpus", Format: "%3GPU: %4$GPU_MODEL"}, Execute: func(sm StormfetchModule) string {