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
- 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 gitinformation
- System stats
- Basically, anything you like
 
 
- Static sybols 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.
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:
PS1=""	// PS1 is a fixed prompt variable.  
PROMPT_COMMAND="prettyprompt $?"	// This updates the prompt every time.  
ion
User-specific: $HOME/.config/ion/initrc:
# 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.
 
					Languages
				
				
								
								
									Rust
								
								100%
							
						
					