From d9fdd8fa9e84c7ee5947c6edae9fc79be06e4e2d Mon Sep 17 00:00:00 2001 From: candifloss Date: Sun, 1 Dec 2024 18:31:07 +0530 Subject: [PATCH] updated README --- README.md | 87 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 00164cf..8f00cc8 100644 --- a/README.md +++ b/README.md @@ -21,29 +21,21 @@ A pretty shell prompt, written in rust ## Planned Features -- Right-hand side prompt: Implementing this is a challenge on non-`zsh` shells -- Configuration file +- **Right-hand side prompt**: Challenging to implement on non-zsh shells. +- **Configuration file** - Choose only the components you need - Change appearance - - symbols and texts - - colors - - order and position - - Etc. - - User-defined components - - Static symbols or strings - - Shell symbol - - Host name - - Etc. - - Dynamic components by running custom commands - - Time & date - - More `git` information - - System stats - - Basically, anything you like + - Symbols and text + - Colors + - Order and position + - Custom components + - Static: Shell icon, Host name, etc. + - Dynamic: Time &date, system stats, or any custom commands ## Current Limitations -- Not user-configurable, yet - any changes in the current stage require hard-coding. -- Exit code of the last command requires to be passed as a command-line argument. +- **Hard-Coded Configuration**: User customization is not available yet. +- **Exit Code Requirement**: Must pass the last command’s exit code as a command-line argument. ## Tested on @@ -54,33 +46,41 @@ Ubuntu 24.04 ## Installation -1. Download the pre-built binary from [releases](https://git.candifloss.cc/candifloss/PrettyPrompt/releases), or build from source: +**Step 1. Get the binary** + - Option 1. Download the pre-built binary from the [releases page](https://git.candifloss.cc/candifloss/PrettyPrompt/releases). + - Option 2. Build from source(if you have [rust](https://www.rust-lang.org/tools/install) installed): -```bash -git clone https://git.candifloss.cc/candifloss/PrettyPrompt.git -cd PrettyPrompt/ -cargo build --release #Now find the `prettyprompt` binary in `target/release/` +```bash +git clone https://git.candifloss.cc/candifloss/PrettyPrompt.git +cd PrettyPrompt/ +cargo build --release +# Binary location: `target/release/prettyprompt` ``` -2. Move the binary to a path in your `$PATH`. Eg: -```bash + +**Step 2. Add to `$PATH`** + - Option 1. Move the binary to a directory in your `$PATH`. Eg: +```bash sudo mv /path/to/prettyprompt /usr/bin/ ``` -Or add it to your `$PATH` variable by adding this to your `bashrc`, `zshrc`, or `ion/initrc` -```bash -export PATH="$PATH:/your/path" -``` + - Option 2. Add the directory containing the binary to `$PATH` + System-wide: `/etc/profile` + User-specific: `~/.profile` + Shell-specific: `bashrc`, `zshrc`, etc. +```bash +export PATH="$PATH:/path/where/the/binary/is/" +``` ## Usage -The binary needs to be in your `$PATH`. Place it somewhere like `/usr/bin/`, or add the appropriate path to the `$PATH` variable. -The configuration depends on the shell, and the file location can vary according to your distro. Please consult the documentations or forums of your shell for more accurate information. +Configuration varies by shell, and the file location varies by distro. Consult your shell's docs or community resources for details. Note that the exit code of the last command(usually `$?` variable) must be passed as a command-line argument. ### `bash` - The `PS1` variable sets a fixed prompt string. - This `PROMPT_COMMAND` variable updates the prompt every time. -System-wide: `/etc/bash.bashrc`, or User-specific: `$HOME/.bashrc`: +System-wide: `/etc/bash.bashrc` +User-specific: `~/.bashrc`: ```bash PS1="" # Set it to an empty string PROMPT_COMMAND='prettyprompt $?' # Single quotes, not double quotes @@ -88,8 +88,8 @@ PROMPT_COMMAND='prettyprompt $?' # Single quotes, not double quotes ### `ion` -The `PROMPT` function is currently the only way to customize the prompt according to the ion shell docs. -User-specific config file: `$HOME/.config/ion/initrc`: +The `PROMPT` function is currently the only way to customize the prompt according to the `ion` shell docs. +User-specific config: `~/.config/ion/initrc`: ```ion fn PROMPT prettyprompt $? @@ -98,15 +98,20 @@ end ### `zsh` Export the `PS1` variable with the output of `prettyprompt $?` as its value. -User-specific: `$HOME/.zshrc`, System-wide: `/etc/zsh/zshrc`: -```zsh +User-specific: `~/.zshrc` +System-wide: `/etc/zsh/zshrc` +```sh export PS1='$(prettyprompt $?)' ``` +### Other shells + +For other shells, refer their docs to set a dynamic prompt. Ensure the last command's exit code (`$?` or equivalent) is passed to `prettyprompt`. + ## Changes since the last version - **Updated Output String Type:** Improved compatibility with other shells. - **Revamped Indicator Symbols:** Enhanced the visual aspect of the prompt. - - **Removed Shell Symbol:** Determining the shell is practically not possible. + - **Removed Shell Icon:** Determining the shell is practically not possible. - **Conditional Component Inclusion:** A first step towards user-configuration expected in future versions. - **Code Improvements:** readability and performance - **Refactoring:** Modular structure for better readability and maintenance. @@ -116,4 +121,10 @@ export PS1='$(prettyprompt $?)' ## Acknowledgement -The current default(and only) theme is inspired by [s1ck94](https://github.com/zimfw/s1ck94) theme from [zimfw](https://zimfw.sh/). +The current default (and only) theme draws inspiration from [s1ck94](https://github.com/zimfw/s1ck94) theme of [zimfw](https://zimfw.sh/). + +## Why this project? + +- **Efficiency**: Avoids repeated invocation of multiple binaries like `tr`, `grep`, `echo`, `git`, `sed`, etc., which would otherwise be used dozens of times in shell scripts just to generate a colored string. +- **Universality**: Eliminates the need to write separate scripts in different shell languages for various shells. +- **Learning Rust**: Serves as a fun and practical project to learn and apply Rust programming skills. \ No newline at end of file