diff --git a/fetchy.c b/fetchy.c index 5a0b3d5..93b91e8 100644 --- a/fetchy.c +++ b/fetchy.c @@ -10,9 +10,10 @@ void getGPU(char gpu[]); void getKernel(char kernel[]); void getUptime(int *hr, int *min); void getPackages(int *pkgs, char sys); +void getRAM(float *total, float *used, char bar[]); -void init(char gpu[], char cpu[], char kernel[], char syst[], char *sys, int *hr, int *min, int *pkgs){ +void init(char gpu[], char cpu[], char kernel[], char syst[], char *sys, int *hr, int *min, int *pkgs, float *total, float *used, char bar[]){ getSys(syst, sys); getGPU(gpu); @@ -20,7 +21,7 @@ void init(char gpu[], char cpu[], char kernel[], char syst[], char *sys, int *hr getKernel(kernel); getUptime(hr, min); getPackages(pkgs, *sys); - + getRAM(total, used, bar); } @@ -29,10 +30,12 @@ void init(char gpu[], char cpu[], char kernel[], char syst[], char *sys, int *hr int main(int argc, char *argv[]){ - int hr, min, pkgs; + int hr = 0, min = 0, pkgs = 0; char kernel[50], cpu[70], gpu[70], syst[20], sys; + char bar[] = "[----------]"; + float total = 0, used = 0; - init(gpu, cpu, kernel, syst, &sys, &hr, &min, &pkgs); + init(gpu, cpu, kernel, syst, &sys, &hr, &min, &pkgs, &total, &used, bar); if ( !strcmp(argv[1], "-arch") ) { @@ -45,7 +48,7 @@ int main(int argc, char *argv[]){ printf("\x1b[1m / .-. \\ \x1b[36m\x1b[0m \n"); printf("\x1b[1m / ( ) _\\ \x1b[36mCPU\x1b[0m: %s\n", cpu); printf("\x1b[1m / _.~ ~._^\\ \x1b[36mGPU\x1b[0m: %s\n", gpu); - printf("\x1b[1m /.^ ^.\\ \x1b[36m\x1b[0m \n"); + printf("\x1b[1m /.^ ^.\\ \x1b[36mRAM\x1b[0m: %.2f GB of %.2f GB, %s -> %.2f %%\n", used / 1000000, total / 1000000, bar, (used/total) * 100); printf("\n\n"); } @@ -60,7 +63,7 @@ int main(int argc, char *argv[]){ printf("\x1b[1m .-. , `___: \x1b[36m\x1b[0m \n"); printf("\x1b[1m (:::) : ___ \x1b[36mCPU\x1b[0m: %s\n", cpu); printf("\x1b[1m `-` ` , : \x1b[36mGPU\x1b[0m: %s\n", gpu); - printf("\x1b[1m \\ / ,..-` , \x1b[36m\x1b[0m \n"); + printf("\x1b[1m \\ / ,..-` , \x1b[36mRAM\x1b[0m: %.2f GB of %.2f GB, %s -> %.2f %%\n", used / 1000000, total / 1000000, bar, (used/total) * 100); printf("\x1b[1m `./ / .-.` \x1b[36m\x1b[0m \n"); printf("\x1b[1m `-..-( ) \x1b[36m\x1b[0m \n"); printf("\x1b[1m `-` \x1b[36m\x1b[0m \n"); @@ -141,3 +144,17 @@ void getPackages(int *pkgs, char sys){ fclose(packages); } +void getRAM(float *total, float *used, char bar[]){ + int usedPercent; + + FILE *RAM = popen("free | grep Mem", "r"); + + fscanf(RAM, "%s %f %f ", dump, total, used); + fclose(RAM); + + usedPercent = (int) (((*used) / (*total)) * 10); + + for( int i = 1; i <= usedPercent; i++){ + bar[i] = '*'; + } +}