PrettyPrompt/README.md
2024-11-30 14:16:14 +05:30

2.9 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

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:

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.