4.1 KiB
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
Planned Features
- Right-hand side prompt: Implementing this is a challenge 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
- Static symbols or strings
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.
Tested on
Ubuntu 24.04
bash
5.2zsh
5.9ion
1.0.0-alpha
Installation
- Download the pre-built binary from releases, or build from source:
git clone https://git.candifloss.cc/candifloss/PrettyPrompt.git
cd PrettyPrompt/
cargo build --release #Now find the `prettyprompt` binary in `target/release/`
- Move the binary to a path in your
$PATH
. Eg:
sudo mv /path/to/prettyprompt /usr/bin/
Or add it to your $PATH
variable by adding this to your bashrc
, zshrc
, or ion/initrc
export PATH="$PATH:/your/path"
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.
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
:
PS1="" # Set it to an empty string
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
:
fn PROMPT
prettyprompt $?
end
zsh
Export the PS1
variable with the output of prettyprompt $?
as its value.
User-specific: $HOME/.zshrc
, System-wide: /etc/zsh/zshrc
:
export PS1='$(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.
- 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.
Acknowledgement
The current default(and only) theme is inspired by s1ck94 theme from zimfw.