its fucking slop bruuuuh

This commit is contained in:
nekohepott 2026-06-17 04:16:24 +03:00
parent 5a27e7cff9
commit e200178142
No known key found for this signature in database

94
main.go
View File

@ -5,7 +5,7 @@ import (
"fmt"
"os"
"os/exec"
"regexp"
"path/filepath"
"strconv"
"strings"
)
@ -18,6 +18,8 @@ const (
var dist string
type LinuxProvider struct{}
func getDist() string {
f, _ := os.Open("/etc/os-release")
defer func(f *os.File) {
@ -96,26 +98,83 @@ func getCpu() string {
return cpu
}
func getGpu() string {
out, err := exec.Command("sh", "-c", "lspci | grep -E 'VGA|3D'").Output()
func (lp *LinuxProvider) getNvidiaGpuInfoPath() string {
entries, err := os.ReadDir("/proc/driver/nvidia/gpus/")
if err != nil {
return "Unknown GPU"
return ""
}
line := string(out)
parts := strings.Split(line, ": ")
if len(parts) > 1 {
return cleanGpuString(parts[1])
for _, entry := range entries {
return filepath.Join("/proc/driver/nvidia/gpus/", entry.Name(), "information")
}
return "GPU not found"
return ""
}
func cleanGpuString(raw string) string {
re := regexp.MustCompile(`\(.*\)`)
res := re.ReplaceAllString(raw, "")
res = strings.ReplaceAll(res, "Corporation", "")
res = strings.ReplaceAll(res, "[", "")
res = strings.ReplaceAll(res, "]", "")
return strings.Join(strings.Fields(res), " ")
func (lp *LinuxProvider) findAmdGpuBase() string {
for i := 0; i < 10; i++ {
base := fmt.Sprintf("/sys/class/drm/card%d/device/", i)
vendorPath := filepath.Join(base, "vendor")
data, err := os.ReadFile(vendorPath)
if err == nil {
vendorID := strings.TrimSpace(string(data))
// 0x1002 — это PCI ID компании AMD
if vendorID == "0x1002" {
return base
}
}
}
return ""
}
func (lp *LinuxProvider) findStringInStreamWithDelimiter(filePath string, targetKey string, delimiter string) string {
file, err := os.Open(filePath)
if err != nil {
return ""
}
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if strings.Contains(line, targetKey) {
parts := strings.SplitN(line, delimiter, 2)
if len(parts) > 1 {
return strings.TrimSpace(parts[1])
}
}
}
return ""
}
func (lp *LinuxProvider) getGpu() string {
if _, err := os.Stat("/proc/driver/nvidia"); err == nil {
path := lp.getNvidiaGpuInfoPath()
if path != "" {
name := lp.findStringInStreamWithDelimiter(path, "Model", ":")
if name != "" {
return name
}
}
} else {
base := lp.findAmdGpuBase()
if base != "" {
if data, err := os.ReadFile(filepath.Join(base, "product_name")); err == nil {
name := strings.TrimSpace(string(data))
if name != "" {
return name
}
}
pci := lp.findStringInStreamWithDelimiter(filepath.Join(base, "uevent"), "PCI_ID", "=")
if pci != "" && pci != "?" {
return "AMD GPU (" + pci + ")"
}
return "AMD GPU"
}
}
return "Unknown GPU"
}
func getKernel() string {
@ -186,6 +245,7 @@ func main() {
Label string
Value string
}
lp := &LinuxProvider{}
stats := []Info{
{"distro", getDist()},
@ -194,7 +254,7 @@ func main() {
{"hostname", getHostname()},
{"memory", getRam()},
{"cpu", getCpu()},
{"gpu", getGpu()},
{"gpu", lp.getGpu()},
}
fmt.Print(BlueBright)
fmt.Printf(getAscii())