#include #include void getCPU(char cpu[]); void getGPU(char gpu[]); void getKernel(char kernel[]); void getUptime(int *hr, int *min); void getPackages(int *pkgs); void getShell(char shell[]); void init(char gpu[], char cpu[], char kernel[], char shell[], int *hr, int *min, int *pkgs){ getGPU(gpu); getCPU(cpu); getKernel(kernel); getUptime(hr, min); getPackages(pkgs); getShell(shell); } int main(int argc, char *argv[]){ int hr, min, pkgs; char kernel[50], shell[25], cpu[70], gpu[70]; init(gpu, cpu, kernel, shell, &hr, &min, &pkgs); if ( !strcmp(argv[1], "-lol") ){ printf("\n"); printf("\x1b[1m . \x1b[36mOS\x1b[0m: Arch Linux\n"); printf("\x1b[1m / \\ \x1b[36mKERNEL\x1b[0m: %s\n", kernel); printf("\x1b[1m / \\ \x1b[36mUPTIME\x1b[0m: %dh, %dm\n", hr, min); printf("\x1b[1m /^. \\ \x1b[36mPACKAGES\x1b[0m: %d\n", pkgs); printf("\x1b[1m / .-. \\ \x1b[36mSHELL\x1b[0m: %s\n", shell); 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("\n\n"); } return 0; } void getCPU(char cpu[]){ FILE *cpuName = popen("grep -m 1 name /proc/cpuinfo | awk -F':' '{print $2}' | cut -c 2- ", "r"); fscanf(cpuName, "%[^\n]%s", cpu); fclose(cpuName); } void getGPU(char gpu[]){ FILE *gpuName = popen("lspci -v | grep VGA -m 1 | awk -F'[' '{ print $2 }' | awk -F']' '{ print $1 }' ", "r"); fscanf(gpuName, "%[^\n]%s", gpu); fclose(gpuName); } void getKernel(char kernel[]){ FILE *pathKernel = popen("uname -r", "r"); fscanf(pathKernel, "%[^\n]%s", kernel); fclose(pathKernel); } void getUptime(int *hr, int *min){ int sec; FILE *FUp = fopen("/proc/uptime", "r"); fscanf(FUp, "%d", &sec); fclose(FUp); *hr = (sec/60/60%24); *min = (sec/60%60); } void getPackages(int *pkgs){ FILE *packages = popen("pacman -Q | wc -l", "r"); fscanf(packages, "%d", pkgs); fclose(packages); } void getShell(char shell[]){ FILE *shellpath = popen("echo $SHELL | awk -F'/' '{ print $NF }'", "r"); fscanf(shellpath, "%s", shell); fclose(shellpath); }