> Theme 1, 2 and 3 require **JetBrainsMono Nerd Font Mono** for proper symbol rendering.
> Theme 4 is purely **Unicode** -- no special fonts are needed for proper symbol rendering.
> Theme 5 is **terminal safe** so no special fonts needed for proper symbol rendering.
---
### Terminal Font Setup
Set your terminal to use:
```
JetBrainsMono Nerd Font Mono
```
<p align="center" width="100%">
<img src="https://git.x-files.dk/assets/bgp-gittheme4.png" alt="Terminal Font Settings"/>
</p>
---
## Important note about fonts (SSH users take notice)
The Git prompt uses Nerd Font symbols, but:
**You only need Nerd Fonts installed on your local machine.**
Your terminal emulator on your laptop/workstation renders the symbols, not the server.
If you SSH into the server, the prompt will display correctly as long as your local terminal already has the Nerd Font installed.
If you are installing this on a remote server, you can safely skip the font installer.
---
### Changing the prompt layout
Prompt layout is handled centrally in the script inside the `update_git_prompt()` function.
Each theme controls its own structure:
- Theme 1, 4, and 5 use a single-line prompt
- Theme 2 uses a Powerline-style segmented prompt
- Theme 3 uses a two-line prompt
If you want to customise the prompt layout, edit the relevant theme block inside `update_git_prompt()`.
This keeps icons, colours, and layout clearly separated and avoids breaking other themes.
---
### Customizing the prompt outside Git repositories
When this script is loaded, it manages the shell prompt (`PS1`) dynamically so it can switch between Git and non-Git directories.
As long as the script is loaded, **it owns PS1**.
Any manual `PS1` settings in `.bashrc` will normally have no visible effect, because the prompt is rebuilt automatically. Nothing breaks — the Git prompt simply takes precedence.
If you want to change how the prompt looks **outside Git repositories**, adjust the variables in the script shown below.
#### Outside Git repository prompt colors
These variables control the colors used when you are not inside a Git repository:
```
C_USER_PS1_COLOR='\[\e[0;32m\]'
C_ROOT_PS1_COLOR='\[\e[0;31m\]'
C_PATH_COLOR='\[\e[38;5;178m\]'
C_RESET='\[\e[0m\]'
```
#### Outside Git repository prompt structure
These variables define the prompt layout outside Git repositories:
**Q:** Does this replace my default prompt entirely?
**A:** While loaded, the script manages PS1 so it can switch automatically between Git and non-Git directories. Outside repositories a simplified prompt is shown; inside repositories the Git-aware prompt is shown.
**Q:** Can I create my own theme?
**A:** Absolutely. Each theme is defined in the script under `set_git_prompt_theme_icons()`.
You can modify or extend it, then set your new theme using `export GIT_PROMPT_THEME=<number>`.
**Q:** Does it slow down Git-heavy directories?
**A:** Negligibly. The script uses optimized Git calls and caches status checks for performance.