diff --git a/main.go b/main.go index ad65671..ac60f9a 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "regexp" "strconv" "strings" + "time" ) const ( @@ -21,13 +22,6 @@ const ( var dist string -var logoMap = map[string]string{ - "Arch Linux": "logos/arch.png", - "Debian": "logos/debian.png", - "NixOS": "logos/nixos.png", - "default": "logos/linux.png", -} - func getDist() string { f, _ := os.Open("/etc/os-release") defer func(f *os.File) { @@ -192,25 +186,18 @@ func getPkgs() string { return "unknown" } -//func getAscii() string { -// var ascii string -// if strings.HasPrefix(dist, "Arch") { -// content := " _ _ _\n /\\ | | | | (_)\n / \\ _ __ ___| |__ | | _ _ __ _ ___ __\n / /\\ \\ | '__/ __| '_ \\ | | | | '_ \\| | | \\ \\/ /\n / ____ \\| | | (__| | | | | |____| | | | | |_| |> <\n /_/ \\_\\_| \\___|_| |_| |______|_|_| |_|\\__,_/_/\\_\\\n" -// ascii = fmt.Sprintf(content) -// return ascii -// } -// if strings.HasPrefix(dist, "Debian") { -// content := " _____ _ _\n | __ \\ | | (_)\n | | | | ___ | |__ _ __ _ _ __\n | | | | / _ \\ | '_ \\ | | / _` | | '_ \\\n | |__| | | __/ | |_) | | | | (_| | | | | |\n |_____/ \\___| |_.__/ |_| \\__,_| |_| |_|\n" -// ascii = fmt.Sprintf(content) -// return ascii -// } -// if strings.HasPrefix(dist, "NixOS") { -// content := " _ _ _ ____ _____\n | \\ | (_) / __ \\ / ____|\n | \\| |___ _| | | | (___\n | . ` | \\ \\/ / | | |\\___ \\\n | |\\ | |> <| |__| |____) |\n |_| \\_|_/_/\\_\\\\____/|_____/\n" -// ascii = fmt.Sprintf(content) -// return ascii -// } -// return "unknown" -//} +func getLogo(dist string) string { + switch { + case strings.HasPrefix(dist, "Arch"): + return "logos/arch.png" + case strings.HasPrefix(dist, "NixOS"): + return "logos/nixos.png" + case strings.HasPrefix(dist, "Debian"): + return "logos/debian.png" + default: + return "logos/linux.png" + } +} func printLogo(path string, width uint) { cols := width / 8 @@ -263,12 +250,23 @@ func getDE() string { } func getUptime() string { - out, err := exec.Command("sh", "-c", "uptime -p").Output() + data, err := os.ReadFile("/proc/uptime") if err != nil { - return "Unknown" + return "0" } - uptime := strings.TrimPrefix(string(out), "up ") - return strings.TrimSpace(uptime) + uptimeStr := strings.Fields(string(data))[0] + seconds, err := strconv.ParseFloat(uptimeStr, 64) + if err != nil { + _, err := fmt.Fprintf(os.Stderr, "Error: %v\n", err) + if err != nil { + return "error printing uptime" + } + return "" + } + d := time.Duration(seconds) * time.Second + formatted := d.Round(time.Second).String() + spaced := strings.NewReplacer("h", "h ", "m", "m ", "s", "s ").Replace(formatted) + return spaced } func main() { @@ -277,12 +275,9 @@ func main() { Value string } dist := getDist() - defaultLogo, ok := logoMap[dist] - if !ok { - defaultLogo = logoMap["default"] - } + logo := getLogo(dist) - absoluteDefaultLogo := getAbsLogoPath(defaultLogo) + absoluteDefaultLogo := getAbsLogoPath(logo) stats := []Info{ {"dist", dist},