# PrettyPrompt A pretty shell prompt, written in rust ## Current Features - **User indicator** - Symbol with different colors for root user and normal users - **Error indicator** - Symbol with different colors to indicate if the last comment was successful - **Git repo indicator** - Indicates if the current directory is a repo or a regular directory - Branches indicated by different colors - **SSH indicator** - Symbol to indicate if the current shell is in an SSH session - **Current directory** - Abbreviated if the path is too long - Replaces the user's home directory with a `~` symbol - Show the repo's name if currently in a git repo ## Screenshot ![screenshot](https://git.candifloss.cc/candifloss/PrettyPrompt/raw/branch/main/screenshot/BashPromptExampleScreenshoot.png "Screenshot") ## Planned Features - Right-hand side prompt - Configuration file - Choose only the components you need - Change appearance - symbols and texts - colors - order and position - Etc. - User-defined components - Static sybols or strings - Shell symbol - Host name - Etc. - Dynamic components by running custom commands - Time & date - More `git` information - System stats - Basically, anything you like ## 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. ## 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 configuration file location can vary according to your distro. ### `bash` System-wide: `/etc/bash.bashrc` or User-specific: `$HOME/.bashrc`: ```bash PS1="" // PS1 is a fixed prompt variable. PROMPT_COMMAND="prettyprompt $?" // This updates the prompt every time. ``` ### `ion` User-specific: `$HOME/.config/ion/initrc`: ```ion # This is currently the only way to customize the prompt according to the docs fn PROMPT prettyprompt $? end ``` ## 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. - **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. - **Modularization:** Separate modules for cleaner organization. - **Error Handling:** Improved logic to exclude error messages from the prompt. - **Enhanced Documentation:** Comments for better comprehension.