Custom ASCII startup art. 10 handcrafted prompt styles. Smart path colors, git status, language detection. All native PowerShell, no external prompt frameworks.
This project replaces the default PowerShell experience with a terminal that shows system information on startup and presents a styled, informative prompt every time you press Enter.
When you open a terminal, Fastfetch displays your custom ASCII art. The logo uses Catppuccin Mocha colors and renders with JetBrains Mono Nerd Font.
██████╗ █████╗ ████████╗ ██╗ ██╗ ██████╗ ██╔══██╗ ██╔══██╗ ╚══██╔══╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██║ ██║ ██║ ███████║ ██████╔╝ ██║ ██║ ██║ ██║ ██║ ██╔══██║ ██╔═══╝ ██████╔╝ ╚█████╔╝ ██║ ██║ ██║ ██║ ╚═════╝ ╚════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
Every command line starts with a styled prompt showing your username, smart-truncated path, git branch with status, and optional language version or execution time. 10 styles included.
Three things you need installed before proceeding. The font is mandatory, the rest are recommended.
Without this, icons render as empty boxes. Download from nerdfonts.com and install the .ttf files.
Displays system info with your ASCII logo on startup. Install via winget.
winget install fastfetch
The prompt scripts use features only available in PowerShell 7 or later. Check with$PSVersionTable.
Follow these four steps in order. Each one builds on the previous.
Go to nerdfonts.com/font-downloads, search for JetBrainsMono, download the zip, extract it, and install every .ttf file. Then set your terminal to use "JetBrainsMono Nerd Font" in its settings.
Fastfetch reads your ASCII art and system info on terminal startup. Install it, then create the config directory and copy the two files from this repo.
winget install fastfetchmkdir "$HOME.configastfetch"# Copy from this repo:
# fastfetch/ascii.txt -> your ASCII logo
# fastfetch/config.jsonc -> display configYou can find./fastfetch/in github.
The config file points to ~/.config/fastfetch/ascii.txt and applies Catppuccin Mocha colors. Edit ascii.txt with your own art if desired.
Your PowerShell profile runs every time you open a terminal. This is where the startup banner and custom prompt live.
# Find your profile path
$PROFILE
# Create it if it doesn't exist
if (!(Test-Path -Path $PROFILE)) {
New - Item - ItemType File -Path $PROFILE -Force
}
# Open in Notepad
notepad $PROFILE
Delete everything in that file, then paste the contents of your chosen prompt file from the standalone/ folder. Save and close.
Close and reopen Windows Terminal. You should see the Fastfetch banner followed by your new styled prompt. To test the clear shortcut, type cls or clear and press Enter.
Click any prompt to view its full source code. Copy the entire file into your $PROFILE to use it.
Every prompt file defines its color palette at the top. Here is what each variable controls and how to change it.
Each standalone file begins with a block of $C_* variables. These map to PowerShell's[ConsoleColor] enum.
$C_SUCCESSPrompt character, clean indicators$C_DIRFolder and directory icons$C_GITGit branch icon$C_BRANCHGit branch name$C_USERUsername$C_DIRTYDirty git indicator (*)Available colors: White, Black,DarkGray, Gray, Red, DarkRed, Green,DarkGreen, Blue, DarkBlue, Cyan, DarkCyan,Magenta, DarkMagenta, Yellow, DarkYellow.
The $C_PATH_CYCLE array controls the colors for each folder level in the path. Each segment gets the next color in the list.
$C_PATH_CYCLE = @(
[ConsoleColor]::Blue,
[ConsoleColor]::Cyan,
[ConsoleColor]::Magenta,
[ConsoleColor]::Yellow
)Add, remove, or reorder colors. The cycle repeats if the path has more segments than colors.
Most prompts read from environment variables automatically. To hardcode a different name, replace$env:USERNAME with a string.
# Default (reads from system)
Write-Host $env:USERNAME ...
# Custom name
Write-Host "harsh" ...
For Fastfetch ASCII art coloring inconfig.jsonc.
The startup flow is straightforward. Here is what happens from the moment you open a terminal.
To make VS Code's integrated terminal also show Fastfetch on startup, add a custom profile to your VS Codesettings.json.
{
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": [
"-NoExit",
"-Command",
"fastfetch -c 'C:/Users/YourName/.config/fastfetch/config.jsonc'"
]
}
}
}
Replace C:/Users/YourName/ with your actual home path. Run$HOME in PowerShell to find it.