mirror of
https://github.com/EnumeratedDev/stormfetch.git
synced 2026-09-15 23:46:12 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0fd198d83e | ||
|
|
673f231c42 | ||
|
|
e311649a48 | ||
|
|
712fd78e21 | ||
|
|
7d83b0996d | ||
|
|
f3a016b674 |
@@ -0,0 +1,21 @@
|
||||
#/33;7;11;15
|
||||
${C1} /////////////
|
||||
/////////////////////
|
||||
///////${C2}*767${C1}////////////////
|
||||
//////${C2}7676767676*${C1}//////////////
|
||||
/////${C2}76767${C1}//${C2}7676767${C1}//////////////
|
||||
/////${C2}767676${C1}///${C2}*76767${C1}///////////////
|
||||
///////${C2}767676${C1}///${C2}76767${C1}.///${C2}7676*${C1}///////
|
||||
/////////${C2}767676${C1}//${C2}76767${C1}///${C2}767676${C1}////////
|
||||
//////////${C2}76767676767${C1}////${C2}76767${C1}/////////
|
||||
///////////${C2}76767676${C1}//////${C2}7676${C1}//////////
|
||||
////////////,${C2}7676${C1},///////${C2}767${C1}///////////
|
||||
/////////////*${C2}7676${C1}///////${C2}76${C1}////////////
|
||||
///////////////${C2}7676${C1}////////////////////
|
||||
///////////////${C2}7676${C1}///${C2}767${C1}////////////
|
||||
//////////////////////${C2}'${C1}////////////
|
||||
//////${C2}.7676767676767676767,${C1}//////
|
||||
/////${C2}767676767676767676767${C1}/////
|
||||
///////////////////////////
|
||||
/////////////////////
|
||||
/////////////
|
||||
+15
-18
@@ -1,18 +1,15 @@
|
||||
#/6;10;5;12
|
||||
${C1} @@@@@@@@@
|
||||
@@@~~~~~~~~~@@
|
||||
@@~~~ ~~@
|
||||
@~~ @
|
||||
@~ @@@ @
|
||||
@@~ @ @@
|
||||
@@~~ @
|
||||
@@@~~ ~@@ @@@
|
||||
~~~ ~~@@@ @@@@~~~
|
||||
~~~@@@@~~~~
|
||||
@@@@ @@@@@@@ ~~~~ @@@@
|
||||
~~~~@@@@ @@~~~~~~~@@ @@@@
|
||||
~~~~@@@@~~ ~~@@@@~~~~
|
||||
@@@ ~~~~ @@@@@ ~~~~ @@@
|
||||
~~~@@@@ @@@@~~~~~@@@@ @@@@~~~
|
||||
~~~~@@@~~~~ ~~~~@@@~~~
|
||||
~~~ ~~~
|
||||
#/27;39;5;12
|
||||
${C1}@@@@ ${C1}@@@${C2}*
|
||||
${C1}@@${C2}~~~~${C1}@@ ${C1}@@${C2}~~~
|
||||
${C1}@@${C2}~~ ${C2}~~${C1}@ ${C1}@@${C2}~~
|
||||
${C1}@@${C2}~~ ${C2}~${C1}@ ${C1}@@@${C2}~~
|
||||
${C2}*${C1}@@${C2}~~ ${C1}@@@@ ${C2}~${C1}@@@@${C2}~~~ ${C1}@@@${C2}*
|
||||
${C2}~~ ${C1}@@${C2}~~~~${C1}@@ ${C2}~~~~ ${C1}@@${C2}~~~
|
||||
${C1}@@${C2}~~ ${C2}~~${C1}@ ${C1}@@${C2}~~
|
||||
${C1}@@${C2}~~ ${C2}~${C1}@ ${C1}@@@${C2}~~
|
||||
${C2}*${C1}@@${C2}~~ ${C1}@@@@ ${C2}~${C1}@@@@${C2}~~~ ${C1}@@@${C2}*
|
||||
${C2}~~ ${C1}@@${C2}~~~~${C1}@@ ${C2}~~~~ ${C1}@@${C2}~~~
|
||||
${C1}@@${C2}~~ ${C2}~~${C1}@ ${C1}@@${C2}~~
|
||||
${C1}@@${C2}~~ ${C2}~${C1}@ ${C1}@@@${C2}~~
|
||||
${C2}*${C1}@@${C2}~~ ${C2}~${C1}@@@@${C2}~~~
|
||||
${C2}~~ ${C2}~~~~
|
||||
|
||||
@@ -5,6 +5,8 @@ echo -e "${C3}Hostname: ${C4}$(cat /etc/hostname)"
|
||||
echo -e "${C3}Kernel: ${C4}$(uname -s) $(uname -r)"
|
||||
echo -e "${C3}Packages: ${C4}$(get_packages)"
|
||||
echo -e "${C3}Shell: ${C4}${USER_SHELL}"
|
||||
echo -e "${C3}Init: ${C4}${INIT_SYSTEM}"
|
||||
echo -e "${C3}Libc: ${C4}${LIBC}"
|
||||
if [ ! -z "$CPU_MODEL" ]; then echo -e "${C3}CPU: ${C4}${CPU_MODEL} (${CPU_THREADS} threads)"; fi
|
||||
for i in $(seq ${CONNECTED_GPUS}); do
|
||||
gpu="GPU$i"
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var systemConfigDir = "/etc/"
|
||||
@@ -18,6 +19,8 @@ var systemConfigDir = "/etc/"
|
||||
var configPath = ""
|
||||
var fetchScriptPath = ""
|
||||
|
||||
var TimeTaken = false
|
||||
|
||||
var config = StormfetchConfig{
|
||||
Ascii: "auto",
|
||||
FetchScript: "auto",
|
||||
@@ -86,8 +89,9 @@ func readConfig() {
|
||||
}
|
||||
|
||||
func readFlags() {
|
||||
flag.StringVar(&config.Ascii, "ascii", config.Ascii, "help message for flagname")
|
||||
flag.StringVar(&config.DistroName, "distro-name", config.DistroName, "help message for flagname")
|
||||
flag.StringVar(&config.Ascii, "ascii", config.Ascii, "Set distro ascii")
|
||||
flag.StringVar(&config.DistroName, "distro-name", config.DistroName, "Set distro name")
|
||||
flag.BoolVar(&TimeTaken, "time-taken", false, "Show time taken for fetched information")
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
@@ -111,19 +115,37 @@ func checkDependencies() {
|
||||
}
|
||||
}
|
||||
|
||||
func SetupFetchEnv() []string {
|
||||
func SetupFetchEnv(showTimeTaken bool) []string {
|
||||
var env = make(map[string]string)
|
||||
env["DISTRO_LONG_NAME"] = getDistroInfo().LongName
|
||||
env["DISTRO_SHORT_NAME"] = getDistroInfo().ShortName
|
||||
env["CPU_MODEL"] = getCPUName()
|
||||
env["CPU_THREADS"] = strconv.Itoa(getCPUThreads())
|
||||
setVariable := func(key string, setter func() string) {
|
||||
start := time.Now().UnixMilli()
|
||||
env[key] = setter()
|
||||
end := time.Now().UnixMilli()
|
||||
if showTimeTaken {
|
||||
fmt.Println(fmt.Sprintf("Setting '%s' took %d milliseconds", key, end-start))
|
||||
}
|
||||
}
|
||||
setVariable("DISTRO_LONG_NAME", func() string { return getDistroInfo().LongName })
|
||||
setVariable("DISTRO_SHORT_NAME", func() string { return getDistroInfo().ShortName })
|
||||
setVariable("CPU_MODEL", func() string { return getCPUName() })
|
||||
setVariable("CPU_THREADS", func() string { return strconv.Itoa(getCPUThreads()) })
|
||||
start := time.Now().UnixMilli()
|
||||
memory := GetMemoryInfo()
|
||||
end := time.Now().UnixMilli()
|
||||
if showTimeTaken {
|
||||
fmt.Println(fmt.Sprintf("Setting '%s' took %d milliseconds", "MEM_*", end-start))
|
||||
}
|
||||
if memory != nil {
|
||||
env["MEM_TOTAL"] = strconv.Itoa(memory.MemTotal)
|
||||
env["MEM_USED"] = strconv.Itoa(memory.MemTotal - memory.MemAvailable)
|
||||
env["MEM_FREE"] = strconv.Itoa(memory.MemAvailable)
|
||||
}
|
||||
start = time.Now().UnixMilli()
|
||||
partitions := getMountedPartitions()
|
||||
end = time.Now().UnixMilli()
|
||||
if showTimeTaken {
|
||||
fmt.Println(fmt.Sprintf("Setting '%s' took %d milliseconds", "PARTITION_*", end-start))
|
||||
}
|
||||
if len(partitions) != 0 {
|
||||
env["MOUNTED_PARTITIONS"] = strconv.Itoa(len(partitions))
|
||||
for i, part := range partitions {
|
||||
@@ -140,17 +162,29 @@ func SetupFetchEnv() []string {
|
||||
env["PARTITION"+strconv.Itoa(i+1)+"_FREE_SIZE"] = FormatBytes(part.FreeSize)
|
||||
}
|
||||
}
|
||||
env["DE_WM"] = GetDEWM()
|
||||
env["USER_SHELL"] = GetShell()
|
||||
env["DISPLAY_PROTOCOL"] = GetDisplayProtocol()
|
||||
setVariable("DE_WM", func() string { return GetDEWM() })
|
||||
setVariable("USER_SHELL", func() string { return GetShell() })
|
||||
setVariable("DISPLAY_PROTOCOL", func() string { return GetDisplayProtocol() })
|
||||
setVariable("LIBC", func() string { return GetLibc() })
|
||||
setVariable("INIT_SYSTEM", func() string { return GetInitSystem() })
|
||||
start = time.Now().UnixMilli()
|
||||
monitors := getMonitorResolution()
|
||||
end = time.Now().UnixMilli()
|
||||
if showTimeTaken {
|
||||
fmt.Println(fmt.Sprintf("Setting '%s' took %d milliseconds", "MONITOR_*", end-start))
|
||||
}
|
||||
if len(monitors) != 0 {
|
||||
env["CONNECTED_MONITORS"] = strconv.Itoa(len(monitors))
|
||||
for i, monitor := range monitors {
|
||||
env["MONITOR"+strconv.Itoa(i+1)] = monitor
|
||||
}
|
||||
}
|
||||
start = time.Now().UnixMilli()
|
||||
gpus := getGPUNames()
|
||||
end = time.Now().UnixMilli()
|
||||
if showTimeTaken {
|
||||
fmt.Println(fmt.Sprintf("Setting '%s' took %d milliseconds", "GPU_*", end-start))
|
||||
}
|
||||
if len(gpus) != 0 {
|
||||
env["CONNECTED_GPUS"] = strconv.Itoa(len(gpus))
|
||||
for i, gpu := range gpus {
|
||||
@@ -217,7 +251,7 @@ func runStormfetch() {
|
||||
cmd := exec.Command("/bin/bash", fetchScriptPath)
|
||||
cmd.Dir = path.Dir(fetchScriptPath)
|
||||
cmd.Env = os.Environ()
|
||||
cmd.Env = append(cmd.Env, SetupFetchEnv()...)
|
||||
cmd.Env = append(cmd.Env, SetupFetchEnv(TimeTaken)...)
|
||||
cmd.Env = append(cmd.Env, "C0=\033[0m")
|
||||
for key, value := range colorMap {
|
||||
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", key, value))
|
||||
|
||||
@@ -121,22 +121,17 @@ func getCPUThreads() int {
|
||||
|
||||
func getGPUNames() []string {
|
||||
var ret []string
|
||||
null, _ := os.Open(os.DevNull)
|
||||
serr := os.Stderr
|
||||
os.Stderr = null
|
||||
gpu, err := ghw.GPU()
|
||||
defer null.Close()
|
||||
os.Stderr = serr
|
||||
cmd := exec.Command("/bin/bash", "-c", "lspci -v -m | grep 'VGA' -A6 | grep '^Device:' | sed 's/^Device://' | awk '{$1=$1};1'")
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
for i, graphics := range gpu.GraphicsCards {
|
||||
if slices.Contains(config.HiddenGPUS, i+1) {
|
||||
for _, name := range strings.Split(string(bytes), "\n") {
|
||||
name = strings.TrimSpace(name)
|
||||
if name == "" {
|
||||
continue
|
||||
}
|
||||
if graphics.DeviceInfo != nil {
|
||||
ret = append(ret, graphics.DeviceInfo.Product.Name)
|
||||
}
|
||||
ret = append(ret, name)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
@@ -231,6 +226,8 @@ func GetShell() string {
|
||||
return "Zsh " + runCommand("$SHELL --version | awk '{print $2}'")
|
||||
case "fish":
|
||||
return "Fish " + runCommand("$SHELL --version | awk '{print $3}'")
|
||||
case "nu":
|
||||
return "Nushell " + runCommand("$SHELL --version")
|
||||
default:
|
||||
return "Unknown"
|
||||
}
|
||||
@@ -394,6 +391,55 @@ func getMountedPartitions() []partition {
|
||||
return partitions
|
||||
}
|
||||
|
||||
func GetInitSystem() string {
|
||||
runCommand := func(command string) string {
|
||||
cmd := exec.Command("/bin/bash", "-c", command)
|
||||
workdir, err := os.Getwd()
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
cmd.Dir = workdir
|
||||
cmd.Env = os.Environ()
|
||||
out, err := cmd.Output()
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return strings.TrimSpace(string(out))
|
||||
}
|
||||
|
||||
link, err := os.Readlink("/sbin/init")
|
||||
if err != nil {
|
||||
return "Unknown"
|
||||
}
|
||||
if path.Base(link) == "systemd" {
|
||||
return "Systemd " + runCommand("systemctl --version | head -1 | awk '{print $2}'")
|
||||
} else if path.Base(link) == "openrc-init" {
|
||||
return "OpenRC " + runCommand("openrc --version | awk '{print $3}'")
|
||||
} else if path.Base(link) == "runit-init" {
|
||||
return "Runit"
|
||||
} else {
|
||||
return "Unknown"
|
||||
}
|
||||
}
|
||||
|
||||
func GetLibc() string {
|
||||
cmd := exec.Command("/bin/bash", "-c", "find /usr/lib64/ -maxdepth 1 -name 'ld-*' | grep musl")
|
||||
if err := cmd.Run(); err != nil {
|
||||
cmd = exec.Command("/bin/bash", "-c", "ldd --version | head -1 | cut -d' ' -f4")
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return "Glibc"
|
||||
}
|
||||
return "Glibc " + strings.TrimSpace(string(bytes))
|
||||
}
|
||||
cmd = exec.Command("/bin/bash", "-c", "ldd 2>&1 | grep 'Version' | cut -d' ' -f2")
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return "Musl"
|
||||
}
|
||||
return "Musl " + strings.TrimSpace(string(bytes))
|
||||
}
|
||||
|
||||
func FormatBytes(bytes uint64) string {
|
||||
var suffixes [6]string
|
||||
suffixes[0] = "B"
|
||||
|
||||
Reference in New Issue
Block a user