From 0fd198d83e0772d6139abc1338fd9ae403b3101c Mon Sep 17 00:00:00 2001 From: EnumDev Date: Thu, 22 Aug 2024 21:35:38 +0300 Subject: [PATCH] Added init system support --- config/fetch_script.sh | 1 + main.go | 1 + utils.go | 31 +++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/config/fetch_script.sh b/config/fetch_script.sh index ab44e51..2c47bbe 100644 --- a/config/fetch_script.sh +++ b/config/fetch_script.sh @@ -5,6 +5,7 @@ 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 diff --git a/main.go b/main.go index 6b5a5b7..afc730f 100644 --- a/main.go +++ b/main.go @@ -166,6 +166,7 @@ func SetupFetchEnv(showTimeTaken bool) []string { 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() diff --git a/utils.go b/utils.go index afc4ebb..c0cfcf3 100644 --- a/utils.go +++ b/utils.go @@ -391,6 +391,37 @@ 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 {