Formatted every file with , as suggested in #73

This commit is contained in:
TheDarkBug 2021-04-15 09:28:57 +02:00
parent 119504feb4
commit 63427834e3
6 changed files with 688 additions and 545 deletions

1
.gitignore vendored
View file

@ -3,3 +3,4 @@ uwufetch
*.vscode *.vscode
*.gz *.gz
*.1 *.1
.prettierrc

View file

@ -3,35 +3,36 @@
## Code ## Code
To contribute to this project, you should follow some rules to keep the code consistent: To contribute to this project, you should follow some rules to keep the code consistent:
- To indent I like to use tabs in size 4, so you should use them to commit.
- When an the code in an `if` (or `else`) statement is only one line please do not use curly brackets: - Please try to be consistent in code formatting, if you use `Prettier`, this are the rules used in all the files:
```c
if (things)
something(will_happen);
else if (things < 5) ```json
something(NULL); {
"arrowParens": "avoid",
else "bracketSpacing": true,
something(!will_happen); "endOfLine": "lf",
``` "htmlWhitespaceSensitivity": "css",
"insertPragma": false,
- When the the code in an `if` (or `else`) statement is too short, write it in one line (if it is readable): "jsxBracketSameLine": false,
```c "jsxSingleQuote": false,
if (this) that(); "printWidth": 80,
"proseWrap": "preserve",
else if (that) this(); "quoteProps": "as-needed",
"requirePragma": false,
else nothing(); "semi": true,
"singleQuote": false,
"tabWidth": 4,
"trailingComma": "es5",
"useTabs": true,
"vueIndentScriptAndStyle": false
}
``` ```
- Function and variable names should be written in snake_case and abbreviated if too long. - Function and variable names should be written in snake_case and abbreviated if too long.
- Use shell commands only if necessary, just to improve `uwufetch` speed. - Use shell commands only if necessary, just to improve `uwufetch` speed.
- Be sure to reset [debug](https://github.com/TheDarkBug/uwufetch/blob/8205a8cad7e728628a26441969911d5f384132d7/Makefile#L14) in [Makefile](https://github.com/TheDarkBug/uwufetch/blob/main/Makefile) if you edited it.
- Before pushing the commit, please delete double-new-lines.
# #
## Pull requests ## Pull requests
Before sending a pull request be sure that no one is already working on the same thing and to follow this guide-lines. Before sending a pull request be sure that no one is already working on the same thing and to follow this guide-lines.
@ -39,6 +40,7 @@ Before sending a pull request be sure that no one is already working on the same
With pull requests you can `[FIX]` a bug (reported or not), add `[OS-SUPPORT]`, add a `[NEW-FEATURE]` requested in an [issue](https://github.com/TheDarkBug/uwufetch/blob/main/CONTRIBUTING.md#issues), fix a `[TYPO]` or `[OPTIMIZE]` the code. For everything else do not use tags. With pull requests you can `[FIX]` a bug (reported or not), add `[OS-SUPPORT]`, add a `[NEW-FEATURE]` requested in an [issue](https://github.com/TheDarkBug/uwufetch/blob/main/CONTRIBUTING.md#issues), fix a `[TYPO]` or `[OPTIMIZE]` the code. For everything else do not use tags.
# #
## Issues ## Issues
You can use the issues to report bugs with `[BUG]`, to request features `[FEATURE-REQUEST]`, to request support for an os `[OS-SUPPORT]`. For everything else do not use tags. You can use the issues to report bugs with `[BUG]`, to request features `[FEATURE-REQUEST]`, to request support for an os `[OS-SUPPORT]`. For everything else do not use tags.
@ -48,8 +50,9 @@ If you are reporting a `[BUG]`, please include a screenshot and the output of th
If you are requesting a feature, please specify if you are already working on it, then send a [pull request](https://github.com/TheDarkBug/uwufetch/blob/main/CONTRIBUTING.md#pull-requests). If you are requesting a feature, please specify if you are already working on it, then send a [pull request](https://github.com/TheDarkBug/uwufetch/blob/main/CONTRIBUTING.md#pull-requests).
# #
## Conclusions ## Conclusions
I know that adding this file now is a bit late, but I am writing this anyway, just to appear as a *professional* programmer, even though I am not. I know that adding this file now is a bit late, but I am writing this anyway, just to appear as a _professional_ programmer, even though I am not.
I woult take some space to thank all the [contributors](https://github.com/TheDarkBug/uwufetch/graphs/contributors) that made this project better every day. I woult take some space to thank all the [contributors](https://github.com/TheDarkBug/uwufetch/graphs/contributors) that made this project better every day.

View file

@ -3,10 +3,13 @@
A meme system info tool for (almost) all your Linux/Unix-based systems, based on nyan/UwU trend on r/linuxmasterrace. A meme system info tool for (almost) all your Linux/Unix-based systems, based on nyan/UwU trend on r/linuxmasterrace.
## Currently supported distros ## Currently supported distros
#### Full support (Both Ascii art + images are provided for the given distribution) #### Full support (Both Ascii art + images are provided for the given distribution)
Nyalpine, Nyarch Linuwu, Nyartix Linuwu, Debinyan, Fedowa, GentOwO, GnUwU gUwUix, Miwint, Myanjawo, OwOpenSUSE, Pop OwOs, RaspNyan, UwUntu, and OwOid; Plus Nyandroid. Nyalpine, Nyarch Linuwu, Nyartix Linuwu, Debinyan, Fedowa, GentOwO, GnUwU gUwUix, Miwint, Myanjawo, OwOpenSUSE, Pop OwOs, RaspNyan, UwUntu, and OwOid; Plus Nyandroid.
#### Partial support (Either no Ascii art, or no image is provided) #### Partial support (Either no Ascii art, or no image is provided)
endeavOwO, KDE NeOwOn, nixOwOs, Swackwawe, sOwOlus; Plus FweeBSD, and OwOpenBSD endeavOwO, KDE NeOwOn, nixOwOs, Swackwawe, sOwOlus; Plus FweeBSD, and OwOpenBSD
## Building and installation ## Building and installation
@ -27,8 +30,8 @@ Right now, the package is only available on the AUR:
##### Via source ##### Via source
Building requisites: Building requisites:
- Make - Make
- A c compiler - A c compiler
- Pandoc to compile man pages - Pandoc to compile man pages
@ -63,10 +66,12 @@ make termux_uninstall # uninstall for termux
## Images and copyright info ## Images and copyright info
### How to use images ### How to use images
First at all you need `viu`, to install it follow the [guide](https://github.com/atanunq/viu#installation). First at all you need `viu`, to install it follow the [guide](https://github.com/atanunq/viu#installation).
Images are working in almost every terminal, for a better experience i recommend [kitty](https://github.com/kovidgoyal/kitty) Images are working in almost every terminal, for a better experience i recommend [kitty](https://github.com/kovidgoyal/kitty)
### For copyright and logos info ### For copyright and logos info
<font size=2>[COPYRIGHT.md](https://github.com/TheDarkBug/uwufetch/tree/main/res/COPYRIGHT.md)</font> <font size=2>[COPYRIGHT.md](https://github.com/TheDarkBug/uwufetch/tree/main/res/COPYRIGHT.md)</font>
## License ## License

View file

@ -2,7 +2,7 @@
Int this directory, all the logo images, are stored. Int this directory, all the logo images, are stored.
This file contains all copyright info for every image that `uwufetch` uses. If you want to remove *your* image from this repository contact me on [reddit](https://www.reddit.com/user/TheDarkBug). This file contains all copyright info for every image that `uwufetch` uses. If you want to remove _your_ image from this repository contact me on [reddit](https://www.reddit.com/user/TheDarkBug).
I am not a copyright expert, and maybe I am doing all wrong things, please correct this file if you notice something wrong. I am not a copyright expert, and maybe I am doing all wrong things, please correct this file if you notice something wrong.
# Copyrights # Copyrights
@ -368,9 +368,9 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
- License: [CC-BY-3.0](https://creativecommons.org/licenses/by/3.0/) - License: [CC-BY-3.0](https://creativecommons.org/licenses/by/3.0/)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lye15q/im_not_an_artist_but_heres_my_attempt_at_making/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lye15q/im_not_an_artist_but_heres_my_attempt_at_making/)
<!---
# #
<!--
## TEMPLATE ## TEMPLATE
<img title="NAME" src="LINK" alt="image" width="100"> <img title="NAME" src="LINK" alt="image" width="100">
@ -387,4 +387,4 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
- Copyright Holder: [name](https://www.reddit.com/user) - Copyright Holder: [name](https://www.reddit.com/user)
- License: - License:
- [Reference]() - [Reference]()
---> -->

View file

@ -37,11 +37,11 @@
#define PINK "\x1b[38;5;201m" #define PINK "\x1b[38;5;201m"
#define LPINK "\x1b[38;5;213m" #define LPINK "\x1b[38;5;213m"
struct package_manager { struct package_manager
{
char command_string[128]; // command to get number of packages installed char command_string[128]; // command to get number of packages installed
char pkgman_name[16]; // name of the package manager char pkgman_name[16]; // name of the package manager
}; };
struct utsname sys_var; struct utsname sys_var;
struct sysinfo sys; struct sysinfo sys;
struct winsize win; struct winsize win;
@ -77,7 +77,8 @@ void uwu_name();
void truncate_name(char *); void truncate_name(char *);
void remove_brackets(char *); void remove_brackets(char *);
int main(int argc, char *argv[]) { int main(int argc, char *argv[])
{
int opt = 0; int opt = 0;
static struct option long_options[] = { static struct option long_options[] = {
{"ascii", no_argument, NULL, 'a'}, {"ascii", no_argument, NULL, 'a'},
@ -87,12 +88,13 @@ int main(int argc, char *argv[]) {
{"help", no_argument, NULL, 'h'}, {"help", no_argument, NULL, 'h'},
{"image", no_argument, NULL, 'i'}, {"image", no_argument, NULL, 'i'},
{"list", no_argument, NULL, 'l'}, {"list", no_argument, NULL, 'l'},
{ NULL, 0, NULL, 0 } {NULL, 0, NULL, 0}};
};
get_info(); get_info();
parse_config(); parse_config();
while ((opt = getopt_long(argc, argv, "ad:hilc:", long_options, NULL)) != -1) { while ((opt = getopt_long(argc, argv, "ad:hilc:", long_options, NULL)) != -1)
switch (opt) { {
switch (opt)
{
case 'a': case 'a':
ascii_image_flag = 0; ascii_image_flag = 0;
break; break;
@ -101,7 +103,8 @@ int main(int argc, char *argv[]) {
sprintf(image_name, "%s", optarg); sprintf(image_name, "%s", optarg);
break; break;
case 'd': case 'd':
if (optarg) sprintf(version_name, "%s", optarg); if (optarg)
sprintf(version_name, "%s", optarg);
break; break;
case 'h': case 'h':
usage(argv[0]); usage(argv[0]);
@ -116,37 +119,54 @@ int main(int argc, char *argv[]) {
break; break;
} }
} }
if ((argc == 1 && ascii_image_flag == 0) || (argc > 1 && ascii_image_flag == 0)) print_ascii(); if ((argc == 1 && ascii_image_flag == 0) || (argc > 1 && ascii_image_flag == 0))
else if (ascii_image_flag) print_image(); print_ascii();
else if (ascii_image_flag)
print_image();
uwu_name(); uwu_name();
print_info(); print_info();
} }
void parse_config() { void parse_config()
{
char line[256]; char line[256];
char *homedir = getenv("HOME"); char *homedir = getenv("HOME");
char *temp_buffer = ""; char *temp_buffer = "";
FILE *config = fopen(strcat(homedir, "/.config/uwufetch/config"), "r"); FILE *config = fopen(strcat(homedir, "/.config/uwufetch/config"), "r");
if(config == NULL) return; if (config == NULL)
while(fgets(line, sizeof(line), config)) { return;
if(line[0] == '#') continue; while (fgets(line, sizeof(line), config))
{
if (line[0] == '#')
continue;
ascii_image_flag = sscanf(line, "image=%s", image_name); ascii_image_flag = sscanf(line, "image=%s", image_name);
sscanf(line, "distro=%s", version_name); sscanf(line, "distro=%s", version_name);
if (sscanf(line, "nouser%s", temp_buffer)) show_user_info = 0; if (sscanf(line, "nouser%s", temp_buffer))
if (sscanf(line, "noos%s", temp_buffer)) show_os = 0; show_user_info = 0;
if (sscanf(line, "nokernel%s", temp_buffer)) show_kernel = 0; if (sscanf(line, "noos%s", temp_buffer))
if (sscanf(line, "nocpu%s", temp_buffer)) show_cpu = 0; show_os = 0;
if (sscanf(line, "nogpu%s", temp_buffer)) show_gpu = 0; if (sscanf(line, "nokernel%s", temp_buffer))
if (sscanf(line, "noram%s", temp_buffer)) show_ram = 0; show_kernel = 0;
if (sscanf(line, "noshell%s", temp_buffer)) show_shell = 0; if (sscanf(line, "nocpu%s", temp_buffer))
if (sscanf(line, "nopkgs%s", temp_buffer)) show_pkgs = 0; show_cpu = 0;
if (sscanf(line, "nouptime%s", temp_buffer)) show_uptime = 0; if (sscanf(line, "nogpu%s", temp_buffer))
if (sscanf(line, "nocolors%s", temp_buffer)) show_colors = 0; show_gpu = 0;
if (sscanf(line, "noram%s", temp_buffer))
show_ram = 0;
if (sscanf(line, "noshell%s", temp_buffer))
show_shell = 0;
if (sscanf(line, "nopkgs%s", temp_buffer))
show_pkgs = 0;
if (sscanf(line, "nouptime%s", temp_buffer))
show_uptime = 0;
if (sscanf(line, "nocolors%s", temp_buffer))
show_colors = 0;
} }
} }
int pkgman() { // this is just a function that returns the total of installed packages int pkgman()
{ // this is just a function that returns the total of installed packages
int total = 0; int total = 0;
struct package_manager pkgmans[] = { struct package_manager pkgmans[] = {
@ -160,39 +180,48 @@ int pkgman() { // this is just a function that returns the total of installed pa
{"pacman -Qq 2> /dev/null | wc -l", "(pacman)"}, {"pacman -Qq 2> /dev/null | wc -l", "(pacman)"},
{"rpm -qa --last 2> /dev/null | wc -l", "(rpm)"}, {"rpm -qa --last 2> /dev/null | wc -l", "(rpm)"},
{"xbps-query -l 2> /dev/null | wc -l", "(xbps)"}, {"xbps-query -l 2> /dev/null | wc -l", "(xbps)"},
{ "zypper se --installed-only 2> /dev/null | wc -l", "(zypper)" } {"zypper se --installed-only 2> /dev/null | wc -l", "(zypper)"}};
};
const unsigned long pkgman_count = sizeof(pkgmans) / sizeof(pkgmans[0]); const unsigned long pkgman_count = sizeof(pkgmans) / sizeof(pkgmans[0]);
for (long unsigned int i = 0; i < pkgman_count; i++) { // long unsigned int instead of int because of -Wsign-compare for (long unsigned int i = 0; i < pkgman_count; i++)
{ // long unsigned int instead of int because of -Wsign-compare
struct package_manager *current = &pkgmans[i]; struct package_manager *current = &pkgmans[i];
FILE *fp = popen(current->command_string, "r"); FILE *fp = popen(current->command_string, "r");
unsigned int pkg_count; unsigned int pkg_count;
if (fscanf(fp, "%u", &pkg_count) == 3) continue; if (fscanf(fp, "%u", &pkg_count) == 3)
continue;
fclose(fp); fclose(fp);
total += pkg_count; total += pkg_count;
if (pkg_count > 0) strcat(pkgman_name, current->pkgman_name); if (pkg_count > 0)
strcat(pkgman_name, current->pkgman_name);
} }
return total; return total;
} }
void print_info() { void print_info()
{
// store sys info in the sys again // store sys info in the sys again
// print collected info - from host to cpu info // print collected info - from host to cpu info
printf("\033[9A"); // to align info text printf("\033[9A"); // to align info text
if (show_user_info) printf("\033[18C%s%s%s@%s\n", NORMAL, BOLD, user, host); if (show_user_info)
if (show_os) printf("\033[18C%s%sOWOS %s%s\n", NORMAL, BOLD, NORMAL, version_name); printf("\033[18C%s%s%s@%s\n", NORMAL, BOLD, user, host);
if (show_kernel) printf("\033[18C%s%sKEWNEL %s%s\n", NORMAL, BOLD, NORMAL, kernel); if (show_os)
if (show_cpu) printf("\033[18C%s%sCPUWU %s%s\n", NORMAL, BOLD, NORMAL, cpu_model); printf("\033[18C%s%sOWOS %s%s\n", NORMAL, BOLD, NORMAL, version_name);
if (show_kernel)
printf("\033[18C%s%sKEWNEL %s%s\n", NORMAL, BOLD, NORMAL, kernel);
if (show_cpu)
printf("\033[18C%s%sCPUWU %s%s\n", NORMAL, BOLD, NORMAL, cpu_model);
// print the gpus // print the gpus
if (show_gpu) { if (show_gpu)
{
int gpu_iter = 0; int gpu_iter = 0;
while(gpu_model[gpu_iter][0] != '0') { while (gpu_model[gpu_iter][0] != '0')
{
printf("\033[18C%s%sGPUWU %s%s\n", printf("\033[18C%s%sGPUWU %s%s\n",
NORMAL, BOLD, NORMAL, gpu_model[gpu_iter]); NORMAL, BOLD, NORMAL, gpu_model[gpu_iter]);
gpu_iter++; gpu_iter++;
@ -200,19 +229,25 @@ void print_info() {
} }
// print ram to uptime and colors // print ram to uptime and colors
if (show_ram) printf("\033[18C%s%sWAM %s%i MB/%i MB\n", if (show_ram)
printf("\033[18C%s%sWAM %s%i MB/%i MB\n",
NORMAL, BOLD, NORMAL, (ram_used), ram_total); NORMAL, BOLD, NORMAL, (ram_used), ram_total);
if (show_shell) printf("\033[18C%s%sSHELL %s%s\n", if (show_shell)
printf("\033[18C%s%sSHELL %s%s\n",
NORMAL, BOLD, NORMAL, shell); NORMAL, BOLD, NORMAL, shell);
if (show_pkgs) printf("\033[18C%s%sPKGS %s%s%d %s\n", if (show_pkgs)
printf("\033[18C%s%sPKGS %s%s%d %s\n",
NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name); NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name);
if (show_uptime) printf("\033[18C%s%sUWUPTIME %s"/*"%lid, "*/"%lih, %lim\n", if (show_uptime)
printf("\033[18C%s%sUWUPTIME %s" /*"%lid, "*/ "%lih, %lim\n",
NORMAL, BOLD, NORMAL, /*sys.uptime/60/60/24,*/ sys.uptime / 60 / 60, sys.uptime / 60 % 60); NORMAL, BOLD, NORMAL, /*sys.uptime/60/60/24,*/ sys.uptime / 60 / 60, sys.uptime / 60 % 60);
if (show_colors) printf("\033[18C%s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", if (show_colors)
printf("\033[18C%s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n",
BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL); BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
} }
void get_info() { // get all necessary info void get_info()
{ // get all necessary info
char line[256]; // var to scan file lines char line[256]; // var to scan file lines
// terminal width used to truncate long names // terminal width used to truncate long names
@ -222,33 +257,43 @@ void get_info() { // get all necessary info
// os version // os version
FILE *os_release = fopen("/etc/os-release", "r"); FILE *os_release = fopen("/etc/os-release", "r");
FILE *cpuinfo = fopen("/proc/cpuinfo", "r"); FILE *cpuinfo = fopen("/proc/cpuinfo", "r");
if (os_release) { // get normal vars if (os_release)
{ // get normal vars
while (fgets(line, sizeof(line), os_release)) while (fgets(line, sizeof(line), os_release))
if (sscanf(line, "\nID=%s", version_name)) break; if (sscanf(line, "\nID=%s", version_name))
break;
while (fgets(line, sizeof(line), cpuinfo)) while (fgets(line, sizeof(line), cpuinfo))
if (sscanf(line, "model name : %[^\n]", cpu_model)) break; if (sscanf(line, "model name : %[^\n]", cpu_model))
break;
sprintf(user, "%s", getenv("USER")); sprintf(user, "%s", getenv("USER"));
fclose(os_release); fclose(os_release);
} else { // try for android vars, or unknown system }
else
{ // try for android vars, or unknown system
DIR *system_app = opendir("/system/app/"); DIR *system_app = opendir("/system/app/");
DIR *system_priv_app = opendir("/system/priv-app/"); DIR *system_priv_app = opendir("/system/priv-app/");
if (system_app && system_priv_app) { // android if (system_app && system_priv_app)
{ // android
closedir(system_app); closedir(system_app);
closedir(system_priv_app); closedir(system_priv_app);
sprintf(version_name, "android"); sprintf(version_name, "android");
// android vars // android vars
FILE *whoami = popen("whoami", "r"); FILE *whoami = popen("whoami", "r");
if (fscanf(whoami, "%s", user) == 3) sprintf(user, "unknown"); if (fscanf(whoami, "%s", user) == 3)
sprintf(user, "unknown");
fclose(whoami); fclose(whoami);
while (fgets(line, sizeof(line), cpuinfo)) while (fgets(line, sizeof(line), cpuinfo))
if (sscanf(line, "Hardware : %[^\n]", cpu_model)) break; if (sscanf(line, "Hardware : %[^\n]", cpu_model))
} else break;
}
else
sprintf(version_name, "unknown"); sprintf(version_name, "unknown");
} }
fclose(cpuinfo); fclose(cpuinfo);
gethostname(host, 256); gethostname(host, 256);
sscanf(getenv("SHELL"), "%s", shell); sscanf(getenv("SHELL"), "%s", shell);
if (strlen(shell) > 16) memmove(&shell, &shell[27], strlen(shell)); // android shell was too long, this works only for termux if (strlen(shell) > 16)
memmove(&shell, &shell[27], strlen(shell)); // android shell was too long, this works only for termux
// truncate CPU name // truncate CPU name
truncate_name(cpu_model); truncate_name(cpu_model);
@ -265,11 +310,14 @@ void get_info() { // get all necessary info
FILE *meminfo; FILE *meminfo;
meminfo = popen("LANG=EN_us free 2> /dev/null", "r"); meminfo = popen("LANG=EN_us free 2> /dev/null", "r");
while (fgets(line, sizeof(line), meminfo)) { while (fgets(line, sizeof(line), meminfo))
{
// free command prints like this: "Mem:" total used free shared buff/cache available // free command prints like this: "Mem:" total used free shared buff/cache available
if (sscanf(line, "Mem: %d %d", &ram_total, &ram_used)) { if (sscanf(line, "Mem: %d %d", &ram_total, &ram_used))
{
// convert to megabytes // convert to megabytes
if (ram_total > 0 && ram_used > 0) { if (ram_total > 0 && ram_used > 0)
{
// data is in bytes // data is in bytes
ram_total /= 1024; ram_total /= 1024;
ram_used /= 1024; ram_used /= 1024;
@ -287,9 +335,11 @@ void get_info() { // get all necessary info
// add all gpus to the array gpu_model (up to 8 gpus) // add all gpus to the array gpu_model (up to 8 gpus)
while (fgets(line, sizeof(line), gpu)) while (fgets(line, sizeof(line), gpu))
if (sscanf(line, " product: %[^\n]", gpu_model[gpun])) gpun++; if (sscanf(line, " product: %[^\n]", gpu_model[gpun]))
gpun++;
if (strlen(gpu_model[0]) < 2) { if (strlen(gpu_model[0]) < 2)
{
// get gpus with lspci command // get gpus with lspci command
if (strcmp(version_name, "android") != 0) if (strcmp(version_name, "android") != 0)
gpu = popen("lspci -mm 2> /dev/null | grep \"VGA\" | cut --fields=4,6 -d '\"' --output-delimiter=\" \" | sed \"s/ Controller.*//\"", "r"); gpu = popen("lspci -mm 2> /dev/null | grep \"VGA\" | cut --fields=4,6 -d '\"' --output-delimiter=\" \" | sed \"s/ Controller.*//\"", "r");
@ -298,13 +348,16 @@ void get_info() { // get all necessary info
} }
// get all the gpus // get all the gpus
while (fgets(line, sizeof(line), gpu)) { while (fgets(line, sizeof(line), gpu))
if (sscanf(line, "%[^\n]", gpu_model[gpun])) gpun++; {
if (sscanf(line, "%[^\n]", gpu_model[gpun]))
gpun++;
} }
fclose(gpu); fclose(gpu);
// truncate GPU name and remove square brackets // truncate GPU name and remove square brackets
for (int i = 0; i < gpun; i++) { for (int i = 0; i < gpun; i++)
{
remove_brackets(gpu_model[i]); remove_brackets(gpu_model[i]);
truncate_name(gpu_model[i]); truncate_name(gpu_model[i]);
} }
@ -313,10 +366,12 @@ void get_info() { // get all necessary info
pkgs = pkgman(); pkgs = pkgman();
} }
void list(char *arg) { // prints distribution list void list(char *arg)
{ // prints distribution list
// distributions are listed by distribution branch // distributions are listed by distribution branch
// to make the output easier to understand by the user. // to make the output easier to understand by the user.
printf( "%s -d <options>\n" " Available distributions:\n" printf("%s -d <options>\n"
" Available distributions:\n"
" %sArch linux %sbased:\n" " %sArch linux %sbased:\n"
" %sarch, artix, %smanjaro, \"manjaro-arm\"\n\n" " %sarch, artix, %smanjaro, \"manjaro-arm\"\n\n"
" %sDebian/%sUbuntu %sbased:\n" " %sDebian/%sUbuntu %sbased:\n"
@ -332,37 +387,53 @@ void list(char *arg) { // prints distribution list
NORMAL, BLUE, BLUE, PINK, GREEN, YELLOW, WHITE); // Other/spare distributions colors NORMAL, BLUE, BLUE, PINK, GREEN, YELLOW, WHITE); // Other/spare distributions colors
} }
void print_ascii() { // prints logo (as ascii art) of the given system. distributions listed alphabetically. void print_ascii()
{ // prints logo (as ascii art) of the given system. distributions listed alphabetically.
// linux // linux
if (strcmp(version_name, "alpine") == 0) { if (strcmp(version_name, "alpine") == 0)
{
printf("\033[2E\033[4C%s. .___.\n" printf("\033[2E\033[4C%s. .___.\n"
" / \\/ \\ /\n" " / \\/ \\ /\n"
" /OwO\\ɛU\\/ __\n" " /OwO\\ɛU\\/ __\n"
" / \\ \\__/ \\\n" " / \\ \\__/ \\\n"
"/ \\ \\\n\n\n", BLUE); "/ \\ \\\n\n\n",
} else if (strcmp(version_name, "arch") == 0) { BLUE);
}
else if (strcmp(version_name, "arch") == 0)
{
printf("\033[1E\033[8C%s/\\\n" printf("\033[1E\033[8C%s/\\\n"
" / \\\n" " / \\\n"
" /\\ \\\n" " /\\ \\\n"
" / > w <\\\n" " / > w <\\\n"
" / __ \\\n" " / __ \\\n"
" / __| |__-\\\n" " /_-'' ''-_\\\n\n", BLUE); " / __| |__-\\\n"
} else if (strcmp(version_name, "artix") == 0) { " /_-'' ''-_\\\n\n",
BLUE);
}
else if (strcmp(version_name, "artix") == 0)
{
printf("\033[1E\033[8C%s/\\\n" printf("\033[1E\033[8C%s/\\\n"
" / \\\n" " / \\\n"
" /`'.,\\\n" " /`'.,\\\n"
" /\u2022 w \u2022 \\\n" " /\u2022 w \u2022 \\\n"
" / ,`\\\n" " / ,`\\\n"
" / ,.'`. \\\n" " / ,.'`. \\\n"
" /.,'` `'.\\\n\n", BLUE); " /.,'` `'.\\\n\n",
} else if (strcmp(version_name, "debian") == 0) { BLUE);
}
else if (strcmp(version_name, "debian") == 0)
{
printf("\033[1E\033[6C%s______\n" printf("\033[1E\033[6C%s______\n"
" / ___ \\\n" " / ___ \\\n"
" | / OwO |\n" " | / OwO |\n"
" | \\____-\n" " -_\n" " | \\____-\n"
" --_\n\n\n", RED); " -_\n"
} else if (strcmp(version_name, "fedora") == 0) { " --_\n\n\n",
RED);
}
else if (strcmp(version_name, "fedora") == 0)
{
printf("\033[1E\033[8C%s_____\n" printf("\033[1E\033[8C%s_____\n"
" / __)%s\\\n" " / __)%s\\\n"
" %s> %s| / %s<%s\\ \\\n" " %s> %s| / %s<%s\\ \\\n"
@ -372,20 +443,29 @@ void print_ascii() { // prints logo (as ascii art) of the given system. distribu
" %s\\ \\%s__/ |\n" " %s\\ \\%s__/ |\n"
" %s\\%s(_____/\n", " %s\\%s(_____/\n",
BLUE, CYAN, WHITE, BLUE, WHITE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE); BLUE, CYAN, WHITE, BLUE, WHITE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE);
} else if (strcmp(version_name, "gentoo") == 0) { }
else if (strcmp(version_name, "gentoo") == 0)
{
printf("\033[1E\033[3C%s_-----_\n" printf("\033[1E\033[3C%s_-----_\n"
" ( \\\n" " ( \\\n"
" \\ OwO \\\n" " \\ OwO \\\n"
"%s \\ )\n" "%s \\ )\n"
" / _/\n" " / _/\n"
" ( _-\n" " \\____-\n\n", MAGENTA, WHITE); " ( _-\n"
} else if (strcmp(version_name, "gnu") == 0 || strcmp(version_name, "guix") == 0) { " \\____-\n\n",
MAGENTA, WHITE);
}
else if (strcmp(version_name, "gnu") == 0 || strcmp(version_name, "guix") == 0)
{
printf("\033[3E\033[3C%s,= %s,-_-. %s=.\n" printf("\033[3E\033[3C%s,= %s,-_-. %s=.\n"
" ((_/%s)%sU U%s(%s\\_))\n" " ((_/%s)%sU U%s(%s\\_))\n"
" `-'%s(. .)%s`-'\n" " `-'%s(. .)%s`-'\n"
" %s\\%sw%s/\n" " %s\\%sw%s/\n"
" \u00af\n\n", WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW); " \u00af\n\n",
} else if (strcmp(version_name, "manjaro") == 0) { WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW);
}
else if (strcmp(version_name, "manjaro") == 0)
{
printf("\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n" printf("\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n"
" \e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m \e[0;42m \e[0m\n"
" \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m\e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m\e[0;42m \e[0m \e[0;42m \e[0m\n"
@ -394,7 +474,9 @@ void print_ascii() { // prints logo (as ascii art) of the given system. distribu
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"); " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n");
} else if (strcmp(version_name, "\"manjaro-arm\"") == 0) { }
else if (strcmp(version_name, "\"manjaro-arm\"") == 0)
{
printf("\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n" printf("\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n"
" \e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m \e[0;42m \e[0m\n"
" \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m\e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m\e[0;42m \e[0m \e[0;42m \e[0m\n"
@ -403,35 +485,49 @@ void print_ascii() { // prints logo (as ascii art) of the given system. distribu
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"); " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n");
} else if (strcmp(version_name, "linuxmint") == 0) { }
else if (strcmp(version_name, "linuxmint") == 0)
{
printf("\033[2E\033[4C%s__/\\____/\\.\n" printf("\033[2E\033[4C%s__/\\____/\\.\n"
" |%s.--. %s|\n" " |%s.--. %s|\n"
" %s, %s¯| %s| UwU| %s|\n" " %s, %s¯| %s| UwU| %s|\n"
" %s|| %s| %s| | %s|\n" " %s|| %s| %s| | %s|\n"
" %s | %s| %s---- %s|\n" " %s | %s| %s---- %s|\n"
" %s --%s'--------'\n\n", GREEN, WHITE, GREEN, WHITE, " %s --%s'--------'\n\n",
GREEN, WHITE, GREEN, WHITE,
GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, GREEN, WHITE,
GREEN, WHITE, GREEN, WHITE, GREEN); GREEN, WHITE, GREEN, WHITE, GREEN);
} else if (strcmp(version_name, "\"opensuse-leap\"") == 0 || strcmp(version_name, "\"opensuse-tumbleweed\"") == 0) { }
else if (strcmp(version_name, "\"opensuse-leap\"") == 0 || strcmp(version_name, "\"opensuse-tumbleweed\"") == 0)
{
printf("\033[3E\033[3C%s|\\----/|\n" printf("\033[3E\033[3C%s|\\----/|\n"
" _ / %sO O%s\\\n" " _ / %sO O%s\\\n"
" __. W /\n" " __. W /\n"
" '----'\n\n\n", GREEN, WHITE, GREEN); " '----'\n\n\n",
} else if (strcmp(version_name, "pop") == 0) { GREEN, WHITE, GREEN);
}
else if (strcmp(version_name, "pop") == 0)
{
printf("\033[2E\033[6C%s|\\.-----./|\n" printf("\033[2E\033[6C%s|\\.-----./|\n"
" |/ \\|\n" " |/ \\|\n"
" | > < |\n" " | > < |\n"
" | %s~ %sP! %s~ %s|\n" " | %s~ %sP! %s~ %s|\n"
"_ ---\\ w /\n" "_ ---\\ w /\n"
" \\_/ '-----'\n\n", BLUE, LPINK, WHITE, LPINK, BLUE); " \\_/ '-----'\n\n",
} else if (strcmp(version_name, "raspbian") == 0) { BLUE, LPINK, WHITE, LPINK, BLUE);
}
else if (strcmp(version_name, "raspbian") == 0)
{
printf("\033[0E\033[6C%s__ __\n" printf("\033[0E\033[6C%s__ __\n"
" (_\\)(/_)\n" " (_\\)(/_)\n"
" %s(>(__)<)\n" " %s(>(__)<)\n"
" (_(_)(_)_)\n" " (_(_)(_)_)\n"
" (_(__)_)\n" " (_(__)_)\n"
" (__)\n\n\n", GREEN, RED); " (__)\n\n\n",
} else if (strcmp(version_name, "ubuntu") == 0) { GREEN, RED);
}
else if (strcmp(version_name, "ubuntu") == 0)
{
printf("\033[1E\033[9C%s_\n" printf("\033[1E\033[9C%s_\n"
" %s\u25E3%s__(_)%s\u25E2%s\n" " %s\u25E3%s__(_)%s\u25E2%s\n"
" _/ --- \\\n" " _/ --- \\\n"
@ -439,30 +535,39 @@ void print_ascii() { // prints logo (as ascii art) of the given system. distribu
" \\ --- _/\n" " \\ --- _/\n"
" %sC__/%s---(_)\n\n\n", " %sC__/%s---(_)\n\n\n",
LPINK, PINK, LPINK, PINK, LPINK, PINK, LPINK); LPINK, PINK, LPINK, PINK, LPINK, PINK, LPINK);
} else if (strcmp(version_name, "\"void\"") == 0) { }
else if (strcmp(version_name, "\"void\"") == 0)
{
printf("\033[2E\033[2C%s |\\_____/|\n" printf("\033[2E\033[2C%s |\\_____/|\n"
" _\\____ |\n" " _\\____ |\n"
" | \\ \\ |\n" " | \\ \\ |\n"
" | | %s\u00d2w\u00d3 %s| | ,\n" " | | %s\u00d2w\u00d3 %s| | ,\n"
" | \\_____\\_|-, |\n" " | \\_____\\_|-, |\n"
" -_______\\ \\_/\n\n", GREEN, WHITE, GREEN); " -_______\\ \\_/\n\n",
} else if (strcmp(version_name, "android") == 0) { // android at the end because it could be not considered as an actual distribution of gnu/linux GREEN, WHITE, GREEN);
}
else if (strcmp(version_name, "android") == 0)
{ // android at the end because it could be not considered as an actual distribution of gnu/linux
printf("\033[2E\033[3C%s\\ _------_ /\n" printf("\033[2E\033[3C%s\\ _------_ /\n"
" / \\\n" " / \\\n"
" | %s~ %s> w < %s~ %s|\n" " | %s~ %s> w < %s~ %s|\n"
" ------------\n\n\n\n", GREEN, RED, GREEN, RED, GREEN); " ------------\n\n\n\n",
GREEN, RED, GREEN, RED, GREEN);
} }
// BSD // BSD
else if (strcmp(version_name, "freebsd") == 0) { else if (strcmp(version_name, "freebsd") == 0)
{
printf("\033[2E\033[1C%s/\\,-'''''-,/\\\n" printf("\033[2E\033[1C%s/\\,-'''''-,/\\\n"
" \\_) (_/\n" " \\_) (_/\n"
" | \\ / |\n" " | \\ / |\n"
" | O w O |\n" " | O w O |\n"
" ; ;\n" " '-_____-'\n\n", RED); " ; ;\n"
" '-_____-'\n\n",
} else if (strcmp(version_name, "openbsd") == 0) { RED);
}
else if (strcmp(version_name, "openbsd") == 0)
{
printf("\033[1E\033[3C%s ______ \n" printf("\033[1E\033[3C%s ______ \n"
" \\- -/ %s\u2665 \n" " \\- -/ %s\u2665 \n"
"%s\\_/ \\ \n" "%s\\_/ \\ \n"
@ -471,11 +576,11 @@ void print_ascii() { // prints logo (as ascii art) of the given system. distribu
"%s/ \\ / \n" "%s/ \\ / \n"
" /-________-\\ \n\n", " /-________-\\ \n\n",
YELLOW, RED, YELLOW, WHITE, YELLOW, LPINK, WHITE, LPINK, YELLOW); YELLOW, RED, YELLOW, WHITE, YELLOW, LPINK, WHITE, LPINK, YELLOW);
} }
// everything else // everything else
else printf( "\033[0E\033[2C%s._.--._.\n" else
printf("\033[0E\033[2C%s._.--._.\n"
" \\|>%s_%s< |/\n" " \\|>%s_%s< |/\n"
" |%s:_/%s |\n" " |%s:_/%s |\n"
" // \\ \\ ?\n" " // \\ \\ ?\n"
@ -485,27 +590,35 @@ void print_ascii() { // prints logo (as ascii art) of the given system. distribu
WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW); WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW);
} }
void print_image() { // prints logo (as an image) of the given system. distributions listed alphabetically. void print_image()
{ // prints logo (as an image) of the given system. distributions listed alphabetically.
char command[256]; char command[256];
if (strlen(image_name) > 1) if (strlen(image_name) > 1)
sprintf(command, "viu -t -w 18 -h 8 %s 2> /dev/null", image_name); sprintf(command, "viu -t -w 18 -h 8 %s 2> /dev/null", image_name);
else { else
if (strcmp(version_name, "android") == 0) sprintf(command, "viu -t -w 18 -h 8 /data/data/com.termux/files/usr/lib/uwufetch/%s.png 2> /dev/null", version_name); {
else sprintf(command, "viu -t -w 18 -h 8 /usr/lib/uwufetch/%s.png 2> /dev/null", version_name); if (strcmp(version_name, "android") == 0)
sprintf(command, "viu -t -w 18 -h 8 /data/data/com.termux/files/usr/lib/uwufetch/%s.png 2> /dev/null", version_name);
else
sprintf(command, "viu -t -w 18 -h 8 /usr/lib/uwufetch/%s.png 2> /dev/null", version_name);
} }
printf("\n"); printf("\n");
if (system(command) != 0) { // if viu is not installed or the image is missing if (system(command) != 0)
{ // if viu is not installed or the image is missing
printf("\033[0E\033[3C%s\n" printf("\033[0E\033[3C%s\n"
" There was an\n" " There was an\n"
" error: viu\n" " error: viu\n"
" is not installed\n" " is not installed\n"
" or the image\n" " or the image\n"
" is not fount\n" " is not fount\n"
" Read IMAGES.md\n" " for more info.\n\n", RED); " Read IMAGES.md\n"
" for more info.\n\n",
RED);
} }
} }
void usage(char *arg) { void usage(char *arg)
{
printf("Usage: %s <args>\n" printf("Usage: %s <args>\n"
" -a, --ascii prints logo as ascii text (default)\n" " -a, --ascii prints logo as ascii text (default)\n"
" -c, --custom choose a custom image\n" // this options should be different, maybe merged with `-i` " -c, --custom choose a custom image\n" // this options should be different, maybe merged with `-i`
@ -519,9 +632,12 @@ void usage(char *arg) {
arg, BLUE, NORMAL); arg, BLUE, NORMAL);
} }
void uwu_name() { // uwufies distro name void uwu_name()
{ // uwufies distro name
#define STRING_TO_UWU(original, uwufied) if (strcmp(version_name, original) == 0) sprintf(version_name, "%s", uwufied) #define STRING_TO_UWU(original, uwufied) \
if (strcmp(version_name, original) == 0) \
sprintf(version_name, "%s", uwufied)
// linux // linux
STRING_TO_UWU("alpine", "Nyalpine"); STRING_TO_UWU("alpine", "Nyalpine");
@ -549,14 +665,14 @@ void uwu_name() { // uwufies distro name
else STRING_TO_UWU("android", "Nyandroid"); // android at the end because it could be not considered as an actual distribution of gnu/linux else STRING_TO_UWU("android", "Nyandroid"); // android at the end because it could be not considered as an actual distribution of gnu/linux
// BSD // BSD
else STRING_TO_UWU else STRING_TO_UWU("freebsd", "FweeBSD");
("freebsd", "FweeBSD"); else STRING_TO_UWU("openbsd", "OwOpenBSD");
else STRING_TO_UWU
("openbsd", "OwOpenBSD");
else { else
{
sprintf(version_name, "%s", "unknown"); sprintf(version_name, "%s", "unknown");
if (ascii_image_flag == 1) { if (ascii_image_flag == 1)
{
print_image(); print_image();
printf("\n"); printf("\n");
} }
@ -564,18 +680,24 @@ void uwu_name() { // uwufies distro name
#undef STRING_TO_UWU #undef STRING_TO_UWU
} }
void truncate_name(char *name) { void truncate_name(char *name)
{
for (int i = target_width; i < 256; i++) for (int i = target_width; i < 256; i++)
name[i] = '\0'; name[i] = '\0';
} }
// remove square brackets (for gpu names) // remove square brackets (for gpu names)
void remove_brackets(char *str) { void remove_brackets(char *str)
{
int i = 0, j; int i = 0, j;
while (i < (int) strlen(str)) { while (i < (int)strlen(str))
if (str[i] == '[' || str[i] == ']') { {
if (str[i] == '[' || str[i] == ']')
{
for (j = i; j < (int)strlen(str); j++) for (j = i; j < (int)strlen(str); j++)
str[j] = str[j + 1]; str[j] = str[j + 1];
} else i++; }
else
i++;
} }
} }

View file

@ -1,18 +1,23 @@
% UWUFETCH(1) uwufetch 1.2 % UWUFETCH(1) uwufetch 1.2
% TheDarkBug % TheDarkBug
% April 2021 % April 2021
<!--- <!---
I am using markdown instead of troff because i don't know how to use it, and the same could be for some people. I am using markdown instead of troff because i don't know how to use it, and the same could be for some people.
I also don't know if this is a good practice, but it works, so I am keeping it. I also don't know if this is a good practice, but it works, so I am keeping it.
To "compile" this file you need pandoc (https://pandoc.org). To "compile" this file you need pandoc (https://pandoc.org).
---> --->
# NAME # NAME
uwufetch - A meme system info tool for Linux, based on nyan/uwu trend on r/linuxmasterrace. uwufetch - A meme system info tool for Linux, based on nyan/uwu trend on r/linuxmasterrace.
# SYNOPSIS # SYNOPSIS
**uwufetch** [*OPTIONS*] [*ARGUMENTS*]\ **uwufetch** [*OPTIONS*] [*ARGUMENTS*]\
## OPTIONS ## OPTIONS
-a --ascii\ -a --ascii\
prints the logo as ascii text (default) prints the logo as ascii text (default)
@ -35,9 +40,11 @@ prints image instead of ascii logo
prints a list of all supported distributions prints a list of all supported distributions
# CONFIG FILE # CONFIG FILE
The config file is located in $HOME/.config/uwufetch/config (you need to create it), but you can change the path by using the `--config` option. The config file is located in $HOME/.config/uwufetch/config (you need to create it), but you can change the path by using the `--config` option.
## OPTIONS ## OPTIONS
distribution=name\ \ \ \ \ # use it to change displayed distribution\ distribution=name\ \ \ \ \ # use it to change displayed distribution\
image=/path/to/image\ \ \ # enable images (leave blank), or use custom image path\ image=/path/to/image\ \ \ # enable images (leave blank), or use custom image path\
nouser\ \ \ \ \ \ \ \ \ \ \ # disable username and hostname\ nouser\ \ \ \ \ \ \ \ \ \ \ # disable username and hostname\
@ -52,6 +59,7 @@ nouptime\ \ \ \ \ \ \ \ \ # disable uptime\
nocolors\ \ \ \ \ \ \ \ \ # disable colors nocolors\ \ \ \ \ \ \ \ \ # disable colors
# SUPPORTED DISTRIBUTIONS # SUPPORTED DISTRIBUTIONS
Distribution name\ \ \ \ \ -d option Distribution name\ \ \ \ \ -d option
Nyalpine\ \ \ \ \ \ \ \ \ alpine\ Nyalpine\ \ \ \ \ \ \ \ \ alpine\
@ -82,15 +90,18 @@ FweeBSD\ \ \ \ \ \ \ \ \ \ freebsd\
OwOpenBSD\ \ \ \ \ \ \ \ \ openbsd OwOpenBSD\ \ \ \ \ \ \ \ \ openbsd
# DESCRIPTION # DESCRIPTION
Uwufetch is a program inspired by neofetch and ufetch, that takes system informations\ Uwufetch is a program inspired by neofetch and ufetch, that takes system informations\
and prints them in the terminal in an UwU way, with and UwU ascii logo or image. and prints them in the terminal in an UwU way, with and UwU ascii logo or image.
# EXAMPLES # EXAMPLES
uwufetch -d arch\ \ \ \ \ \ \ \ \ \ # prints arch logo\ uwufetch -d arch\ \ \ \ \ \ \ \ \ \ # prints arch logo\
uwufetch -\-custom some_image.png\ \ # prints custom image (does not need full path)\ uwufetch -\-custom some_image.png\ \ # prints custom image (does not need full path)\
ueufetch -i -d artix\ \ \ \ \ \ \ \ # prints artix image ueufetch -i -d artix\ \ \ \ \ \ \ \ # prints artix image
# DEPENDANCES # DEPENDANCES
lshw\ \ better gpu info\ lshw\ \ better gpu info\
viu\ \ \ print images instead of ascii logo\ viu\ \ \ print images instead of ascii logo\
kitty\ \ better image viewing kitty\ \ better image viewing
@ -98,4 +109,5 @@ kitty\ \ better image viewing
All of this are optional, there is no necessary dependancy. All of this are optional, there is no necessary dependancy.
# LICENSE AND COPYRIGTH # LICENSE AND COPYRIGTH
uwufetch is provided under the GPL3 license, for copyright info read https://github.com/TheDarkBug/uwufetch/tree/main/res/COPYRIGHT.md. uwufetch is provided under the GPL3 license, for copyright info read https://github.com/TheDarkBug/uwufetch/tree/main/res/COPYRIGHT.md.