latest commit

This commit is contained in:
2025-12-19 12:59:21 +01:00
commit 880f474d52
7 changed files with 671 additions and 0 deletions

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Allan Christensen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

225
README.md Normal file
View File

@@ -0,0 +1,225 @@
# Bash Git Prompt for Ubuntu 24.04 Server
[![OS](https://img.shields.io/badge/ubuntu-24.04-E95420)](#)
[![Shell](https://img.shields.io/badge/shell-bash-121011)](#)
[![Feature](https://img.shields.io/badge/feature-git_prompt-0078D7)](#)
[![License](https://img.shields.io/badge/License-MIT-green)](./LICENSE)
Install Bash Git Prompt on Ubuntu 24.04 server.
> **Note**
> Safe for production use. This tool only modifies your shell prompt and does not change system services.
---
## Why this installer exists
Most Bash Git prompts out there are bloated. You have to install oh-my-zsh, oh-my-bash, or some other framework that drags in far more than you need.
This project is the opposite: a fast, lightweight Git status prompt based purely on Bash and Gits own built-in commands.
No frameworks, no plugins, no bloat.
---
## What this installer does
✔ Shows current Git branch and live repo status
✔ Supports **five clean themes** switchable in real time
✔ Displays staged, changed, untracked, stashed, and remote state
✔ Indicates clean/dirty status immediately
✔ Lets you customise PS1 inside/outside Git repos centrally
✔ Works seamlessly over SSH
✔ Includes an **optional** Nerd Font installer
---
## What this installer does *NOT* do
It wont stop you from running the script without reading the documentation like theres no tomorrow.
Skip the README, and whatever happens next is your headache, not a bug report.
---
### Prerequisites
Requires **DejaVuSansMono Nerd Font Mono** for proper symbol display like shown below.
<p align="left" width="100%">
<img src="https://git.x-files.dk/assets/bgp-extended-symbols.png" alt="Extended Symbols"/>
</p>
---
### Prompt Structure
The default prompt layout is:
```plaintext
<branch git status><working directory>
```
Example output:
<p align="center" width="100%">
<img src="https://git.x-files.dk/assets/gittheme1.png" alt="Default Theme"/>
</p>
---
### Installation
Clone the repository:
```
git clone https://git.x-files.dk/bash/bash-git-prompt.git ~/.bash-git-prompt
```
Install fonts:
```
cd ~/.bash-git-prompt
./install-fonts.sh
```
---
## 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.
---
## Make it happen
Add the following to your .bashrc file:
```
# Git Prompt Start
if [ -f "$HOME/.bash-git-prompt/bash-git-prompt" ]; then
export GIT_PROMPT_THEME=1
source "$HOME/.bash-git-prompt/bash-git-prompt"
fi
# Git Prompt Stop
```
Reload your environment:
```
source ~/.bashrc
```
---
### Switching Themes
Change themes dynamically with:
```
gpchange <theme number>
```
Example:
```
gpchange 3
```
This updates the theme instantly for your current session.
---
### Changing PS1
The script has been structured so modifying your PS1 is now simple and centralized.
To change the PS1 **inside a Git repository**, modify:
```
#
# PS1 custom for all themes inside a git repository
#
local PS1_CUSTOM='\[\e[0;32m\]\u@\h\[\e[0m\]'
```
To change the PS1 **outside a Git repository**, modify:
```
#
# PS1 custom for all themes outside a git repository
#
PS1='\[\e[0;32m\]\u@\h\[\e[0m\]:\[\e[38;5;178m\]\w\[\e[0m\] '"${PROMPT_CHAR} "
```
---
### Available Themes
Preview of all five themes (clean and dirty shown together for comparison):
Branch → Staged → Changed → Untracked → Stashed → Ahead → Behind → No-Remote → Conflict → Dirty → Clean
<p align="center" width="100%">
<img src="https://git.x-files.dk/assets/gittheme2.png" alt="All Themes"/>
</p>
---
### Terminal Font Setup
Set your terminal to use:
```
DejaVuSansMono Nerd Font Mono
```
<p align="center" width="100%">
<img src="https://git.x-files.dk/assets/gittheme3.png" alt="Terminal Font Settings"/>
</p>
---
### Troubleshooting
**Symbols not showing correctly:**
Make sure your terminal uses *DejaVuSansMono Nerd Font Mono*.
Restart your terminal after installing fonts.
Log out and back in after installing fonts.
**Prompt not loading:**
Verify these lines exist and are correct in `~/.bashrc`:
```
# Git Prompt Start
if [ -f "$HOME/.bash-git-prompt/bash-git-prompt" ]; then
export GIT_PROMPT_THEME=1
source "$HOME/.bash-git-prompt/bash-git-prompt"
fi
# Git Prompt Stop
```
---
### FAQ
**Q:** Does this replace my default prompt entirely?
**A:** No — the Git-aware segment only appears when your current directory is inside a **Git repository**.
**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.
---
### More Information
More guides and documentation can be found on [wiki.x-files.dk](https://wiki.x-files.dk)
---
### License
Licensed under the [MIT License](./LICENSE).
---

296
bash-git-prompt Normal file
View File

@@ -0,0 +1,296 @@
# Author : Allan Christensen
# First Created : 24-06-2025 (DD-MM-YYYY)
# Description : Bash Git prompt for Linux
# License : MIT License
#
# Set default theme to 1 if it's not already set
#
GIT_PROMPT_THEME="${GIT_PROMPT_THEME:-1}"
#
# Theme icon definitions
#
set_git_prompt_theme_icons() {
case "$GIT_PROMPT_THEME" in
2|3)
BRANCH_ICON=" "
STAGED_ICON=""
CONFLICT_ICON="✘"
CHANGED_ICON="±"
UNTRACKED_ICON=""
STASHED_ICON=""
AHEAD_ICON=""
BEHIND_ICON=""
NO_REMOTE_ICON=""
CLEAN_ICON="✔"
DIRTY_ICON="✘"
;;
4)
BRANCH_ICON="⎇ "
STAGED_ICON="o"
CONFLICT_ICON="!"
CHANGED_ICON="±"
UNTRACKED_ICON="…"
STASHED_ICON="☰"
AHEAD_ICON="⇡"
BEHIND_ICON="⇣"
NO_REMOTE_ICON="-"
CLEAN_ICON="✓"
DIRTY_ICON="✗"
;;
5)
BRANCH_ICON=":: "
STAGED_ICON="+"
CONFLICT_ICON="x"
CHANGED_ICON="*"
UNTRACKED_ICON="?"
STASHED_ICON="s"
AHEAD_ICON="a"
BEHIND_ICON="b"
NO_REMOTE_ICON="no"
CLEAN_ICON="ok"
DIRTY_ICON="!"
;;
*)
BRANCH_ICON=" "
STAGED_ICON=""
CONFLICT_ICON="✘"
CHANGED_ICON="±"
UNTRACKED_ICON=""
STASHED_ICON=""
AHEAD_ICON=""
BEHIND_ICON=""
NO_REMOTE_ICON=""
CLEAN_ICON="✔"
DIRTY_ICON="✘"
;;
esac
}
set_git_prompt_theme_icons
#
# Caching configuration and setup
#
GIT_CACHE_FILE="/tmp/git_prompt_cache.$$"
# Collected state variables
GIT_STATE_HEAD=""
GIT_STATE_STATUS=""
GIT_STATE_STASH_LIST=""
GIT_STATE_UNTRACKED=""
GIT_STATE_FINGERPRINT=""
# Directories to skip for speed
HEAVY_DIRS=(
node_modules
vendor
dist
build
cache
uploads
public/uploads
tmp
.terraform
.cache
)
#
# Curent state collection
#
git_collect_state() {
# HEAD
GIT_STATE_HEAD=$(git rev-parse HEAD 2>/dev/null) || return 1
# Full status (branch + staged/modified)
GIT_STATE_STATUS=$(GIT_OPTIONAL_LOCKS=0 git status --porcelain --branch 2>/dev/null) || return 1
# Stash list
GIT_STATE_STASH_LIST=$(GIT_OPTIONAL_LOCKS=0 git stash list 2>/dev/null || true)
# Smart untracked detection
# Much faster than git status because it only lists untracked, not modified
local untracked_raw
untracked_raw=$(git ls-files --others --exclude-standard 2>/dev/null || true)
# Apply directory skipping
GIT_STATE_UNTRACKED=""
while IFS= read -r f; do
skip=0
for d in "${HEAVY_DIRS[@]}"; do
[[ "$f" == "$d/"* ]] && skip=1 && break
done
(( skip == 0 )) && GIT_STATE_UNTRACKED+="$f"$'\n'
done <<< "$untracked_raw"
# Build fingerprint
if command -v sha1sum >/dev/null; then
GIT_STATE_FINGERPRINT=$(
printf '%s\n%s\n%s\n%s\n%s\n' \
"$GIT_STATE_HEAD" \
"$GIT_STATE_STATUS" \
"$GIT_STATE_STASH_LIST" \
"$GIT_STATE_UNTRACKED" \
"$GIT_PROMPT_THEME" \
| sha1sum | awk '{print $1}'
)
else
GIT_STATE_FINGERPRINT=$(printf '%s\n%s\n%s\n%s\n' "$GIT_STATE_HEAD" "$GIT_STATE_STATUS" "$GIT_STATE_STASH_LIST" "$GIT_STATE_UNTRACKED")
fi
return 0
}
#
# Render logic
#
actual_git_prompt_info_logic() {
local branch
branch=$(git symbolic-ref --short HEAD 2>/dev/null || echo "(detached)")
local status="$GIT_STATE_STATUS"
local stash_list="$GIT_STATE_STASH_LIST"
local staged conflicts changed untracked stashed is_clean has_remote
staged=$(grep -cE '^[AMDR] ' <<<"$status")
conflicts=$(grep -cE '^UU ' <<<"$status")
changed=$(grep -cE '^.[MD] ' <<<"$status")
untracked=$(grep -c . <<<"$GIT_STATE_UNTRACKED")
stashed=$(grep -c . <<<"$stash_list")
# Parse branch/remote info
local first_line=${status%%$'\n'*}
local ahead=0 behind=0
has_remote=0
if [[ "$first_line" == "## "* ]]; then
[[ "$first_line" == *"..."* ]] && has_remote=1
[[ "$first_line" =~ ahead\ ([0-9]+) ]] && ahead=${BASH_REMATCH[1]}
[[ "$first_line" =~ behind\ ([0-9]+) ]] && behind=${BASH_REMATCH[1]}
fi
is_clean=0
(( staged == 0 && conflicts == 0 && changed == 0 && untracked == 0 )) && is_clean=1
#
# Render themes
#
if [[ "$GIT_PROMPT_THEME" == "2" ]]; then
printf "\[\e[30;44m\]"
printf "\[\e[97;44m\] %s%s " "$BRANCH_ICON" "$branch"
((staged > 0)) && printf " %s%d" "$STAGED_ICON" "$staged"
((conflicts > 0)) && printf " %s%d" "$CONFLICT_ICON" "$conflicts"
((changed > 0)) && printf " %s%d" "$CHANGED_ICON" "$changed"
((untracked > 0)) && printf " %s%d" "$UNTRACKED_ICON" "$untracked"
((stashed > 0)) && printf " %s%d" "$STASHED_ICON" "$stashed"
((ahead > 0)) && printf " %s%d" "$AHEAD_ICON" "$ahead"
((behind > 0)) && printf " %s%d" "$BEHIND_ICON" "$behind"
((has_remote == 0)) && printf " %s" "$NO_REMOTE_ICON"
((is_clean)) && printf " %s" "$CLEAN_ICON" || printf " %s" "$DIRTY_ICON"
printf "\[\e[34;107m\]"
printf "\[\e[30;107m\] \w"
printf "\[\e[97;49m\]"
printf "\[\e[0m\]"
elif [[ "$GIT_PROMPT_THEME" == "3" ]]; then
printf "\n\[\e[0;37m\]┌──[\e[0m"
printf "\e[38;5;117m%s%s\e[0m" "$BRANCH_ICON" "$branch"
((staged > 0)) && printf " \e[38;5;196m%s%d\e[0m" "$STAGED_ICON" "$staged"
((conflicts > 0)) && printf " \e[38;5;196m%s%d\e[0m" "$CONFLICT_ICON" "$conflicts"
((changed > 0)) && printf " \e[38;5;69m%s%d\e[0m" "$CHANGED_ICON" "$changed"
((untracked > 0)) && printf " \e[38;5;41m%s%d\e[0m" "$UNTRACKED_ICON" "$untracked"
((stashed > 0)) && printf " \e[38;5;226m%s%d\e[0m" "$STASHED_ICON" "$stashed"
((ahead > 0)) && printf " \e[0;37m%s%d\e[0m" "$AHEAD_ICON" "$ahead"
((behind > 0)) && printf " \e[0;37m%s%d\e[0m" "$BEHIND_ICON" "$behind"
((has_remote == 0)) && printf " \e[38;5;250m%s\e[0m" "$NO_REMOTE_ICON"
((is_clean)) && printf " \e[0;32m%s\e[0m" "$CLEAN_ICON" || printf " \e[38;5;196m%s\e[0m" "$DIRTY_ICON"
printf "\e[0;37m]\e[0m \[\e[38;5;178m\]\w\[\e[0m\]"
printf "\n\[\e[0;37m\]└──\[\e[0m\]"
else
printf "\e[0;37m[\e[0m"
printf "\e[38;5;117m%s%s\e[0m" "$BRANCH_ICON" "$branch"
((staged > 0)) && printf " \e[38;5;196m%s%d\e[0m" "$STAGED_ICON" "$staged"
((conflicts > 0)) && printf " \e[38;5;196m%s%d\e[0m" "$CONFLICT_ICON" "$conflicts"
((changed > 0)) && printf " \e[38;5;69m%s%d\e[0m" "$CHANGED_ICON" "$changed"
((untracked > 0)) && printf " \e[38;5;41m%s%d\e[0m" "$UNTRACKED_ICON" "$untracked"
((stashed > 0)) && printf " \e[38;5;226m%s%d\e[0m" "$STASHED_ICON" "$stashed"
((ahead > 0)) && printf " \e[0;37m%s%d\e[0m" "$AHEAD_ICON" "$ahead"
((behind > 0)) && printf " \e[0;37m%s%d\e[0m" "$BEHIND_ICON" "$behind"
((has_remote == 0)) && printf " \e[38;5;250m%s\e[0m" "$NO_REMOTE_ICON"
((is_clean)) && printf " \e[0;32m%s\e[0m" "$CLEAN_ICON" || printf " \e[38;5;196m%s\e[0m" "$DIRTY_ICON"
printf "\e[0;37m]\e[0m"
fi
}
#
# Main prompt logic
#
git_prompt_info() {
git rev-parse --is-inside-work-tree &>/dev/null || return
git_collect_state || return
local fingerprint="$GIT_STATE_FINGERPRINT"
if [[ -f "$GIT_CACHE_FILE" ]]; then
local cached_fp
IFS= read -r cached_fp < "$GIT_CACHE_FILE"
if [[ -n "$cached_fp" && "$cached_fp" == "$fingerprint" ]]; then
sed '1d' "$GIT_CACHE_FILE"
return
fi
fi
local output
output=$(actual_git_prompt_info_logic) || return
{
echo "$fingerprint"
echo "$output"
} > "$GIT_CACHE_FILE"
echo "$output"
}
update_git_prompt() {
local PROMPT_CHAR='$'
[[ $EUID -eq 0 ]] && PROMPT_CHAR='#'
GIT_PS1="$(git_prompt_info)"
#
# PS1 custom for all themes inside a git repository
#
local PS1_CUSTOM='\[\e[0;32m\]\u@\h\[\e[0m\]'
if [[ -n "$GIT_PS1" ]]; then
if [[ "$GIT_PROMPT_THEME" == "3" ]]; then
PS1="${PS1_CUSTOM} ${GIT_PS1} ${PROMPT_CHAR} "
elif [[ "$GIT_PROMPT_THEME" == "2" ]]; then
PS1="${PS1_CUSTOM} ${GIT_PS1}\[\e[0m\] ${PROMPT_CHAR} "
else
PS1="${PS1_CUSTOM} \[${GIT_PS1}\] \[\e[38;5;178m\]\w\[\e[0m\] ${PROMPT_CHAR} "
fi
else
#
# PS1 cusom for all themes outside a git repository
#
PS1='\[\e[0;32m\]\u@\h\[\e[0m\]:\[\e[38;5;178m\]\w\[\e[0m\] '"${PROMPT_CHAR} "
fi
}
PROMPT_COMMAND=update_git_prompt
gpchange() {
local theme="${1:-}"
if [[ "$theme" =~ ^[1-5]$ ]]; then
export GIT_PROMPT_THEME="$theme"
set_git_prompt_theme_icons
update_git_prompt
echo "Switched to Git prompt theme $theme"
else
echo "Usage: gpchange <1-5>"
fi
}

Binary file not shown.

View File

@@ -0,0 +1,114 @@
###########################################################################################################
# First Created: 14012025 Author: Allan #
# For your convenience this file displays all symbols for DejaVu-Sans-Mono-Nerd-Font-Complete-Mono.ttf #
# For the symbols to render DejaVu-Sans-Mono-Nerd-Font-Complete-Mono need to be installed on your systenm #
###########################################################################################################
▲ △ ▴ ▵ ▶ ▷ ▸ ▹ ► ▻ ▼ ▽ ▾ ▿ ◀ ◁ ◂ ◃ ◄ ◅ ◆ ◇ ◈ ◉ ◊ ○ ◌ ◍ ◎ ● ◐ ◑ ◒ ◓ ◔ ◕ ◖ ◗ ◘ ◙
◚ ◛ ◜ ◝ ◞ ◟ ◠ ◡ ◢ ◣ ◤ ◥ ◦ ◧ ◨ ◩ ◪ ◫ ◬ ◭ ◮ ◯ ◰ ◱ ◲ ◳ ◴ ◵ ◶ ◷ ◸ ◹ ◺ ◻ ◼ ◽ ◾ ◿ ☀ ☁
☂ ☃ ☄ ★ ☆ ☇ ☈ ☉ ☊ ☋ ☌ ☍ ☎ ☏ ☐ ☑ ☒ ☓ ☔ ☕ ☖ ☗ ☘ ☙ ☚ ☛ ☜ ☝ ☞ ☟ ☠ ☡ ☢ ☣ ☤ ☥ ☦ ☧ ☨
☩ ☪ ☫ ☬ ☭ ☮ ☯ ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ ☸ ☹ ☺ ☻ ☼ ☽ ☾ ☿ ♀ ♁ ♂ ♃ ♄ ♅ ♆ ♇ ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐
♑ ♒ ♓ ♔ ♕ ♖ ♗ ♘ ♙ ♚ ♛ ♜ ♝ ♞ ♟ ♠ ♡ ♢ ♣ ♤ ♥ ♦ ♧ ♨ ♩ ♪ ♫ ♬ ♭ ♮ ♯ ♰ ♱ ♲ ♳ ♴ ♵ ♶ ♷ ♸
♹ ♺ ♻ ♼ ♽ ♾ ♿ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ⚆ ⚇ ⚈ ⚉ ⚊ ⚋ ⚐ ⚑ ⚒ ⚓ ⚔ ⚕ ⚖ ⚗ ⚘ ⚙ ⚚ ⚛ ⚜ ⚠ ⚡ ⚰ ⚱ ✁ ✂ ✃
✄ ✆ ✇ ✈ ✉ ✌ ✍ ✎ ✏ ✐ ✑ ✒ ✓ ✔ ✕ ✖ ✗ ✘ ✙ ✚ ✛ ✜ ✝ ✞ ✟ ✠ ✡ ✢ ✣ ✤ ✥ ✦ ✧ ✩ ✪ ✫ ✬ ✭ ✮ ✯
✰ ✱ ✲ ✳ ✴ ✵ ✶ ✷ ✸ ✹ ✺ ✻ ✼ ✽ ✾ ✿ ❀ ❁ ❂ ❃ ❄ ❅ ❆ ❇ ❈ ❉ ❊ ❋ ❍ ❏ ❐ ❑ ❒ ❖ ❘ ❙ ❚ ❛ ❜ ❝
❞ ❡ ❢ ❣ ❤ ❥ ❦ ❧ ❪ ❫ ❬ ❭ ❰ ❱ ➔ ➘ ➙ ➚ ➛ ➜ ➝ ➞ ➟ ➠ ➡ ➢ ➣ ➤ ➥ ➦ ➧ ➨
➩ ➪ ➫ ➬ ➭ ➮ ➯ ➱ ➲ ➳ ➴ ➵ ➶ ➷ ➸ ➹ ➺ ➻ ➼ ➽ ➾ ⟂ ⟅ ⟆ ⟜ ⟠ ⟦ ⟧ ⟨ ⟩ ⟪ ⟫ ⟵ ⟶ ⟷ ⦇ ⦈ ⦗ ⦘
⧫ ⧺ ⧻ ⨀ ⩪ ⩫ ⬅ ⬆ ⬇ ⬈ ⬉ ⬊ ⬋ ⬌ ⬍ ⬒ ⬓ ⬔ ⬕ ⬖ ⬗ ⬘ ⬙ ⬚ ⭘ Ɽ Ɑ Ɱ Ɐ Ɒ Ⱶ ⱶ ⱷ ⱹ ⱺ ⱼ ⱽ Ȿ Ɀ
⸘ ⸟ ⸢ ⸣ ⸤ ⸥ ⸮ ꜈ ꜉ ꜊ ꜋ ꜌ ꜍ ꜎ ꜏ ꜐ ꜑ ꜒ ꜓ ꜔ ꜕ ꜖ ꜛ ꜜ ꜝ ꜞ ꜟ Ꜣ ꜣ Ꜥ ꜥ Ꜧ ꜧ ꞊ Ꞌ Ɥ ꞎ Ꞑ
ꞑ Ɦ ꟸ ꟹ                                  
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                                       
                                       
                                      
                                       
                                       
                                       
                                      
                      豈 更 車 賈 滑 串 句 龜 龜 契 金 喇 奈 懶 癩 羅 蘿
螺 裸 邏 樂 洛 烙 珞 落 酪 駱 亂 卵 欄 爛 蘭 鸞 嵐 濫 藍 襤 拉 臘 蠟 廊 朗 浪 狼 郎 來 冷 勞 擄 櫓 爐 盧 老 蘆 虜 路 露
魯 鷺 碌 祿 綠 菉 錄 鹿 論 壟 弄 籠 聾 牢 磊 賂 雷 壘 屢 樓 淚 漏 累 縷 陋 勒 肋 凜 凌 稜 綾 菱 陵 讀 拏 樂 諾 丹 寧
怒 率 異 北 磻 便 復 不 泌 數 索 參 塞 省 葉 說 殺 辰 沈 拾 若 掠 略 亮 兩 凉 梁 糧 良 諒 量 勵 呂 女 廬 旅 濾 礪 閭 驪
麗 黎 力 曆 歷 轢 年 憐 戀 撚 漣 煉 璉 秊 練 聯 輦 蓮 連 鍊 列 劣 咽 烈 裂 說 廉 念 捻 殮 簾 獵 令 囹 寧 嶺 怜 玲 瑩 羚
聆 鈴 零 靈 領 例 禮 醴 隸 惡 了 僚 寮 尿 料 樂 燎 療 蓼 遼 龍 暈 阮 劉 杻 柳 流 溜 琉 留 硫 紐 類 六 戮 陸 倫 崙 淪 輪
律 慄 栗 率 隆 利 吏 履 易 李 梨 泥 理 痢 罹 裏 裡 里 離 匿 溺 吝 燐 璘 藺 隣 鱗 麟 林 淋 臨 立 笠 粒 狀 炙 識 什 茶
刺 切 度 拓 糖 宅 洞 暴 輻 行 降 見 廓 兀 嗀 﨎 﨏 塚 﨑 晴 﨓 﨔 凞 猪 益 礼 神 祥 福 靖 精 羽 﨟 蘒 﨡 諸 﨣 﨤 逸 都
﨧 﨨 﨩 飯 飼 館 鶴 郞 隷 侮 僧 免 勉 勤 卑 喝 嘆 器 塀 墨 層 屮 悔 慨 憎 懲 敏 既 暑 梅 海 渚 漢 煮 爫 琢 碑 社 祉 祈
祐 祖 祝 禍 禎 穀 突 節 練 縉 繁 署 者 臭 艹 艹 著 褐 視 謁 謹 賓 贈 辶 逸 難 響 頻 恵 𤋮 舘 﩮 﩯 並 况 全 侀 充 冀
勇 勺 喝 啕 喙 嗢 塚 墳 奄 奔 婢 嬨 廒 廙 彩 徭 惘 慎 愈 憎 慠 懲 戴 揄 搜 摒 敖 晴 朗 望 杖 歹 殺 流 滛 滋 漢 瀞 煮 瞧
爵 犯 猪 瑱 甆 画 瘝 瘟 益 盛 直 睊 着 磌 窱 節 类 絛 練 缾 者 荒 華 蝹 襁 覆 視 調 諸 請 謁 諾 諭 謹 變 贈 輸 遲 醙 鉶
陼 難 靖 韛 響 頋 頻 鬒 龜 𢡊 𢡄 𣏕 㮝 䀘 䀹 𥉉 𥳐 𧻓 齃 龎 﫚 﫛 﫜 﫝 﫞 﫟 﫠 﫡 﫢 﫣 﫤 﫥 﫦 﫧 﫨 﫩 﫪 﫫 﫬 﫭
﫮 﫯 﫰 﫱 﫲 﫳 﫴 﫵 﫶 﫷 﫸 﫹 﫺 﫻 﫼 﫽 﫾 﫿 ff fi fl ffi ffl ſt st ﬇ ﬈ ﬉ ﬊ ﬋ ﬌ ﬍ ﬎ ﬏ ﬐ ﬑ ﬒ ﬓ ﬔ
ﬕ ﬖ ﬗ ﬘ ﬙ ﬚ ﬛ ﬜ יִ ﬞ ײַ ﬠ ﬡ ﬢ ﬣ ﬤ ﬥ ﬦ ﬧ ﬨ ﬩ שׁ שׂ שּׁ שּׂ אַ אָ אּ בּ גּ דּ הּ וּ זּ ﬷ טּ יּ ךּ כּ לּ
﬽ מּ ﬿ נּ סּ ﭂ ףּ פּ ﭅ צּ קּ רּ שּ תּ וֹ בֿ כֿ פֿ ﭏ ﭐ ﭑ ﭒ ﭓ ﭔ ﭕ ﭖ ﭗ ﭘ ﭙ ﭚ ﭛ ﭜ ﭝ ﭞ ﭟ ﭠ ﭡ ﭢ ﭣ ﭤ
ﭥ ﭦ ﭧ ﭨ ﭩ ﭪ ﭫ ﭬ ﭭ ﭮ ﭯ ﭰ ﭱ ﭲ ﭳ ﭴ ﭵ ﭶ ﭷ ﭸ ﭹ ﭺ ﭻ ﭼ ﭽ ﭾ ﭿ ﮀ ﮁ ﮂ ﮃ ﮄ ﮅ ﮆ ﮇ ﮈ ﮉ ﮊ ﮋ
ﮌ ﮍ ﮎ ﮏ ﮐ ﮑ ﮒ ﮓ ﮔ ﮕ ﮖ ﮗ ﮘ ﮙ ﮚ ﮛ ﮜ ﮝ ﮞ ﮟ ﮠ ﮡ ﮢ ﮣ ﮤ ﮥ ﮮ ﮯ ﮰ ﮱ ﮲ ﮳
﮴ ﮵ ﮶ ﮷ ﮸ ﮹ ﮺ ﮻ ﮼ ﮽ ﮾ ﮿ ﯀ ﯁ ﯂ ﯃ ﯄ ﯅ ﯆ ﯇ ﯈ ﯉ ﯊ ﯋ ﯌ ﯍ ﯎ ﯏ ﯐ ﯑ ﯒ ﯓ ﯔ ﯕ ﯖ ﯗ ﯘ ﯙ ﯚ ﯛ
ﯜ ﯝ ﯞ ﯟ ﯠ ﯡ ﯢ ﯣ ﯤ ﯥ ﯦ ﯧ ﯨ ﯩ ﯪ ﯫ ﯬ ﯭ ﯮ ﯯ ﯰ ﯱ ﯲ ﯳ ﯴ ﯵ ﯶ ﯷ ﯸ ﯹ ﯺ ﯻ ﯼ ﯽ ﯾ ﯿ ﰀ ﰁ ﰂ ﰃ
ﰄ ﰅ ﰆ ﰇ ﰈ ﰉ ﰊ ﰋ ﰌ ﰍ ﰎ ﰏ ﰐ ﰑ ﰒ ﰓ ﰔ ﰕ ﰖ ﰗ ﰘ ﰙ ﰚ ﰛ ﰜ ﰝ ﰞ ﰟ ﰠ ﰡ ﰢ ﰣ ﰤ ﰥ ﰦ ﰧ ﰨ ﰩ ﰪ
ﰫ ﰬ ﰭ ﰮ ﰯ ﰰ ﰱ ﰲ ﰳ ﰴ ﰵ ﰶ ﰷ ﰸ ﰹ ﰺ ﰻ ﰼ ﰽ ﰾ ﰿ ﱀ ﱁ ﱂ ﱃ ﱄ ﱅ ﱆ ﱇ ﱈ ﱉ ﱊ ﱋ ﱌ ﱍ ﱎ ﱏ ﱐ ﱑ ﱒ
ﱓ ﱔ ﱕ ﱖ ﱗ ﱘ ﱙ ﱚ ﱛ ﱜ ﱝ ﱞ ﱟ ﱠ ﱡ ﱢ ﱣ ﱤ ﱥ ﱦ ﱧ ﱨ ﱩ ﱪ ﱫ ﱬ ﱭ ﱮ ﱯ ﱰ ﱱ ﱲ ﱳ ﱴ ﱵ ﱶ ﱷ ﱸ ﱹ ﱺ
ﱻ ﱼ ﱽ ﱾ ﱿ ﲀ ﲁ ﲂ ﲃ ﲄ ﲅ ﲆ ﲇ ﲈ ﲉ ﲊ ﲋ ﲌ ﲍ ﲎ ﲏ ﲐ ﲑ ﲒ ﲓ ﲔ ﲕ ﲖ ﲗ ﲘ ﲙ ﲚ ﲛ ﲜ ﲝ ﲞ ﲟ ﲠ ﲡ
ﲢ ﲣ ﲤ ﲥ ﲦ ﲧ ﲨ ﲩ ﲪ ﲫ ﲬ ﲭ ﲮ ﲯ ﲰ ﲱ ﲲ ﲳ ﲴ ﲵ ﲶ ﲷ ﲸ ﲹ ﲺ ﲻ ﲼ ﲽ ﲾ ﲿ ﳀ ﳁ ﳂ ﳃ ﳄ ﳅ ﳆ ﳇ ﳈ ﳉ
ﳊ ﳋ ﳌ ﳍ ﳎ ﳏ ﳐ ﳑ ﳒ ﳓ ﳔ ﳕ ﳖ ﳗ ﳘ ﳙ ﳚ ﳛ ﳜ ﳝ ﳞ ﳟ ﳠ ﳡ ﳢ ﳣ ﳤ ﳥ ﳦ ﳧ ﳨ ﳩ ﳪ ﳫ ﳬ ﳭ ﳮ ﳯ ﳰ ﳱ
ﳲ ﳳ ﳴ ﳵ ﳶ ﳷ ﳸ ﳹ ﳺ ﳻ ﳼ ﳽ ﳾ ﳿ ﴀ ﴁ ﴂ ﴃ ﴄ ﴅ ﴆ ﴇ ﴈ ﴉ ﴊ ﴋ ﴌ ﴍ ﴎ ﴏ ﴐ ﴑ ﴒ ﴓ ﴔ ﴕ ﴖ ﴗ ﴘ ﴙ
ﴚ ﴛ ﴜ ﴝ ﴞ ﴟ ﴠ ﴡ ﴢ ﴣ ﴤ ﴥ ﴦ ﴧ ﴨ ﴩ ﴪ ﴫ ﴬ ﴭ ﴮ ﴯ ﴰ ﴱ ﴲ ﴳ ﴴ ﴵ ﴶ ﴷ ﴸ ﴹ ﴺ ﴻ ﴼ ﴽ ﴿
﵁ ﵂ ﵃ ﵄ ﵅ ﵆ ﹰ ﹱ ﹲ ﹳ ﹴ ﹶ ﹷ ﹸ ﹹ ﹺ ﹻ ﹼ ﹽ ﹾ ﹿ ﺀ ﺁ ﺂ ﺃ ﺄ ﺅ ﺆ ﺇ ﺈ ﺉ ﺊ ﺋ ﺌ ﺏ ﺐ ﺑ ﺒ
ﺓ ﺔ ﺕ ﺖ ﺗ ﺘ ﺙ ﺚ ﺛ ﺜ ﺝ ﺞ ﺟ ﺠ ﺡ ﺢ ﺣ ﺤ ﺥ ﺦ ﺧ ﺨ ﺩ ﺪ ﺫ ﺬ ﺭ ﺮ ﺯ ﺰ ﺱ ﺲ ﺳ ﺴ ﺵ ﺶ ﺷ ﺸ ﺹ ﺺ
ﺻ ﺼ ﺽ ﺾ ﺿ ﻀ ﻁ ﻂ ﻃ ﻄ ﻅ ﻆ ﻇ ﻈ ﻉ ﻊ ﻋ ﻌ ﻍ ﻎ ﻏ ﻐ ﻑ ﻒ ﻓ ﻔ ﻕ ﻖ ﻗ ﻘ ﻙ ﻚ ﻛ ﻜ ﻝ ﻞ ﻟ ﻠ ﻡ ﻢ
ﻣ ﻤ ﻥ ﻦ ﻧ ﻨ ﻭ ﻮ ﻯ ﻰ ﻱ ﻲ ﻳ ﻴ ﻵ ﻶ ﻷ ﻸ ﻹ ﻺ ﻻ ﻼ

9
install-fonts.sh Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
##################################################################################
# First Created: 03012025 Author: Allan Desc: Installs fonts for bash-git-prompt #
##################################################################################
mkdir -p $HOME/.local/share/fonts
cp $HOME/.bash-git-prompt/fonts/*.ttf $HOME/.local/share/fonts
fc-cache -f

6
last-tested Normal file
View File

@@ -0,0 +1,6 @@
------------------------------------
Last tested: 19-12-2025 (DD-MM-YYYY)
Environment: Ubuntu Server 24.04 LTS
Environment: Ubuntu Desktop 24.04 LTS
Environment: Fedora Desktop 43
------------------------------------