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,
"jsxBracketSameLine": false,
"jsxSingleQuote": false,
"printWidth": 80,
"proseWrap": "preserve",
"quoteProps": "as-needed",
"requirePragma": false,
"semi": true,
"singleQuote": false,
"tabWidth": 4,
"trailingComma": "es5",
"useTabs": true,
"vueIndentScriptAndStyle": false
}
``` ```
- When the the code in an `if` (or `else`) statement is too short, write it in one line (if it is readable): - Function and variable names should be written in snake_case and abbreviated if too long.
```c - Use shell commands only if necessary, just to improve `uwufetch` speed.
if (this) that();
else if (that) this();
else nothing();
```
- 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.
- 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,11 +30,11 @@ Right now, the package is only available on the AUR:
##### Via source ##### Via source
Building requisites: Building requisites:
- Make
- A c compiler - Make
- Pandoc to compile man pages - A c compiler
- Pandoc to compile man pages
To install UwUfetch from the source, type these commands in the terminal: To install UwUfetch from the source, type these commands in the terminal:
@ -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
@ -13,16 +13,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Arch Linux Devs - Copyright Holder: Arch Linux Devs
- License: [Arch Linux TrademarkPolicy](https://archlinux.org/art/) - License: [Arch Linux TrademarkPolicy](https://archlinux.org/art/)
- [Reference](https://wiki.archlinux.org/index.php/DeveloperWiki:TrademarkPolicy) - [Reference](https://wiki.archlinux.org/index.php/DeveloperWiki:TrademarkPolicy)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/Ishaan_P](https://www.reddit.com/user/Ishaan_P) - Copyright Holder: [u/Ishaan_P](https://www.reddit.com/user/Ishaan_P)
- License: No license, just a reddit post - License: No license, just a reddit post
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxfg9j/someone_posted_uwuntu_so_i_made_nyarch/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxfg9j/someone_posted_uwuntu_so_i_made_nyarch/)
# #
@ -32,16 +32,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Artix Linux Devs - Copyright Holder: Artix Linux Devs
- License: [Artix Brand Book](https://gitea.artixlinux.org/artix/artwork/src/branch/master/README.md) - License: [Artix Brand Book](https://gitea.artixlinux.org/artix/artwork/src/branch/master/README.md)
- [Reference](https://gitea.artixlinux.org/artix/artwork) - [Reference](https://gitea.artixlinux.org/artix/artwork)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/akzcake](https://www.reddit.com/user/akzcake) - Copyright Holder: [u/akzcake](https://www.reddit.com/user/akzcake)
- License: No license, just a reddit post - License: No license, just a reddit post
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly6wd1/nyartix/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly6wd1/nyartix/)
# #
@ -51,17 +51,17 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Debian Devs - Copyright Holder: Debian Devs
- License: LGPL3 - License: LGPL3
- [License URL](https://www.gnu.org/licenses/lgpl-3.0.html) - [License URL](https://www.gnu.org/licenses/lgpl-3.0.html)
- [Reference](https://www.debian.org/logos/) - [Reference](https://www.debian.org/logos/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/Ishaan_P](https://www.reddit.com/user/Ishaan_P) - Copyright Holder: [u/Ishaan_P](https://www.reddit.com/user/Ishaan_P)
- License: [LGPL3](https://www.gnu.org/licenses/lgpl-3.0.html) - License: [LGPL3](https://www.gnu.org/licenses/lgpl-3.0.html)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxqip4/debinyan/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxqip4/debinyan/)
# #
@ -71,16 +71,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Endeavour OS Devs - Copyright Holder: Endeavour OS Devs
- License: [No license was mentioned on the website](https://endeavouros.com/endeavouros-logo/) - License: [No license was mentioned on the website](https://endeavouros.com/endeavouros-logo/)
- [Reference](https://endeavouros.com/endeavouros-logo/) - [Reference](https://endeavouros.com/endeavouros-logo/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/zuru2003](https://www.reddit.com/user/zuru2003) - Copyright Holder: [u/zuru2003](https://www.reddit.com/user/zuru2003)
- License: No license, just a reddit post - License: No license, just a reddit post
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly9zed/endowo_os/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly9zed/endowo_os/)
# #
@ -90,16 +90,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: - Copyright Holder:
- License: [Fedora logo usage guide-lines](https://fedoraproject.org/wiki/Logo/UsageGuidelines) - License: [Fedora logo usage guide-lines](https://fedoraproject.org/wiki/Logo/UsageGuidelines)
- [Reference](https://fedoraproject.org/wiki/Logo) - [Reference](https://fedoraproject.org/wiki/Logo)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/iD3nis124](https://www.reddit.com/user/iD3nis124) - Copyright Holder: [u/iD3nis124](https://www.reddit.com/user/iD3nis124)
- License: [Fedora logo usage guide-lines (I guess)](https://fedoraproject.org/wiki/Logo/UsageGuidelines) - License: [Fedora logo usage guide-lines (I guess)](https://fedoraproject.org/wiki/Logo/UsageGuidelines)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxjp3s/saw_nyarch_and_had_to_do_fedowa/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxjp3s/saw_nyarch_and_had_to_do_fedowa/)
# #
@ -109,17 +109,17 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Gentoo Devs - Copyright Holder: Gentoo Devs
- License: [Gentoo name and logo guide-lines](https://www.gentoo.org/inside-gentoo/foundation/name-logo-guidelines.html) - License: [Gentoo name and logo guide-lines](https://www.gentoo.org/inside-gentoo/foundation/name-logo-guidelines.html)
- [Reference](https://www.gentoo.org/inside-gentoo/artwork/gentoo-logo.html) - [Reference](https://www.gentoo.org/inside-gentoo/artwork/gentoo-logo.html)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/TheSatisfiedPig](https://www.reddit.com/user/TheSatisfiedPig) - Copyright Holder: [u/TheSatisfiedPig](https://www.reddit.com/user/TheSatisfiedPig)
- License: [CC-BY-SA/2.5](https://creativecommons.org/licenses/by-sa/2.5/) - License: [CC-BY-SA/2.5](https://creativecommons.org/licenses/by-sa/2.5/)
- [Reference (reddit)](https://www.reddit.com/r/linuxmasterrace/comments/m11aml/genchu/) - [Reference (reddit)](https://www.reddit.com/r/linuxmasterrace/comments/m11aml/genchu/)
- [Reference (gentoo artwork)](https://wiki.gentoo.org/wiki/Project:Artwork/Artwork#Genchu) - [Reference (gentoo artwork)](https://wiki.gentoo.org/wiki/Project:Artwork/Artwork#Genchu)
# #
@ -129,16 +129,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Aurelio A. Heckert (aurium@gmail.com) - Copyright Holder: Aurelio A. Heckert (aurium@gmail.com)
- License: [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/) - License: [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/)
- [Reference](https://www.gnu.org/graphics/heckert_gnu.svg) - [Reference](https://www.gnu.org/graphics/heckert_gnu.svg)
### Modifications ### Modifications
- Description: Addition of ahegao facial expression, and colorization. - Description: Addition of ahegao facial expression, and colorization.
- Copyright Holder: [u/FOSSphorous](https://www.reddit.com/user/FOSSphorous/) - Copyright Holder: [u/FOSSphorous](https://www.reddit.com/user/FOSSphorous/)
- License: [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/) - License: [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lyi8ce/its_actually_gnuwulinux/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lyi8ce/its_actually_gnuwulinux/)
## Manjaro ## Manjaro
@ -146,16 +146,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Manjaro GmbH & Co. KG. - Copyright Holder: Manjaro GmbH & Co. KG.
- License: [Manjaro terms of use](https://manjaro.org/terms-of-use/) - License: [Manjaro terms of use](https://manjaro.org/terms-of-use/)
- [Reference](https://gitlab.manjaro.org/artwork) - [Reference](https://gitlab.manjaro.org/artwork)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/matrixrunner](https://www.reddit.com/user/matrixrunner) - Copyright Holder: [u/matrixrunner](https://www.reddit.com/user/matrixrunner)
- License: [Manjaro terms of use (I guess, again)](https://manjaro.org/terms-of-use/) - License: [Manjaro terms of use (I guess, again)](https://manjaro.org/terms-of-use/)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxx9h7/myanjawo_also_in_wallpaper/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxx9h7/myanjawo_also_in_wallpaper/)
# #
@ -165,16 +165,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Linux mint Devs - Copyright Holder: Linux mint Devs
- License: [None (I think)](https://linuxmint.com/faq.php) - License: [None (I think)](https://linuxmint.com/faq.php)
- [Reference](https://linuxmint.com/) - [Reference](https://linuxmint.com/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/iD3nis124](https://www.reddit.com/user/iD3nis124) - Copyright Holder: [u/iD3nis124](https://www.reddit.com/user/iD3nis124)
- License: None - License: None
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly8oy0/seen_a_lot_of_people_asking_for_mint_so_here_it_is/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly8oy0/seen_a_lot_of_people_asking_for_mint_so_here_it_is/)
# #
@ -184,16 +184,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Jens (kde team) - Copyright Holder: Jens (kde team)
- License: None - License: None
- [Reference](https://community.kde.org/Neon#Logo) - [Reference](https://community.kde.org/Neon#Logo)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/muff2](https://www.reddit.com/user/muff2) - Copyright Holder: [u/muff2](https://www.reddit.com/user/muff2)
- License: None - License: None
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxt82v/kde_uwon/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxt82v/kde_uwon/)
# #
@ -203,16 +203,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Tim Cuthbertson (@timbertson) - Copyright Holder: Tim Cuthbertson (@timbertson)
- License: [CC-BY license](https://creativecommons.org/licenses/by/4.0/) - License: [CC-BY license](https://creativecommons.org/licenses/by/4.0/)
- [Reference](https://github.com/NixOS/nixos-artwork/tree/master/logo#nixos-logo) - [Reference](https://github.com/NixOS/nixos-artwork/tree/master/logo#nixos-logo)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/ant-artica](https://www.reddit.com/user/ant-artica) - Copyright Holder: [u/ant-artica](https://www.reddit.com/user/ant-artica)
- License: [CC-BY license](https://creativecommons.org/licenses/by/4.0/) - License: [CC-BY license](https://creativecommons.org/licenses/by/4.0/)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lzdwl4/nixowos/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lzdwl4/nixowos/)
# #
@ -222,16 +222,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: OpenSuse Devs - Copyright Holder: OpenSuse Devs
- License: [Opensuse Trademark guide-lines](https://news.opensuse.org/2009/03/02/opensuse-trademark-guidelines-released/) - License: [Opensuse Trademark guide-lines](https://news.opensuse.org/2009/03/02/opensuse-trademark-guidelines-released/)
- [Reference](https://en.opensuse.org/openSUSE:Artwork_brand#Buttons) - [Reference](https://en.opensuse.org/openSUSE:Artwork_brand#Buttons)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/VortexAcherontic](https://www.reddit.com/user/VortexAcherontic) - Copyright Holder: [u/VortexAcherontic](https://www.reddit.com/user/VortexAcherontic)
- License: [OpenSuse Trademark guide-lines](https://news.opensuse.org/2009/03/02/opensuse-trademark-guidelines-released/) - License: [OpenSuse Trademark guide-lines](https://news.opensuse.org/2009/03/02/opensuse-trademark-guidelines-released/)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lyhgxp/my_better_attempt_on_owosuse/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lyhgxp/my_better_attempt_on_owosuse/)
# #
@ -241,16 +241,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: System76 - Copyright Holder: System76
- License: [System76 Terms](https://system76.com/terms) - License: [System76 Terms](https://system76.com/terms)
- [Reference](https://pop.system76.com/) - [Reference](https://pop.system76.com/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/Mochimo786](https://www.reddit.com/user/Mochimo786) - Copyright Holder: [u/Mochimo786](https://www.reddit.com/user/Mochimo786)
- License: [System76 Terms](https://system76.com/terms) - License: [System76 Terms](https://system76.com/terms)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxz3xu/pop_uwus/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxz3xu/pop_uwus/)
# #
@ -260,16 +260,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Slackware Devs - Copyright Holder: Slackware Devs
- License: [Slackware Propaganda Graphics FAQ](http://www.slackware.com/~msimons/slackware/grfx/grfxfaq.txt) - License: [Slackware Propaganda Graphics FAQ](http://www.slackware.com/~msimons/slackware/grfx/grfxfaq.txt)
- [Reference](http://www.slackware.com/~msimons/slackware/grfx/) - [Reference](http://www.slackware.com/~msimons/slackware/grfx/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/theldus](https://www.reddit.com/user/theldus) - Copyright Holder: [u/theldus](https://www.reddit.com/user/theldus)
- License: [Slackware Propaganda Graphics FAQ](http://www.slackware.com/~msimons/slackware/grfx/grfxfaq.txt) - License: [Slackware Propaganda Graphics FAQ](http://www.slackware.com/~msimons/slackware/grfx/grfxfaq.txt)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lyt6xi/slawckyware/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lyt6xi/slawckyware/)
# #
@ -279,16 +279,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Solus Devs - Copyright Holder: Solus Devs
- License: [Solus brand copyright](https://getsol.us/branding/) - License: [Solus brand copyright](https://getsol.us/branding/)
- [Reference](https://getsol.us/home/) - [Reference](https://getsol.us/home/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/welpelp](https://www.reddit.com/user/welpelp) - Copyright Holder: [u/welpelp](https://www.reddit.com/user/welpelp)
- License: [Solus brand copyright](https://getsol.us/branding/) - License: [Solus brand copyright](https://getsol.us/branding/)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly9il3/continuing_the_trend_i_made_sowus_my_first/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/ly9il3/continuing_the_trend_i_made_sowus_my_first/)
# #
@ -298,16 +298,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Linux foundation - Copyright Holder: Linux foundation
- License: [Who knows](https://web.archive.org/web/20040401161253/http://www.linux.org/info/logos.html) - License: [Who knows](https://web.archive.org/web/20040401161253/http://www.linux.org/info/logos.html)
- [Reference](https://www.linux.org/) - [Reference](https://www.linux.org/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/Annual-Examination96](https://www.reddit.com/user/Annual-Examination96) - Copyright Holder: [u/Annual-Examination96](https://www.reddit.com/user/Annual-Examination96)
- License: [Who knows](https://web.archive.org/web/20040401161253/http://www.linux.org/info/logos.html) - License: [Who knows](https://web.archive.org/web/20040401161253/http://www.linux.org/info/logos.html)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lz2i32/tuwu/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lz2i32/tuwu/)
# #
@ -317,16 +317,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Canonical Ltd - Copyright Holder: Canonical Ltd
- License: [Canonical Ltd Trademarks](https://ubuntu.com/legal/trademarks) - License: [Canonical Ltd Trademarks](https://ubuntu.com/legal/trademarks)
- [Reference](https://design.ubuntu.com/brand/ubuntu-logo/#:~:text=The%20Ubuntu%20logo%20is%20made,a%20flat%20orange%2Dcoloured%20background.) - [Reference](https://design.ubuntu.com/brand/ubuntu-logo/#:~:text=The%20Ubuntu%20logo%20is%20made,a%20flat%20orange%2Dcoloured%20background.)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/Chicki2D](https://www.reddit.com/user/Chicki2D) - Copyright Holder: [u/Chicki2D](https://www.reddit.com/user/Chicki2D)
- License: [Canonical Ltd Trademarks](https://ubuntu.com/legal/trademarks) - License: [Canonical Ltd Trademarks](https://ubuntu.com/legal/trademarks)
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lwsnul/uwuntu/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lwsnul/uwuntu/)
# #
@ -336,16 +336,16 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: VoidLinux Contributors - Copyright Holder: VoidLinux Contributors
- License: None - License: None
- [Reference](https://voidlinux.org/) - [Reference](https://voidlinux.org/)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/Satoqz](https://www.reddit.com/user/Satoqz) - Copyright Holder: [u/Satoqz](https://www.reddit.com/user/Satoqz)
- License: None - License: None
- [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxnjwd/my_boyfriend_decided_to_create_owoid/) - [Reference](https://www.reddit.com/r/linuxmasterrace/comments/lxnjwd/my_boyfriend_decided_to_create_owoid/)
# #
@ -357,34 +357,34 @@ I am not a copyright expert, and maybe I am doing all wrong things, please corre
### Base artwork: ### Base artwork:
- Copyright Holder: Google Inc. - Copyright Holder: Google Inc.
- 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://developer.android.com/distribute/marketing-tools/brand-guidelines#android_robot) - [Reference](https://developer.android.com/distribute/marketing-tools/brand-guidelines#android_robot)
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [u/6b86b3ac03c167320d93](https://www.reddit.com/user/6b86b3ac03c167320d93) - Copyright Holder: [u/6b86b3ac03c167320d93](https://www.reddit.com/user/6b86b3ac03c167320d93)
- 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">
### Base artwork: ### Base artwork:
- Copyright Holder: - Copyright Holder:
- License: [name](url) - License: [name](url)
- [Reference]() - [Reference]()
### Modifications ### Modifications
- Description: uwu style - Description: uwu style
- Copyright Holder: [name](https://www.reddit.com/user) - Copyright Holder: [name](https://www.reddit.com/user)
- License: - License:
- [Reference]() - [Reference]()
---> -->

View file

@ -24,24 +24,24 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
// COLORS // COLORS
#define NORMAL "\x1b[0m" #define NORMAL "\x1b[0m"
#define BOLD "\x1b[1m" #define BOLD "\x1b[1m"
#define BLACK "\x1b[30m" #define BLACK "\x1b[30m"
#define RED "\x1b[31m" #define RED "\x1b[31m"
#define GREEN "\x1b[32m" #define GREEN "\x1b[32m"
#define YELLOW "\x1b[33m" #define YELLOW "\x1b[33m"
#define BLUE "\x1b[34m" #define BLUE "\x1b[34m"
#define MAGENTA "\x1b[0;35m" #define MAGENTA "\x1b[0;35m"
#define CYAN "\x1b[36m" #define CYAN "\x1b[36m"
#define WHITE "\x1b[37m" #define WHITE "\x1b[37m"
#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 pkgman_name[16]; // name of the package manager char command_string[128]; // command to get number of packages installed
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;
@ -49,7 +49,7 @@ int ram_total, ram_used = 0;
// initialise the variables to store data, gpu array can hold up to 8 gpus // initialise the variables to store data, gpu array can hold up to 8 gpus
int pkgs, target_width = 0; int pkgs, target_width = 0;
// all flags available // all flags available
int ascii_image_flag = 0, int ascii_image_flag = 0,
show_user_info = 1, show_user_info = 1,
show_os = 1, show_os = 1,
show_kernel = 1, show_kernel = 1,
@ -60,9 +60,9 @@ int ascii_image_flag = 0,
show_pkgs = 1, show_pkgs = 1,
show_uptime = 1, show_uptime = 1,
show_colors = 1; show_colors = 1;
char user[32], host[256], shell[64], kernel[256], version_name[64], cpu_model[256], char user[32], host[256], shell[64], kernel[256], version_name[64], cpu_model[256],
gpu_model[8][256] = {{'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}}, gpu_model[8][256] = {{'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}},
pkgman_name[64], image_name[32]; pkgman_name[64], image_name[32];
// functions definitions, to use them in main() // functions definitions, to use them in main()
int pkgman(); int pkgman();
@ -77,143 +77,178 @@ 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'},
{ "custom", required_argument, NULL, 'c' }, {"custom", required_argument, NULL, 'c'},
{ "config", required_argument, NULL, 0}, {"config", required_argument, NULL, 0},
{ "distro", required_argument, NULL, 'd' }, {"distro", required_argument, NULL, 'd'},
{ "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) { {
case 'a': switch (opt)
ascii_image_flag = 0; {
break; case 'a':
case 'c': ascii_image_flag = 0;
ascii_image_flag = 1; break;
sprintf(image_name, "%s", optarg); case 'c':
break; ascii_image_flag = 1;
case 'd': sprintf(image_name, "%s", optarg);
if (optarg) sprintf(version_name, "%s", optarg); break;
break; case 'd':
case 'h': if (optarg)
usage(argv[0]); sprintf(version_name, "%s", optarg);
return 0; break;
case 'i': case 'h':
ascii_image_flag = 1; usage(argv[0]);
break; return 0;
case 'l': case 'i':
list(argv[0]); ascii_image_flag = 1;
return 0; break;
default: case 'l':
break; list(argv[0]);
return 0;
default:
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[] = {
{ "apt list --installed 2> /dev/null | wc -l", "(apt)" }, {"apt list --installed 2> /dev/null | wc -l", "(apt)"},
{ "apk info 2> /dev/null | wc -l", "(apk)" }, {"apk info 2> /dev/null | wc -l", "(apk)"},
{ "dnf list installed 2> /dev/null | wc -l", "(dnf)" }, {"dnf list installed 2> /dev/null | wc -l", "(dnf)"},
{ "qlist -I 2> /dev/null | wc -l", "(emerge)" }, {"qlist -I 2> /dev/null | wc -l", "(emerge)"},
{ "flatpak list 2> /dev/null | wc -l", "(flatpack)" }, {"flatpak list 2> /dev/null | wc -l", "(flatpack)"},
{ "guix package --list-installed 2> /dev/null | wc -l", "(guix)" }, {"guix package --list-installed 2> /dev/null | wc -l", "(guix)"},
{ "nix-store -q --requisites /run/current-sys_vartem/sw 2> /dev/null | wc -l", "(nix)" }, {"nix-store -q --requisites /run/current-sys_vartem/sw 2> /dev/null | wc -l", "(nix)"},
{ "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", {
NORMAL, BOLD, NORMAL, gpu_model[gpu_iter]); printf("\033[18C%s%sGPUWU %s%s\n",
NORMAL, BOLD, NORMAL, gpu_model[gpu_iter]);
gpu_iter++; gpu_iter++;
} }
} }
// 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)
NORMAL, BOLD, NORMAL, (ram_used), ram_total); printf("\033[18C%s%sWAM %s%i MB/%i MB\n",
if (show_shell) printf("\033[18C%s%sSHELL %s%s\n", NORMAL, BOLD, NORMAL, (ram_used), ram_total);
NORMAL, BOLD, NORMAL, shell); if (show_shell)
if (show_pkgs) printf("\033[18C%s%sPKGS %s%s%d %s\n", printf("\033[18C%s%sSHELL %s%s\n",
NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name); NORMAL, BOLD, NORMAL, shell);
if (show_uptime) printf("\033[18C%s%sUWUPTIME %s"/*"%lid, "*/"%lih, %lim\n", if (show_pkgs)
NORMAL, BOLD, NORMAL, /*sys.uptime/60/60/24,*/ sys.uptime/60/60, sys.uptime/60%60); printf("\033[18C%s%sPKGS %s%s%d %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", NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name);
BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL); 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);
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);
} }
void get_info() { // get all necessary info void get_info()
char line[256]; // var to scan file lines { // get all necessary info
char line[256]; // var to scan file lines
// terminal width used to truncate long names // terminal width used to truncate long names
ioctl(STDOUT_FILENO, TIOCGWINSZ, &win); ioctl(STDOUT_FILENO, TIOCGWINSZ, &win);
@ -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;
@ -280,16 +328,18 @@ void get_info() { // get all necessary info
fclose(meminfo); fclose(meminfo);
/* ---------- gpu ---------- */ /* ---------- gpu ---------- */
int gpun = 0; // number of the gpu that the program is searching for to put in the array int gpun = 0; // number of the gpu that the program is searching for to put in the array
setenv("LANG", "en_US", 1); // force language to english setenv("LANG", "en_US", 1); // force language to english
FILE *gpu; FILE *gpu;
gpu = popen("lshw -class display 2> /dev/null", "r"); gpu = popen("lshw -class display 2> /dev/null", "r");
// 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,215 +366,278 @@ 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"
" %sArch linux %sbased:\n" " Available distributions:\n"
" %sarch, artix, %smanjaro, \"manjaro-arm\"\n\n" " %sArch linux %sbased:\n"
" %sDebian/%sUbuntu %sbased:\n" " %sarch, artix, %smanjaro, \"manjaro-arm\"\n\n"
" %sdebian, %slinuxmint, %spop, %sraspbian\n\n" " %sDebian/%sUbuntu %sbased:\n"
" %sBSD:\n" " %sdebian, %slinuxmint, %spop, %sraspbian\n\n"
" freebsd, %sopenbsd\n\n" " %sBSD:\n"
" %sOther/spare distributions:\n" " freebsd, %sopenbsd\n\n"
" %salpine, %sfedora, %sgentoo, %s\"void\", \"opensuse-leap\", android, %sgnu, guix, %sunknown\n", " %sOther/spare distributions:\n"
arg, " %salpine, %sfedora, %sgentoo, %s\"void\", \"opensuse-leap\", android, %sgnu, guix, %sunknown\n",
BLUE, NORMAL, BLUE, GREEN, // Arch based colors arg,
RED, YELLOW, NORMAL, RED, GREEN, BLUE, RED, // Debian based colors BLUE, NORMAL, BLUE, GREEN, // Arch based colors
RED, YELLOW, // BSD colors RED, YELLOW, NORMAL, RED, GREEN, BLUE, RED, // Debian based colors
NORMAL, BLUE, BLUE, PINK, GREEN, YELLOW, WHITE); // Other/spare distributions colors RED, YELLOW, // BSD 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" {
" / \\/ \\ /\n" printf("\033[2E\033[4C%s. .___.\n"
" /OwO\\ɛU\\/ __\n" " / \\/ \\ /\n"
" / \\ \\__/ \\\n" " /OwO\\ɛU\\/ __\n"
"/ \\ \\\n\n\n", BLUE); " / \\ \\__/ \\\n"
} else if (strcmp(version_name, "arch") == 0) { "/ \\ \\\n\n\n",
printf( "\033[1E\033[8C%s/\\\n" BLUE);
" / \\\n" }
" /\\ \\\n" else if (strcmp(version_name, "arch") == 0)
" / > w <\\\n" {
" / __ \\\n" printf("\033[1E\033[8C%s/\\\n"
" / __| |__-\\\n" " /_-'' ''-_\\\n\n", BLUE); " / \\\n"
} else if (strcmp(version_name, "artix") == 0) { " /\\ \\\n"
printf( "\033[1E\033[8C%s/\\\n" " / > w <\\\n"
" / \\\n" " / __ \\\n"
" /`'.,\\\n" " / __| |__-\\\n"
" /\u2022 w \u2022 \\\n" " /_-'' ''-_\\\n\n",
" / ,`\\\n" BLUE);
" / ,.'`. \\\n" }
" /.,'` `'.\\\n\n", BLUE); else if (strcmp(version_name, "artix") == 0)
} else if (strcmp(version_name, "debian") == 0) { {
printf( "\033[1E\033[6C%s______\n" printf("\033[1E\033[8C%s/\\\n"
" / ___ \\\n" " / \\\n"
" | / OwO |\n" " /`'.,\\\n"
" | \\____-\n" " -_\n" " /\u2022 w \u2022 \\\n"
" --_\n\n\n", RED); " / ,`\\\n"
} else if (strcmp(version_name, "fedora") == 0) { " / ,.'`. \\\n"
printf( "\033[1E\033[8C%s_____\n" " /.,'` `'.\\\n\n",
" / __)%s\\\n" BLUE);
" %s> %s| / %s<%s\\ \\\n" }
" __%s_| %sw%s|_%s_/ /\n" else if (strcmp(version_name, "debian") == 0)
" / %s(_ _)%s_/\n" {
" / / %s| |\n" printf("\033[1E\033[6C%s______\n"
" %s\\ \\%s__/ |\n" " / ___ \\\n"
" %s\\%s(_____/\n", " | / OwO |\n"
BLUE, CYAN, WHITE, BLUE, WHITE, CYAN,BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE); " | \\____-\n"
} else if (strcmp(version_name, "gentoo") == 0) { " -_\n"
printf( "\033[1E\033[3C%s_-----_\n" " --_\n\n\n",
" ( \\\n" RED);
" \\ OwO \\\n" }
"%s \\ )\n" else if (strcmp(version_name, "fedora") == 0)
" / _/\n" {
" ( _-\n" " \\____-\n\n", MAGENTA, WHITE); printf("\033[1E\033[8C%s_____\n"
} else if (strcmp(version_name, "gnu") == 0 || strcmp(version_name, "guix") == 0) { " / __)%s\\\n"
printf( "\033[3E\033[3C%s,= %s,-_-. %s=.\n" " %s> %s| / %s<%s\\ \\\n"
" ((_/%s)%sU U%s(%s\\_))\n" " __%s_| %sw%s|_%s_/ /\n"
" `-'%s(. .)%s`-'\n" " / %s(_ _)%s_/\n"
" %s\\%sw%s/\n" " / / %s| |\n"
" \u00af\n\n", WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW); " %s\\ \\%s__/ |\n"
} else if (strcmp(version_name, "manjaro") == 0) { " %s\\%s(_____/\n",
printf( "\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n" BLUE, CYAN, WHITE, BLUE, WHITE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE, CYAN, BLUE);
" \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" else if (strcmp(version_name, "gentoo") == 0)
" \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" printf("\033[1E\033[3C%s_-----_\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n" " ( \\\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n" " \\ OwO \\\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"); "%s \\ )\n"
} else if (strcmp(version_name, "\"manjaro-arm\"") == 0) { " / _/\n"
printf( "\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n" " ( _-\n"
" \e[0;42m \e[0m \e[0;42m \e[0m\n" " \\____-\n\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" MAGENTA, WHITE);
" \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, "gnu") == 0 || strcmp(version_name, "guix") == 0)
" \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" printf("\033[3E\033[3C%s,= %s,-_-. %s=.\n"
" \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"); " ((_/%s)%sU U%s(%s\\_))\n"
} else if (strcmp(version_name, "linuxmint") == 0) { " `-'%s(. .)%s`-'\n"
printf( "\033[2E\033[4C%s__/\\____/\\.\n" " %s\\%sw%s/\n"
" |%s.--. %s|\n" " \u00af\n\n",
" %s, %s¯| %s| UwU| %s|\n" WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW);
" %s|| %s| %s| | %s|\n" }
" %s | %s| %s---- %s|\n" else if (strcmp(version_name, "manjaro") == 0)
" %s --%s'--------'\n\n", GREEN, WHITE, GREEN, WHITE, {
GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, printf("\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n"
GREEN, WHITE, GREEN, WHITE, GREEN); " \e[0;42m \e[0m \e[0;42m \e[0m\n"
} else if (strcmp(version_name, "\"opensuse-leap\"") == 0 || strcmp(version_name, "\"opensuse-tumbleweed\"") == 0) { " \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"
printf( "\033[3E\033[3C%s|\\----/|\n" " \e[0;42m \e[0m \e[0;42m \e[0m\n"
" _ / %sO O%s\\\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" __. W /\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" '----'\n\n\n", GREEN, WHITE, GREEN); " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
} else if (strcmp(version_name, "pop") == 0) { " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n");
printf( "\033[2E\033[6C%s|\\.-----./|\n" }
" |/ \\|\n" else if (strcmp(version_name, "\"manjaro-arm\"") == 0)
" | > < |\n" {
" | %s~ %sP! %s~ %s|\n" printf("\033[0E\033[1C\u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0\n"
"_ ---\\ w /\n" " \e[0;42m \e[0m \e[0;42m \e[0m\n"
" \\_/ '-----'\n\n", BLUE, LPINK, WHITE, LPINK, BLUE); " \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"
} else if (strcmp(version_name, "raspbian") == 0) { " \e[0;42m \e[0m \e[0;42m \e[0m\n"
printf( "\033[0E\033[6C%s__ __\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" (_\\)(/_)\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" %s(>(__)<)\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n"
" (_(_)(_)_)\n" " \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m\n");
" (_(__)_)\n" }
" (__)\n\n\n", GREEN, RED); else if (strcmp(version_name, "linuxmint") == 0)
} else if (strcmp(version_name, "ubuntu") == 0) { {
printf( "\033[1E\033[9C%s_\n" printf("\033[2E\033[4C%s__/\\____/\\.\n"
" %s\u25E3%s__(_)%s\u25E2%s\n" " |%s.--. %s|\n"
" _/ --- \\\n" " %s, %s¯| %s| UwU| %s|\n"
" (_) |>w<| |\n" " %s|| %s| %s| | %s|\n"
" \\ --- _/\n" " %s | %s| %s---- %s|\n"
" %sC__/%s---(_)\n\n\n", " %s --%s'--------'\n\n",
LPINK, PINK, LPINK, PINK, LPINK, PINK, LPINK); GREEN, WHITE, GREEN, WHITE,
} else if (strcmp(version_name, "\"void\"") == 0) { GREEN, WHITE, GREEN, WHITE, GREEN, WHITE, GREEN, WHITE,
printf( "\033[2E\033[2C%s |\\_____/|\n" GREEN, WHITE, GREEN, WHITE, GREEN);
" _\\____ |\n" }
" | \\ \\ |\n" else if (strcmp(version_name, "\"opensuse-leap\"") == 0 || strcmp(version_name, "\"opensuse-tumbleweed\"") == 0)
" | | %s\u00d2w\u00d3 %s| | ,\n" {
" | \\_____\\_|-, |\n" printf("\033[3E\033[3C%s|\\----/|\n"
" -_______\\ \\_/\n\n", GREEN, WHITE, GREEN); " _ / %sO O%s\\\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 " __. W /\n"
printf( "\033[2E\033[3C%s\\ _------_ /\n" " '----'\n\n\n",
" / \\\n" GREEN, WHITE, GREEN);
" | %s~ %s> w < %s~ %s|\n" }
" ------------\n\n\n\n", GREEN, RED, GREEN, RED, GREEN); else if (strcmp(version_name, "pop") == 0)
{
printf("\033[2E\033[6C%s|\\.-----./|\n"
" |/ \\|\n"
" | > < |\n"
" | %s~ %sP! %s~ %s|\n"
"_ ---\\ w /\n"
" \\_/ '-----'\n\n",
BLUE, LPINK, WHITE, LPINK, BLUE);
}
else if (strcmp(version_name, "raspbian") == 0)
{
printf("\033[0E\033[6C%s__ __\n"
" (_\\)(/_)\n"
" %s(>(__)<)\n"
" (_(_)(_)_)\n"
" (_(__)_)\n"
" (__)\n\n\n",
GREEN, RED);
}
else if (strcmp(version_name, "ubuntu") == 0)
{
printf("\033[1E\033[9C%s_\n"
" %s\u25E3%s__(_)%s\u25E2%s\n"
" _/ --- \\\n"
" (_) |>w<| |\n"
" \\ --- _/\n"
" %sC__/%s---(_)\n\n\n",
LPINK, PINK, LPINK, PINK, LPINK, PINK, LPINK);
}
else if (strcmp(version_name, "\"void\"") == 0)
{
printf("\033[2E\033[2C%s |\\_____/|\n"
" _\\____ |\n"
" | \\ \\ |\n"
" | | %s\u00d2w\u00d3 %s| | ,\n"
" | \\_____\\_|-, |\n"
" -_______\\ \\_/\n\n",
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"
" / \\\n"
" | %s~ %s> w < %s~ %s|\n"
" ------------\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" {
" \\_) (_/\n" printf("\033[2E\033[1C%s/\\,-'''''-,/\\\n"
" | \\ / |\n" " \\_) (_/\n"
" | O w O |\n" " | \\ / |\n"
" ; ;\n" " '-_____-'\n\n", RED); " | O w O |\n"
" ; ;\n"
} else if (strcmp(version_name, "openbsd") == 0) { " '-_____-'\n\n",
printf( "\033[1E\033[3C%s ______ \n" RED);
" \\- -/ %s\u2665 \n" }
"%s\\_/ \\ \n" else if (strcmp(version_name, "openbsd") == 0)
"| %s> < %s| \n" {
"|_ < %s// %sW %s// \n" printf("\033[1E\033[3C%s ______ \n"
"%s/ \\ / \n" " \\- -/ %s\u2665 \n"
" /-________-\\ \n\n", "%s\\_/ \\ \n"
YELLOW, RED, YELLOW, WHITE, YELLOW, LPINK, WHITE, LPINK, YELLOW); "| %s> < %s| \n"
"|_ < %s// %sW %s// \n"
"%s/ \\ / \n"
" /-________-\\ \n\n",
YELLOW, RED, YELLOW, WHITE, YELLOW, LPINK, WHITE, LPINK, YELLOW);
} }
// everything else // everything else
else printf( "\033[0E\033[2C%s._.--._.\n" else
" \\|>%s_%s< |/\n" printf("\033[0E\033[2C%s._.--._.\n"
" |%s:_/%s |\n" " \\|>%s_%s< |/\n"
" // \\ \\ ?\n" " |%s:_/%s |\n"
" (| | ) /\n" " // \\ \\ ?\n"
" %s/'\\_ _/`\\%s-\n" " (| | ) /\n"
" %s\\___)=(___/\n\n", " %s/'\\_ _/`\\%s-\n"
WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW, WHITE, YELLOW); " %s\\___)=(___/\n\n",
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)
printf( "\033[0E\033[3C%s\n" { // if viu is not installed or the image is missing
" There was an\n" printf("\033[0E\033[3C%s\n"
" error: viu\n" " There was an\n"
" is not installed\n" " error: viu\n"
" or the image\n" " is not installed\n"
" is not fount\n" " or the image\n"
" Read IMAGES.md\n" " for more info.\n\n", RED); " is not fount\n"
" Read IMAGES.md\n"
" for more info.\n\n",
RED);
} }
} }
void usage(char *arg) { void usage(char *arg)
printf( "Usage: %s <args>\n" {
" -a, --ascii prints logo as ascii text (default)\n" printf("Usage: %s <args>\n"
" -c, --custom choose a custom image\n" // this options should be different, maybe merged with `-i` " -a, --ascii prints logo as ascii text (default)\n"
" --config use custom config path\n" " -c, --custom choose a custom image\n" // this options should be different, maybe merged with `-i`
" -d, --distro lets you choose the logo to print\n" " --config use custom config path\n"
" -h, --help prints this help page\n" " -d, --distro lets you choose the logo to print\n"
" -i, --image prints logo as image\n" // someone should add an optional argument to change image without using `-c`, but I don't know how to do it. " -h, --help prints this help page\n"
" %sworks in most terminals\n" " -i, --image prints logo as image\n" // someone should add an optional argument to change image without using `-c`, but I don't know how to do it.
" read README.md for more info%s\n" " %sworks in most terminals\n"
" -l, --list lists all supported distributions\n", " read README.md for more info%s\n"
arg, BLUE, NORMAL); " -l, --list lists all supported distributions\n",
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] == ']') { {
for (j = i; j < (int) strlen(str); j++) if (str[i] == '[' || str[i] == ']')
{
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,101 +1,113 @@
% 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)
-c --custom\ -c --custom\
you can choose a custom image path you can choose a custom image path
--config\ --config\
you can change config path you can change config path
-d --distro\ -d --distro\
you can choose the logo to print by the distro name you can choose the logo to print by the distro name
-h --help\ -h --help\
prints a help page prints a help page
-i --image\ -i --image\
prints image instead of ascii logo prints image instead of ascii logo
-l --list\ -l --list\
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\
image=/path/to/image\ \ \ # enable images (leave blank), or use custom image path\ distribution=name\ \ \ \ \ # use it to change displayed distribution\
nouser\ \ \ \ \ \ \ \ \ \ \ # disable username and hostname\ image=/path/to/image\ \ \ # enable images (leave blank), or use custom image path\
noos\ \ \ \ \ \ \ \ \ \ \ # disable os\ nouser\ \ \ \ \ \ \ \ \ \ \ # disable username and hostname\
nokernel\ \ \ \ \ \ \ \ \ # disable kernel\ noos\ \ \ \ \ \ \ \ \ \ \ # disable os\
nocpu\ \ \ \ \ \ \ \ \ \ \ # disable cpu\ nokernel\ \ \ \ \ \ \ \ \ # disable kernel\
nogpu\ \ \ \ \ \ \ \ \ \ \ # disable gpu\ nocpu\ \ \ \ \ \ \ \ \ \ \ # disable cpu\
noram\ \ \ \ \ \ \ \ \ \ \ # disable ram\ nogpu\ \ \ \ \ \ \ \ \ \ \ # disable gpu\
noshell\ \ \ \ \ \ \ \ \ \ # disable shell\ noram\ \ \ \ \ \ \ \ \ \ \ # disable ram\
nopkgs\ \ \ \ \ \ \ \ \ \ \ # disable pkgs\ noshell\ \ \ \ \ \ \ \ \ \ # disable shell\
nouptime\ \ \ \ \ \ \ \ \ # disable uptime\ nopkgs\ \ \ \ \ \ \ \ \ \ \ # disable pkgs\
nocolors\ \ \ \ \ \ \ \ \ # disable colors nouptime\ \ \ \ \ \ \ \ \ # disable uptime\
nocolors\ \ \ \ \ \ \ \ \ # disable colors
# SUPPORTED DISTRIBUTIONS # SUPPORTED DISTRIBUTIONS
Distribution name\ \ \ \ \ -d option
Nyalpine\ \ \ \ \ \ \ \ \ alpine\ Distribution name\ \ \ \ \ -d option
Nyarch Linuwu\ \ \ \ \ \ \ arch\
Nyartix Linuwu\ \ \ \ \ \ \ artix\ Nyalpine\ \ \ \ \ \ \ \ \ alpine\
Debinyan\ \ \ \ \ \ \ \ \ debian\ Nyarch Linuwu\ \ \ \ \ \ \ arch\
Fedowa\ \ \ \ \ \ \ \ \ \ \ fedora\ Nyartix Linuwu\ \ \ \ \ \ \ artix\
GentOwO\ \ \ \ \ \ \ \ \ \ gentoo\ Debinyan\ \ \ \ \ \ \ \ \ debian\
GnUwU gUwUix\ \ \ \ \ \ \ guix\ Fedowa\ \ \ \ \ \ \ \ \ \ \ fedora\
Miwint\ \ \ \ \ \ \ \ \ \ \ linuxmint\ GentOwO\ \ \ \ \ \ \ \ \ \ gentoo\
Myanjawo\ \ \ \ \ \ \ \ \ manjaro\ GnUwU gUwUix\ \ \ \ \ \ \ guix\
Myanjawo AWM\ \ \ \ \ \ \ \\"manjaro-arm\\"\ Miwint\ \ \ \ \ \ \ \ \ \ \ linuxmint\
OwOpenSUSE\ \ \ \ \ \ \ \ \ \\"opensuse-leap\\"\ Myanjawo\ \ \ \ \ \ \ \ \ manjaro\
Pop OwOs\ \ \ \ \ \ \ \ \ pop\ Myanjawo AWM\ \ \ \ \ \ \ \\"manjaro-arm\\"\
RaspNyan\ \ \ \ \ \ \ \ \ raspbian\ OwOpenSUSE\ \ \ \ \ \ \ \ \ \\"opensuse-leap\\"\
UwUntu\ \ \ \ \ \ \ \ \ \ \ ubuntu\ Pop OwOs\ \ \ \ \ \ \ \ \ pop\
OwOid\ \ \ \ \ \ \ \ \ \ \ \\"void\\"\ RaspNyan\ \ \ \ \ \ \ \ \ raspbian\
Nyandroid\ \ \ \ \ \ \ \ \ android\ UwUntu\ \ \ \ \ \ \ \ \ \ \ ubuntu\
Unknown (tux logo)\ \ \ \ \ unknown OwOid\ \ \ \ \ \ \ \ \ \ \ \\"void\\"\
Nyandroid\ \ \ \ \ \ \ \ \ android\
Unknown (tux logo)\ \ \ \ \ unknown
--image/ascii only distributions--\ --image/ascii only distributions--\
endeavOwO\ \ \ \ \ \ \ \ \ endeavour\ endeavOwO\ \ \ \ \ \ \ \ \ endeavour\
KDE NeOwOn\ \ \ \ \ \ \ \ \ neon\ KDE NeOwOn\ \ \ \ \ \ \ \ \ neon\
nixOwOs\ \ \ \ \ \ \ \ \ \ nixos\ nixOwOs\ \ \ \ \ \ \ \ \ \ nixos\
Swackwawe\ \ \ \ \ \ \ \ \ slackware\ Swackwawe\ \ \ \ \ \ \ \ \ slackware\
sOwOlus\ \ \ \ \ \ \ \ \ \ solus\ sOwOlus\ \ \ \ \ \ \ \ \ \ solus\
FweeBSD\ \ \ \ \ \ \ \ \ \ freebsd\ 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 -\-custom some_image.png\ \ # prints custom image (does not need full path)\ uwufetch -d arch\ \ \ \ \ \ \ \ \ \ # prints arch logo\
ueufetch -i -d artix\ \ \ \ \ \ \ \ # prints artix image uwufetch -\-custom some_image.png\ \ # prints custom image (does not need full path)\
ueufetch -i -d artix\ \ \ \ \ \ \ \ # prints artix image
# DEPENDANCES # DEPENDANCES
lshw\ \ better gpu info\
viu\ \ \ print images instead of ascii logo\ lshw\ \ better gpu info\
kitty\ \ better image viewing viu\ \ \ print images instead of ascii logo\
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.