fordon_greeman / sfetch

feat: replace make with a c-based build system, and change ascii logo Browse files
theidioticdev committed 2026-10-02 parent b9aad54 commit 3f64c7c29dd822ac1ac72c764d69fd342d83e2f5
Showing 3 changed files with 87 additions and 92 deletions. UnifiedSplit
+0 −22 Makefile deleted file mode 100755
@@ -1,22 +0,0 @@
1 -PREFIX ?= /usr/local
2 -CC := gcc
3 -CFLAGS := -Wall -Wextra -Werror -std=c11 -pedantic -O2
4 -
5 -SRC := src/main.c
6 -TARGET := sfetch
7 -
8 -.PHONY: all clean install uninstall
9 -
10 -all: $(TARGET)
11 -
12 -$(TARGET): $(SRC)
13 - $(CC) $(CFLAGS) $< -o $@
14 -
15 -install: $(TARGET)
16 - install -Dm755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/sfetch
17 -
18 -uninstall:
19 - rm -f $(DESTDIR)$(PREFIX)/bin/sfetch
20 -
21 -clean:
22 - rm -rf build bin
+5 −4 readme.org
@@ -11,12 +11,13 @@ just like suckless.org's projects (dwm, st, surf, etc...), sfetch is configured
11 ** first: 11 ** first:
12 make sure you have the dependencies required: 12 make sure you have the dependencies required:
13 1. a compiler (=gcc=, =clang=) 13 1. a compiler (=gcc=, =clang=)
14 - 2. gnumake (make) 14 + 2. a c lib (glibc, musl, etc...)
15 - 3. a c lib (glibc, musl, etc...)
16 ** second: 15 ** second:
17 #+BEGIN_SRC sh :eval no 16 #+BEGIN_SRC sh :eval no
18 git clone https://codeberg.org/theidioticdev/sfetch 17 git clone https://codeberg.org/theidioticdev/sfetch
19 cd sfetch 18 cd sfetch
20 -make PREFIX=$HOME/.local install # for your specific user 19 +gcc bs.c -o build
21 -sudo make install # system-wide 20 +sudo/doas ./build --install # to install system-wide, tweak bs.c and recompile it if u want to install to .local/bin
21 +./build # to build only
22 +sudo/doas ./build --uninstall # uninstall it
22 #+END_SRC 23 #+END_SRC
+82 −66 src/main.c
@@ -17,79 +17,95 @@
17 17
18 const char *version = "0.1.5"; 18 const char *version = "0.1.5";
19 19
20 -void printAscii(void) { 20 +void
21 +printAscii(void)
22 +{
21 #if ENABLE_ASCII 23 #if ENABLE_ASCII
22 - static const char asciiArt[] = 24 + static const char asciiArt[] =
23 - " ████████ \n" 25 + " ___ \n"
24 - " ██████████ \n" 26 + " (.. | \n"
25 - " █████████ \n" 27 + " (<> | \n"
26 - " ███████ \n" 28 + " / __ \\ \n"
27 - " ██████ ██ ██ ██ ██ ██ ██ ██ \n" 29 + " ( / \\ /| \n"
28 - " ███████ \n" 30 + " _/\\ __)/_) \n"
29 - " █████████ \n" 31 + " \\/-____\\/ ";
30 - " ██████████ \n" 32 + printf(C_YELLOW "%s" C_RESET "\n\n", asciiArt);
31 - " ████████ ";
32 - printf(C_YELLOW "%s" C_RESET "\n\n", asciiArt);
33 #endif 33 #endif
34 } 34 }
35 -void printOS(void) { 35 +void
36 +printOS(void)
37 +{
36 #ifdef __linux__ 38 #ifdef __linux__
37 - FILE *fp = fopen("/etc/os-release", "r"); 39 + FILE *fp = fopen("/etc/os-release", "r");
38 - if (!fp) { 40 + if (!fp)
39 - printf(C_CYAN "OS: " C_RESET "Generic Linux\n"); 41 + {
40 - return; 42 + printf(C_CYAN "OS: " C_RESET "Generic Linux\n");
41 - } 43 + return;
42 - char line[512]; 44 + }
43 - while (fgets(line, sizeof(line), fp)) { 45 + char line[512];
44 - if(strncmp(line, "PRETTY_NAME=", 12) == 0) { 46 + while (fgets(line, sizeof(line), fp))
45 - char *name = line + 12; 47 + {
46 - if (*name == '"') name++; 48 + if(strncmp(line, "PRETTY_NAME=", 12) == 0)
47 - size_t len = strlen(name); 49 + {
48 - if (len > 0 && name[len - 1] == '\n') name[--len] = '\0'; 50 + char *name = line + 12;
49 - if (len > 0 && name[len - 1] == '"') name[--len] = '\0'; 51 + if (*name == '"') name++;
50 - printf(C_CYAN "OS: " C_RESET "%s\n", name); 52 + size_t len = strlen(name);
51 - fclose(fp); 53 + if (len > 0 && name[len - 1] == '\n') name[--len] = '\0';
52 - return; 54 + if (len > 0 && name[len - 1] == '"') name[--len] = '\0';
53 - } 55 + printf(C_CYAN "OS: " C_RESET "%s\n", name);
54 - } 56 + fclose(fp);
55 - fclose(fp); 57 + return;
56 - printf(C_CYAN "OS: " C_RESET "Generic Linux\n"); 58 + }
59 + }
60 + fclose(fp);
61 + printf(C_CYAN "OS: " C_RESET "Generic Linux\n");
57 #else 62 #else
58 - struct utsname otherOS; 63 + struct utsname otherOS;
59 - if (uname(&otherOS) != 0) { 64 + if (uname(&otherOS) != 0)
60 - perror("uname"); 65 + {
61 - return; 66 + perror("uname");
62 - } 67 + return;
63 - printf(C_CYAN "OS: " C_RESET "%s\n", otherOS.sysname); 68 + }
69 + printf(C_CYAN "OS: " C_RESET "%s\n", otherOS.sysname);
64 #endif 70 #endif
65 } 71 }
66 -int printStats(void) { 72 +
67 - char *wm = getenv("XDG_SESSION_DESKTOP"); 73 +int
68 - if (!wm) { 74 +printStats(void)
69 - wm = getenv("DESKTOP_SESSION"); 75 +{
70 - } 76 + char *wm = getenv("XDG_SESSION_DESKTOP");
71 - char *session = getenv("XDG_SESSION_TYPE"); 77 + if (!wm)
72 - struct utsname info; 78 + {
73 - if (uname(&info) != 0) { 79 + wm = getenv("DESKTOP_SESSION");
74 - perror("uname"); 80 + }
75 - return 1; 81 + char *session = getenv("XDG_SESSION_TYPE");
76 - } 82 + struct utsname info;
77 - printOS(); 83 + if (uname(&info) != 0)
78 - printf(C_GREEN "Kernel: " C_RESET "%s %s\n",info.sysname, info.release); 84 + {
79 - printf(C_BLUE "Host: " C_RESET "%s\n", info.nodename); 85 + perror("uname");
80 - printf(C_RED "WM: " C_RESET "%s (%s)\n", wm ? wm : "unknown / tty", session ? session : "unknown"); 86 + return 1;
81 - return 0; 87 + }
88 + printOS();
89 + printf(C_GREEN "Kernel: " C_RESET "%s %s\n",info.sysname, info.release);
90 + printf(C_BLUE "Host: " C_RESET "%s\n", info.nodename);
91 + printf(C_RED "WM: " C_RESET "%s (%s)\n", wm ? wm : "unknown / tty", session ? session : "unknown");
92 + return 0;
82 } 93 }
83 -int main(int argc, char **argv) { 94 +
84 - for (int i = 1; i < argc; i++) { 95 +int
85 - if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) { 96 +main(int argc, char **argv)
86 - printf("sfetch-%s\n", version); 97 +{
87 - return 0; 98 + for (int i = 1; i < argc; i++)
88 - } 99 + {
89 - fprintf(stderr, "unknown argument: %s\nusage: %s [-v]\n", argv[i], argv[0]); 100 + if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0)
90 - return 1; 101 + {
102 + printf("sfetch-%s\n", version);
103 + return 0;
91 } 104 }
92 - printAscii(); 105 + fprintf(stderr, "unknown argument: %s\nusage: %s [-v]\n", argv[i], argv[0]);
93 - printStats(); 106 + return 1;
94 - return 0; 107 + }
108 + printAscii();
109 + printStats();
110 + return 0;
95 } 111 }