diff --git a/Makefile b/Makefile index c6ee65e..7b54fd9 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ CFLAGS?= -s -flto -Os -pedantic +CC?=cc all: - cc fetch.c $(CFLAGS) -o kfetch + $(CC) fetch.c $(CFLAGS) -o kfetch diff --git a/fetch.c b/fetch.c index 950e2a9..5034f39 100644 --- a/fetch.c +++ b/fetch.c @@ -3,7 +3,7 @@ int main(void) { Init(); - void (*FUNCS[])(void) = {PrintOs, GetKernel, GetShell, GetUptime, GetUser, GetPkgs, GetArch, Blank, PrintColors}; + void (*FUNCS[])(void) = {PrintOs, GetAvg, GetKernel, GetShell, GetUptime, GetUser, GetPkgs, GetArch, Blank, PrintColors}; size_t i; for (i = 0; i < sizeof(FUNCS) / sizeof(void *); i++) { @@ -12,8 +12,7 @@ int main(void) { //If art is less than buffer size else if (i >= Logo.size) - for (size_t j = 0; j < strlen(Logo.art[Logo.size - 1]); j++) - printf(" "); + printf("%s", Logo.art[Logo.size - 1]); FUNCS[i](); diff --git a/funcs.h b/funcs.h index c377aa5..adbd4da 100644 --- a/funcs.h +++ b/funcs.h @@ -1,8 +1,12 @@ //Base funcs +#ifndef FUNCS_H +#define FUNCS_H + #include #include #include #include +#include #include #include #include @@ -47,7 +51,7 @@ void Init(void) { Logo = GetArt(); if (uname(&Uts) < 0) { - fprintf(stderr, "WTF, uname dont work\n"); + fprintf(stderr, "kfetch: uaname() failed: %s\n", strerror(errno)); exit(1); } } @@ -55,58 +59,59 @@ void Init(void) { void GetShell(void) { char *shell = getenv("SHELL"); if (shell == NULL) { - printf("%s SHELL \033[0;37mNothing\033[0m", Logo.color); + printf("%sSHELL \033[0;37mNothing\033[0m", Logo.color); return; } char *splt = strrchr(shell, '/'); if (splt != NULL) - printf("%s SHELL \033[0;37m%s\033[0m", Logo.color, splt + 1); + printf("%sSHELL \033[0;37m%s\033[0m", Logo.color, splt + 1); } void GetKernel(void) { - printf("%s KERNEL \033[0;37m%s\033[0m", Logo.color, Uts.release); + printf("%sKERNEL \033[0;37m%s\033[0m", Logo.color, Uts.release); } void PrintOs(void) { if (Os == NULL) { - printf("%s OS \033[0;37m%s\033[0m", Logo.color, Uts.sysname); + printf("%sOS \033[0;37m%s\033[0m", Logo.color, Uts.sysname); return; } - printf("%s OS \033[0;37m%s\033[0m", Logo.color, Os + strlen("PRETTY_NAME= ")); + printf("%sOS \033[0;37m%s\033[0m", Logo.color, Os + strlen("PRETTY_NAME= ")); } void GetUptime(void) { - #ifdef CLOCK - struct timespec uptime; - clock_gettime(CLOCK, &uptime); + int UptimeH = 0; + int UptimeM = 0; - int UptimeH = uptime.tv_sec / 3600; - int UptimeM = (uptime.tv_sec / 60) - (uptime.tv_sec / 3600 * 60); +#ifdef CLOCK + struct timespec uptime; + clock_gettime(CLOCK, &uptime); - printf("%s UPTIME \033[0;37m%dh %dm\033[0m", Logo.color, UptimeH, UptimeM); + UptimeH = uptime.tv_sec / 3600; + UptimeM = (uptime.tv_sec / 60) - (uptime.tv_sec / 3600 * 60); - #else - printf("%s UPTIME \033[0;37m0h 0m\033[0m", Logo.color); +#endif + + printf("%sUPTIME \033[0;37m%dh %dm\033[0m", Logo.color, UptimeH, UptimeM); - #endif } void GetUser(void) { struct passwd *pw = getpwuid(geteuid()); - printf("%s USER \033[0;37m%s\033[0m", Logo.color, pw->pw_name); + printf("%sUSER \033[0;37m%s\033[0m", Logo.color, pw->pw_name); } void GetPkgs(void) { if (Logo.pkg_cmd == NULL) { - printf("%s PKGS \033[0;37m0", Logo.color); + printf("%sPKGS \033[0;37m0", Logo.color); return; } FILE *fp = popen(Logo.pkg_cmd, "r"); - printf("%s PKGS \033[0;37m", Logo.color); + printf("%sPKGS \033[0;37m", Logo.color); char ch; while ((ch = fgetc(fp)) != '\n') @@ -142,13 +147,25 @@ char *GetOs(void) { } void PrintColors(void) { - printf(" "); for (int i = 0; i < 7; i++) printf("\033[1;3%dm● \033[0;3%dm● \033[0m", i, i); } void GetArch(void) { - printf("%s ARCH \033[0;37m%s", Logo.color, Uts.machine); + printf("%sARCH \033[0;37m%s", Logo.color, Uts.machine); +} + +void GetAvg(void) { + double avg[3] = {0, 0, 0}; + +#ifndef __ANDROID__ + if (getloadavg(avg, sizeof(avg) / sizeof(avg[0])) < 0) { + fprintf(stderr, "kfetch: getloadavg() failed\n"); + return; + } +#endif + + printf("%sLoadAvg \033[0;37m%.2f %.2f %.2f", Logo.color, avg[0], avg[1], avg[2]); } void Blank(void) { @@ -198,3 +215,4 @@ LOGO GetArt(void) { return art; } +#endif diff --git a/funcs.list b/funcs.list index a86251a..f5108be 100644 --- a/funcs.list +++ b/funcs.list @@ -1,6 +1,7 @@ Edit FUNCS in fetch.c GetShell +GetAvg GetKernel PrintOs GetUptime diff --git a/logos.h b/logos.h index 6352577..61c64e1 100644 --- a/logos.h +++ b/logos.h @@ -19,7 +19,7 @@ char *Void[] = { }; char *Alpine[] = { - " /\\ /\\ ", + "\033[34m /\\ /\\ ", "\033[34m / \\ \\ ", "\033[34m / \\ \\ ", "\033[34m / \\ \\ ", @@ -40,7 +40,6 @@ char *Arch[] = { }; char *Unknow[] = { - " ", "\033[1;36m ___ ", "\033[1;36m (\033[0m..\033[1;36m | ", "\033[1;36m (\033[33m<> \033[1;36m| ", @@ -48,6 +47,6 @@ char *Unknow[] = { "\033[1;36m ( \033[0m/ \\\033[1;36m /| ", "\033[33m_\033[1;36m/ \033[0m\\__/\033[1;36m/_) ", "\033[1;36m\\/\033[1;36m-____\033[33m\\/ ", - " " + " " };