diff --git a/README.org b/README.org index efcb64e..36cce03 100644 --- a/README.org +++ b/README.org @@ -12,9 +12,9 @@ #+ATTR_HTML: :alt fetchy Screenshot :title fetchy Screenshot :align left [[https://gitlab.com/vojjvoda/fetchy/-/raw/master/screenshot.png]] -fetchy is a minimal command line system information tool written in C +fetchy is a minimal command line system information tool written in C. -It displays the os, kernel, uptime, number of installed packages and shell +It displays the os, kernel, uptime, number of installed packages, shell, CPU and GPU info. * Install diff --git a/fetchy.c b/fetchy.c index 9acaa22..446ca8d 100644 --- a/fetchy.c +++ b/fetchy.c @@ -1,71 +1,24 @@ #include -int day, hour, min, sec, pacman; -char os[50], kernel[50], shell[25]; +#include "info.h" -void getDistro() { - FILE *distroName = popen("cat /etc/*-release | grep 'PRETTY_NAME=' | cut -d '\"' -f2", "r"); - fscanf(distroName, "%[^\n]%s", &os); - fclose(distroName); -} +void main(){ -void getKernel() { - FILE *pathKernel = popen("uname -r", "r"); - - fscanf(pathKernel, "%[^\n]%s", &kernel); - fclose(pathKernel); -} -void getUptime() { - FILE *pathUptime = fopen("/proc/uptime", "r"); - - fscanf(pathUptime, "%d", &sec); - fclose(pathUptime); - - day = (sec/60/60/24); - hour = (sec/60/60%24); - min = (sec/60%60); -} - -void getPackages() { - FILE *pacpackages = popen("pacman -Q | wc -l", "r"); - - fscanf(pacpackages, "%d", &pacman); - fclose(pacpackages); -} - -void getShell() { - FILE *shellpath = popen("echo $SHELL", "r"); - - fscanf(shellpath, "%s", &shell); - fclose(shellpath); -} - -void init() { - getDistro(); - getKernel(); - getUptime(); - getPackages(); - getShell(); -} - -int main() { init(); printf("\n"); - printf("\x1b[1m . \x1b\n"); - printf("\x1b[1m / \\ \x1b\n"); - printf("\x1b[1m / \\ \x1b[36mOS\x1b[0m: %s\n", os); - printf("\x1b[1m /^. \\ \x1b[36mKERNEL\x1b[0m: %s\n", kernel); - printf("\x1b[1m / .-. \\ \x1b[36mUPTIME\x1b[0m: %dd, %dh, %dm\n", day, hour, min); - printf("\x1b[1m / ( ) _\\ \x1b[36mPACKAGES\x1b[0m: %d (pacman)\n", pacman); - printf("\x1b[1m / _.~ ~._^\\ \x1b[36mSHELL\x1b[0m: %s\n", shell); - printf("\x1b[1m /.^ ^.\\ \x1b\n"); - 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", hrs, 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\n"); + printf("\n\n"); - - return 0; } diff --git a/info.h b/info.h new file mode 100644 index 0000000..1455664 --- /dev/null +++ b/info.h @@ -0,0 +1,65 @@ +int hrs, min, + sec, pkgs; + +char kernel[50], shell[25], + cpu[70], gpu[70]; + + + + +void getCPU(){ + 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(){ + FILE *gpuName = popen("lspci -v | rg VGA -m 1 | awk -F'[' '{ print $2 }' | awk -F']' '{ print $1 }' ", "r"); + + fscanf(gpuName, "%[^\n]%s", &gpu); + fclose(gpuName); +} + + + +void getKernel(){ + FILE *pathKernel = popen("uname -r", "r"); + + fscanf(pathKernel, "%[^\n]%s", &kernel); + fclose(pathKernel); +} + +void getUptime(){ + FILE *pathUptime = fopen("/proc/uptime", "r"); + + fscanf(pathUptime, "%d", &sec); + fclose(pathUptime); + + hrs = (sec/60/60%24); + min = (sec/60%60); +} + +void getPackages(){ + FILE *pacpackages = popen("pacman -Q | wc -l", "r"); + + fscanf(pacpackages, "%d", &pkgs); + fclose(pacpackages); +} + +void getShell(){ + FILE *shellpath = popen("echo $SHELL | awk -F'/' '{ print $NF }'", "r"); + + fscanf(shellpath, "%s", &shell); + fclose(shellpath); +} + +void init(){ + getGPU(); + getCPU(); + getKernel(); + getUptime(); + getPackages(); + getShell(); +} diff --git a/screenshot.png b/screenshot.png index ee9abca..441c270 100644 Binary files a/screenshot.png and b/screenshot.png differ