Made shell prettier, removed days from uptime, added cpu and gpu info

This commit is contained in:
Јован Ђокић-Шумарац 2020-12-14 02:25:58 +01:00
parent 4ed8808e57
commit 623ff235f0
4 changed files with 78 additions and 60 deletions

View file

@ -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

View file

@ -1,71 +1,24 @@
#include <stdio.h>
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;
}

65
info.h Normal file
View file

@ -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();
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 78 KiB