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
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.

View File

@ -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::<Vec<&str>>()[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" => '',