Updated README with roadmap and features. Also added TODO entries in the source code.

This commit is contained in:
River 2023-03-01 19:10:57 -05:00
parent 1d92474cd2
commit cc90327ced
2 changed files with 36 additions and 6 deletions

View File

@ -1,7 +1,7 @@
# oxidefetch 1.1.0 # oxidefetch 1.1.0
Fully cross platform Neofetch clone written in Rust. Up to 25 times faster than Neofetch! 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? ### Why Oxidefetch?
Neofetch, being a BASH script, has a few downsides in my opinion. 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. 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. 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: 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```. ```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 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. 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.
#### Runtime
### Dependencies (Runtime)
There's only a couple runtime dependencies for this project. There's only a couple runtime dependencies for this project.
1: ```bash``` shell installed for GPU detection on Linux/Unix/mac. 1: ```bash``` shell installed for GPU detection on Linux/Unix/mac.
2: ```lspci``` 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 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. 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 ### Changelog
1.0.0: Official full stable release 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. 1.1.0: Refactored some poorly written typing, and added support for memory.

View File

@ -21,6 +21,9 @@ fn main() {
println!(); 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()); println!("{}", String::from(">>> OxideFetch  <<<").red());
color_print("Date:\t", '', &Some(datetime_formatted), "bright yellow"); color_print("Date:\t", '', &Some(datetime_formatted), "bright yellow");
color_print( color_print(
@ -115,7 +118,8 @@ impl InformationStruct {
let gpu_info_as_string = String::from_utf8(gpu_info.stdout); let gpu_info_as_string = String::from_utf8(gpu_info.stdout);
Some(String::from( Some(String::from(
gpu_info_as_string 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") .split("\n")
.collect::<Vec<&str>>()[1], .collect::<Vec<&str>>()[1],
)) ))
@ -159,6 +163,7 @@ impl InformationStruct {
// Getting the icon for the distro. // Getting the icon for the distro.
// I have NO clue if these are the strings the // I have NO clue if these are the strings the
// sys.name() function will return. // sys.name() function will return.
// TODO: Validate sys.name() outputs.
{ {
"Alma Linux" => '', "Alma Linux" => '',
"Alpine Linux" => '', "Alpine Linux" => '',