summaryrefslogtreecommitdiff
path: root/fakefetch.c
diff options
context:
space:
mode:
Diffstat (limited to 'fakefetch.c')
-rw-r--r--fakefetch.c110
1 files changed, 110 insertions, 0 deletions
diff --git a/fakefetch.c b/fakefetch.c
new file mode 100644
index 0000000..c801a05
--- /dev/null
+++ b/fakefetch.c
@@ -0,0 +1,110 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+// __ _ __ _ _
+// / _| | | / _| | | | |
+// | |_ __ _| | _____| |_ ___| |_ ___| |__
+// | _/ _` | |/ / _ \ _/ _ \ __/ __| '_ \
+// | || (_| | < __/ || __/ || (__| | | |
+// |_| \__,_|_|\_\___|_| \___|\__\___|_| |_|
+
+// Note: I have tried to make this as user friendly as possable/
+
+//----------------------------------------------------------------------------------|
+// Welcome to fakefetch |
+//----------------------------------------------------------------------------------|
+// This is just neofetch but |
+// You do it yourself, now in C! |
+//----------------------------------------------------------------------------------|
+// This is Libre code, you can do whatever you want with it since |
+// it is under the GPL |
+// ---------------------------------------------------------------------------------|
+// Function to execute shell commands and get the output |
+// ---------------------------------------------------------------------------------|
+char* execute_command(const char* command) {
+ char* result = malloc(128 * sizeof(char));
+ FILE* fp;
+ if ((fp = popen(command, "r")) == NULL) {
+ printf("Error opening pipe!\n");
+ return NULL;
+ }
+ if (fgets(result, 128, fp) == NULL) {
+ printf("Error reading pipe!\n");
+ return NULL;
+ }
+ pclose(fp);
+
+ // Remove newline character
+ result[strcspn(result, "\n")] = '\0';
+ return result;
+}
+
+int main() {
+ // ---------------------------------------------------------------------------------------------------//
+ // Colour codes
+ // ---------------------------------------------------------------------------------------------------//
+
+ // Define colours by changing the last two letters to Xterm number
+ const char* PURPLE = "\033[38;5;92m";
+ const char* MAGENTA = "\033[38;5;98m";
+ const char* RESET = "\033[0m";
+
+ // Set colours
+ const char* Text = MAGENTA;
+ const char* Background = PURPLE;
+
+ // ---------------------------------------------------------------------------------------------------//
+
+ // Get system information
+ char* USERNAME = execute_command("whoami");
+ char* HOSTNAME = execute_command("uname -n");
+ char* DISTRO = execute_command("lsb_release -sd | sed 's/\"//g'");
+ char* CPU_INFO = execute_command("lscpu | grep 'Model name' | awk '{$1=$2=\"\"; print $0}' | sed 's/^[ \\t]*//'");
+ char* CORES = execute_command("lscpu | grep 'Core(s) per socket' | awk '{print $NF}'");
+ char* GPU_INFO = execute_command("lspci | grep -i 'VGA\\|3D' | sed 's/.*: //; s/ (.*//'");
+ char* UPTIME = execute_command("uptime -p | sed 's/up //'");
+
+ // Terminal and package manager
+ const char* TERMINAL = "Alacritty"; //Still need to work on the terminal bit
+ char* PACKAGE_MANAGER = execute_command(
+ "if command -v pacman &> /dev/null; then echo Pacman; "
+ "elif command -v apt-get &> /dev/null; then echo APT; "
+ "else echo Unknown; fi"
+ );
+
+ // ---------------------------------------------------------------------------------------------------//
+ // Print output
+ // ---------------------------------------------------------------------------------------------------//
+ printf("%s :: %s\n", Background, RESET);
+ printf("%s .==. %s\n", Background, RESET);
+ printf("%s ==== %s\n", Background, RESET);
+ printf("%s -===== %s@%s%s\n", Background, USERNAME, HOSTNAME, RESET);
+ printf("%s -====== ========================================%s\n", Background, RESET);
+ printf("%s :========- OS → %s%s%s\n", Background, Text, DISTRO, RESET);
+ printf("%s :.:-=======- GPU → %s%s%s\n", Background, Text, GPU_INFO, RESET);
+ printf("%s :==---=======- PM → %s%s%s\n", Background, Text, PACKAGE_MANAGER, RESET);
+ printf("%s :==============- Term → %s%s%s\n", Background, Text, TERMINAL, RESET);
+ printf("%s :================- Uptime → %s%s%s\n", Background, Text, UPTIME, RESET);
+ printf("%s :==================- ========================================%s\n", Background, RESET);
+ printf("%s :========----========- %s\n", Background, RESET);
+ printf("%s -========. .========- %s\n", Background, RESET);
+ printf("%s -======== ========= %s\n", Background, RESET);
+ printf("%s -========: :======---. %s\n", Background, RESET);
+ printf("%s -=========: .=======-:. %s\n", Background, RESET);
+ printf("%s =========--: .--=======-: %s\n", Background, RESET);
+ printf("%s .=====-:.. ..:-=====%s\n", Background, RESET);
+ printf("%s .==-:. .:-==:%s\n", Background, RESET);
+
+ // Free up memory
+ free(USERNAME);
+ free(HOSTNAME);
+ free(DISTRO);
+ free(CPU_INFO);
+ free(CORES);
+ free(GPU_INFO);
+ free(UPTIME);
+ free(PACKAGE_MANAGER);
+
+ return 0;
+}