neowofetch/main.go

170 lines
4.1 KiB
Go
Raw Normal View History

2022-09-07 15:09:50 +02:00
package main
import (
2022-09-07 17:28:27 +02:00
"fmt"
"os"
"os/exec"
"strconv"
"strings"
2022-09-07 15:09:50 +02:00
)
2022-09-07 17:28:27 +02:00
func getHostname() string {
cmd := exec.Command("uname", "-n")
shell, _ := cmd.Output()
return strings.Replace(string(shell), "\n", "", -1)
}
func getUsername() string {
cmd := exec.Command("whoami")
shell, _ := cmd.Output()
return strings.Replace(string(shell), "\n", "", -1)
}
2022-09-07 15:09:50 +02:00
func getLogo() {
}
2022-09-07 17:28:27 +02:00
func getDistro() string {
2022-09-07 15:09:50 +02:00
distro, err := os.Open("/etc/os-release")
if err != nil {
fmt.Println("Error:", err)
os.Exit(0)
}
distro_info := make([]byte, 1024)
distro.Read(distro_info)
distro.Close()
distro_list := strings.Split(string(distro_info), "\n")
distro_tuples := make(map[string]string)
for _, v := range distro_list {
if strings.Contains(v, "=") {
kv := strings.Split(v, "=")
kv[0] = strings.TrimSpace(kv[0])
kv[1] = strings.TrimSpace(kv[1])
distro_tuples[kv[0]] = kv[1]
}
}
2022-09-07 17:28:27 +02:00
return strings.Trim(distro_tuples["PRETTY_NAME"], "\"")
2022-09-07 15:09:50 +02:00
}
func getKernel() string {
2022-09-07 17:28:27 +02:00
cmd := exec.Command("uname", "-r")
kernel, err := cmd.Output()
if err != nil {
fmt.Println(err.Error())
return "fuck you"
}
return string(kernel)
2022-09-07 15:09:50 +02:00
}
2022-09-08 13:36:04 +02:00
func getUptime() string {
cmd := exec.Command("cat", "/proc/uptime")
uptime, err := cmd.Output()
if err != nil {
fmt.Println(err.Error())
return "fuck you"
}
intup, _ := strconv.Atoi(string(uptime[:strings.Count(string(uptime), ".")+3]))
return literallyBasicMath(intup)
2022-09-07 15:09:50 +02:00
}
func getPackages() {
}
func getShell() string {
2022-09-07 17:28:27 +02:00
return os.Getenv("SHELL")
2022-09-07 15:09:50 +02:00
}
func getResolution() {
2022-09-07 17:28:27 +02:00
2022-09-07 15:09:50 +02:00
}
func getWM() {
}
func getTheme() {
}
func getIcons() {
}
2022-09-08 09:34:39 +02:00
func getTerminal() string {
_, exists := os.LookupEnv("TERM")
_, existprgm := os.LookupEnv("TERM_PROGRAM")
return ("exists=" + strconv.FormatBool(exists) + "existprgm=" + strconv.FormatBool(existprgm))
2022-09-07 15:09:50 +02:00
}
func getCPU() {
2022-09-08 09:34:39 +02:00
mem, err := os.Open("/proc/meminfo")
if err != nil {
fmt.Println(err.Error())
os.Exit(0)
}
mem_info := make([]byte, 1024)
mem.Read(mem_info)
mem.Close()
mem_list := strings.Split(string(mem_info), "\n")
mem_map := make(map[string]string)
_, _ = mem_list, mem_map
2022-09-07 15:09:50 +02:00
}
2022-09-07 17:28:27 +02:00
func getGPU() string {
cmd := exec.Command("lspci", "-v")
shell, err := cmd.Output()
_ = err
var bruh string
//return strings.Replace(string(shell), "\n", "", -1)
//return string(shell)
for _, line := range strings.Split(strings.TrimSuffix(string(shell), "\n"), "\n") {
if strings.Contains(line, "VGA") {
bruh += line[strings.Index(line, ": ")+2 : strings.Index(line, " (")]
}
}
return bruh
2022-09-07 15:09:50 +02:00
}
2022-09-08 09:34:39 +02:00
func getMemory(used bool) string {
2022-09-07 15:09:50 +02:00
2022-09-07 17:28:27 +02:00
//
// The coolest part about this function unlike neofetch is that it also takes account of the basic os operations
// into account thus not giving an illusion that your os is completely having fun
// honestly idk lmao
//
mem, err := os.Open("/proc/meminfo")
if err != nil {
fmt.Println(err.Error())
os.Exit(0)
}
mem_info := make([]byte, 1024)
mem.Read(mem_info)
mem.Close()
mem_list := strings.Split(string(mem_info), "\n")
mem_map := make(map[string]string)
for _, v := range mem_list {
if strings.Contains(v, ":") {
kv := strings.Split(v, ":")
kv[0] = strings.TrimSpace(kv[0])
kv[1] = strings.TrimSpace(kv[1])
kv[1] = strings.Replace(kv[1], "kB", "", 3)
kv[1] = strings.TrimSpace(kv[1])
mem_map[kv[0]] = kv[1]
}
}
mem_free, _ := strconv.Atoi(mem_map["MemFree"])
mem_total, _ := strconv.Atoi(mem_map["MemTotal"])
mem_used := mem_total - mem_free
2022-09-08 09:34:39 +02:00
//memory := fmt.Sprintf("%d/%d", mem_used/1024, mem_total/1024)
if used {
return strconv.Itoa(mem_used / 1024)
} else {
return strconv.Itoa(mem_total / 1024)
}
2022-09-07 15:09:50 +02:00
}
2022-09-08 13:36:04 +02:00
func literallyBasicMath(seconds int) string {
minutes := seconds / 60
secondsre := strconv.Itoa(seconds % 60)
hour := strconv.Itoa(minutes / 60)
minutesre := strconv.Itoa(minutes % 60)
return (hour + "h " + minutesre + "m " + secondsre + "s")
}
2022-09-07 17:28:27 +02:00
func getColorPalette() {
}
2022-09-07 15:09:50 +02:00
func main() {
2022-09-08 13:36:04 +02:00
fmt.Print(getUptime(), "\n")
//fmt.Print(getTerminal(), "\n")
2022-09-08 09:34:39 +02:00
fmt.Print(getShell(), "\n")
fmt.Print(getHostname(), "@", getUsername(), "\n")
fmt.Print(getDistro(), "\n")
fmt.Print(getGPU(), "\n")
fmt.Print(getMemory(true), "\n")
fmt.Print(getKernel(), "\n")
2022-09-08 13:36:04 +02:00
fmt.Print(13/2, 13%2, "\n")
2022-09-07 15:09:50 +02:00
}