diff --git a/README.md b/README.md index 466244e..4067eca 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # oxidefetch 1.1.0 Fully cross platform Neofetch clone written in Rust. Up to 25 times faster than Neofetch! -![alt text](image.png "Title") +![alt text](image.png "Example output of OxideFetch on a WSL2 Arch Linux host") ### Why Oxidefetch? Neofetch, being a BASH script, has a few downsides in my opinion. @@ -11,13 +11,25 @@ Neofetch, being a BASH script, has a few downsides in my opinion. As such, I wrote OxideFetch. How cool is that? It displays your information in a manner that's compact, and BLAZINGLY fast. I've measured speeds of up to 25 times faster than normal Neofetch on WSL2. -### Dependencies (Build/Install) +### Features +OxideFetch can display all of the following information: +- Date, time, and day of week +- Username and hostname +- Operating system name, symbol, and matching color +- Kernel version +- Uptime +- Shell +- CPU +- GPU +- Memory + +### Dependencies +#### Build/Install To build Oxidefetch, you need Cargo. You can use Cargo to automatically build and install it like so: ```cargo install --git https://github.com/shibedrill/oxidefetch```. From there, it *should* be in your PATH. If not, add ```source ~/.cargo/env``` to your profile, or add ```~/.cargo/bin``` to your $PATH. If you do not already have Cargo installed on your system, you can do so by installing Rustup- either via the [instructions on their website](https://doc.rust-lang.org/cargo/getting-started/installation.html "instructions on their website") or via your system package manager. - -### Dependencies (Runtime) +#### Runtime There's only a couple runtime dependencies for this project. 1: ```bash``` shell installed for GPU detection on Linux/Unix/mac. 2: ```lspci``` installed for GPU detection on Linux/Unix/mac. @@ -32,7 +44,20 @@ repo, and inside the folder, run ```cargo test -- --nocapture```, and send the r noreply email address, or directly to me on Discord at ```Shibe Drill#9730```. This program does NOT collect information regarding your real name, IP, location, etc. You can look at the file it generates to be sure- it's all plaintext, babey. +### To Do & Roadmap +#### Very near future: +- Add support for user configurability for entries (whether or not an entry shows, its color, units for memory and time) +- Add process count detection +- Switch from `bash` to `sh` to run the GPU detection command, if possible, since `sh` is installed on every *nix system by default +#### Future: +- Add host system name detection (Such as "Windows Subsystem for Linux", "IdeaPad 3", "Dell Optiplex", etc. +- Add package count/package manager detection +- Crosstest on more distributions to verify `sys.name()` outputs +#### Distant future: +- Add terminal emulator detection by walking up the process tree +- More extensible user configuration for entry formatting + ### Changelog 1.0.0: Official full stable release -1.0.1: Fixed distro name for Debian GNU/Linux. Logo & color works now. +1.0.1: Fixed distro name for Debian GNU/Linux. Logo & color works now. 1.1.0: Refactored some poorly written typing, and added support for memory. \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 02d0478..283968f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,6 +21,9 @@ fn main() { println!(); + // TODO: Add support to change what items print, as well as their colors. + // This should be done via some sort of user accessible, persistent config, + // and preferably can be modified via env vars. println!("{}", String::from(">>> OxideFetch  <<<").red()); color_print("Date:\t", '', &Some(datetime_formatted), "bright yellow"); color_print( @@ -115,7 +118,8 @@ impl InformationStruct { let gpu_info_as_string = String::from_utf8(gpu_info.stdout); Some(String::from( gpu_info_as_string - .unwrap() + .unwrap() // TODO: Please figure out a way to get rid of this unwrap() call. + // I feel like I did so well avoiding unwrap calls everywhere except for here. .split("\n") .collect::>()[1], )) @@ -159,6 +163,7 @@ impl InformationStruct { // Getting the icon for the distro. // I have NO clue if these are the strings the // sys.name() function will return. + // TODO: Validate sys.name() outputs. { "Alma Linux" => '', "Alpine Linux" => '',