initial commit

This commit is contained in:
allan 2025-06-24 14:21:44 +02:00
parent aaf6b392c3
commit f3d4eb99b7
9 changed files with 552 additions and 0 deletions

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
*.bak
*.backup
*.gho
*.ori
*.orig
*.tmp
*.swp

View File

@ -0,0 +1,71 @@
## Bash git prompt for Ubuntu desktop 24.04
This is a bash git prompt with 5 themes that displays usefull information about the current git repository.
### Prompt Structure.
The default "Out Of The Box" theme appearance of the prompt looks like this.
```plaintext
<branch><git status><working directory>
```
### And it looks like this
<p align="left" width="100%">
<img src="https://git.x-files.dk/assets/bgp-theme-default.png" alt="default theme"/>
</p>
### To display the fancy symbols DejaVuSansMono Nerd Font Mono needs to be present.
<p align="left" width="100%">
<img src="https://git.x-files.dk/assets/bgp-extended-symbols.png" alt="extended symbols"/>
</p>
### Install via git clone
```
git clone https://git.x-files.dk/ubuntu-desktop/bash-git-prompt.git ~/.bash-git-prompt
```
### Install the required fonts used by the git-bash-prompt
```bash
cd ~/.bash-git-prompt
./install-fonts.sh
```
### Getting everything up and running.
**Important:** Remove all other git prompts you have in your ~/.bashrc file. Then add the following to your ~/.bashrc file.
```bash
# 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
```
### Changing themes
This can be done on the fly by simply typing the command "gpchange" followed by a theme number e.g like this:
```bash
gpchange 3
```
### Themes
The image is showing the 5 themes with every git status available. I know it's not possible to have a clean and dirty state at the same time, but this is for demo / clarification purpose. The following icons are displayed in this order for demonstraion purpose.
Branch → Staged → Changed → Untracked → Stashed → Ahead → Behind → No-Remote → Conflict → Dirty → Clean
<p align="left" width="100%">
<img src="https://git.x-files.dk/assets/bgp-extended-symbols.png" alt="extended symbols"/>
</p>
### Set your terminal to use the DejaVuSansMono Nerd Font Mono as shown below.
<p align="left" width="100%">
<img src="https://git.x-files.dk/assets/bgp-terminal.png" alt="Terminal font settings"/>
</p>
### More guides
More guides can be found on [\[wiki.x-files.dk\]](https://wiki.nopants.dk)
### Last tested
January 8th 2025 on Ubuntu 24.04.

202
bash-git-prompt Normal file
View File

@ -0,0 +1,202 @@
###############################################################################
# First Created: 24062025 Author: Allan Desc: Provides a git prompt on Ubuntu #
###############################################################################
# Default to theme 1 if not set
GIT_PROMPT_THEME="${GIT_PROMPT_THEME:-1}"
# Define all 6 themes
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
}
# Initialize icons
set_git_prompt_theme_icons
# Git prompt logic
git_prompt_info() {
git rev-parse --is-inside-work-tree &>/dev/null || return
local branch
branch=$(git symbolic-ref --short HEAD 2>/dev/null || echo "(detached)")
local status
status=$(git status --porcelain=2 --branch 2>/dev/null) || return
local staged conflicts changed untracked stashed is_clean has_remote
staged=$(grep -cE '^1 [ADMRT]' <<<"$status")
conflicts=$(grep -cE '^u ' <<<"$status")
changed=$(grep -cE '^1 .[MD]' <<<"$status")
untracked=$(grep -cE '^\? ' <<<"$status")
stashed=$(git stash list 2>/dev/null | wc -l | tr -d ' ')
local upstream
upstream=$(git rev-parse --abbrev-ref --symbolic-full-name "@{u}" 2>/dev/null)
if [[ -n "$upstream" ]]; then
has_remote=1
git fetch --quiet & disown
else
has_remote=0
fi
local ahead=0 behind=0
if (( has_remote )); then
ahead=$(git rev-list --left-right --count "$upstream...HEAD" 2>/dev/null | awk '{print $2}')
behind=$(git rev-list --left-right --count "$upstream...HEAD" 2>/dev/null | awk '{print $1}')
fi
is_clean=0
if (( staged == 0 && conflicts == 0 && changed == 0 && untracked == 0 )); then
is_clean=1
fi
if [[ "$GIT_PROMPT_THEME" == "2" ]]; then
# Powerline Theme 2
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"
if (( is_clean )); then
printf " %s" "$CLEAN_ICON"
else
printf " %s" "$DIRTY_ICON"
fi
printf "\[\e[34;107m\]"
printf "\[\e[30;107m\] \w"
printf "\[\e[97;49m\]"
printf "\[\e[0m\]"
elif [[ "$GIT_PROMPT_THEME" == "3" ]]; then
# Two-line theme: git info in brackets, directory outside (in gold)
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"
if (( is_clean )); then
printf " \e[0;32m%s\e[0m" "$CLEAN_ICON"
else
printf " \e[38;5;196m%s\e[0m" "$DIRTY_ICON"
fi
printf "\e[0;37m]\e[0m"
printf " \[\e[38;5;178m\]\w\[\e[0m\]"
printf "\n\[\e[0;37m\]└──\[\e[0m\]"
else
# Default bracket theme
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"
if (( is_clean )); then
printf " \e[0;32m%s\e[0m" "$CLEAN_ICON"
else
printf " \e[38;5;196m%s\e[0m" "$DIRTY_ICON"
fi
printf "\e[0;37m]\e[0m"
fi
}
# Auto-updating prompt
update_git_prompt() {
local PROMPT_CHAR='$'
[[ $EUID -eq 0 ]] && PROMPT_CHAR='#'
GIT_PS1="$(git_prompt_info)"
if [[ -n "$GIT_PS1" ]]; then
if [[ "$GIT_PROMPT_THEME" == "3" ]]; then
PS1="${GIT_PS1} ${PROMPT_CHAR} "
elif [[ "$GIT_PROMPT_THEME" == "2" ]]; then
PS1="${GIT_PS1}\[\e[0m\] ${PROMPT_CHAR} "
else
PS1='\u@\h \['"$GIT_PS1"'\] \[\e[38;5;178m\]\w\[\e[0m\] '"${PROMPT_CHAR} "
fi
else
PS1='\u@\h:\[\e[38;5;220m\]\w\[\e[0m\] '"${PROMPT_CHAR} "
fi
}
PROMPT_COMMAND=update_git_prompt
# Theme switch command
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 ﬇ ﬈ ﬉ ﬊ ﬋ ﬌ ﬍ ﬎ ﬏ ﬐ ﬑ ﬒ ﬓ ﬔ
ﬕ ﬖ ﬗ ﬘ ﬙ ﬚ ﬛ ﬜ יִ ﬞ ײַ ﬠ ﬡ ﬢ ﬣ ﬤ ﬥ ﬦ ﬧ ﬨ ﬩ שׁ שׂ שּׁ שּׂ אַ אָ אּ בּ גּ דּ הּ וּ זּ ﬷ טּ יּ ךּ כּ לּ
﬽ מּ ﬿ נּ סּ ﭂ ףּ פּ ﭅ צּ קּ רּ שּ תּ וֹ בֿ כֿ פֿ ﭏ ﭐ ﭑ ﭒ ﭓ ﭔ ﭕ ﭖ ﭗ ﭘ ﭙ ﭚ ﭛ ﭜ ﭝ ﭞ ﭟ ﭠ ﭡ ﭢ ﭣ ﭤ
ﭥ ﭦ ﭧ ﭨ ﭩ ﭪ ﭫ ﭬ ﭭ ﭮ ﭯ ﭰ ﭱ ﭲ ﭳ ﭴ ﭵ ﭶ ﭷ ﭸ ﭹ ﭺ ﭻ ﭼ ﭽ ﭾ ﭿ ﮀ ﮁ ﮂ ﮃ ﮄ ﮅ ﮆ ﮇ ﮈ ﮉ ﮊ ﮋ
ﮌ ﮍ ﮎ ﮏ ﮐ ﮑ ﮒ ﮓ ﮔ ﮕ ﮖ ﮗ ﮘ ﮙ ﮚ ﮛ ﮜ ﮝ ﮞ ﮟ ﮠ ﮡ ﮢ ﮣ ﮤ ﮥ ﮮ ﮯ ﮰ ﮱ ﮲ ﮳
﮴ ﮵ ﮶ ﮷ ﮸ ﮹ ﮺ ﮻ ﮼ ﮽ ﮾ ﮿ ﯀ ﯁ ﯂ ﯃ ﯄ ﯅ ﯆ ﯇ ﯈ ﯉ ﯊ ﯋ ﯌ ﯍ ﯎ ﯏ ﯐ ﯑ ﯒ ﯓ ﯔ ﯕ ﯖ ﯗ ﯘ ﯙ ﯚ ﯛ
ﯜ ﯝ ﯞ ﯟ ﯠ ﯡ ﯢ ﯣ ﯤ ﯥ ﯦ ﯧ ﯨ ﯩ ﯪ ﯫ ﯬ ﯭ ﯮ ﯯ ﯰ ﯱ ﯲ ﯳ ﯴ ﯵ ﯶ ﯷ ﯸ ﯹ ﯺ ﯻ ﯼ ﯽ ﯾ ﯿ ﰀ ﰁ ﰂ ﰃ
ﰄ ﰅ ﰆ ﰇ ﰈ ﰉ ﰊ ﰋ ﰌ ﰍ ﰎ ﰏ ﰐ ﰑ ﰒ ﰓ ﰔ ﰕ ﰖ ﰗ ﰘ ﰙ ﰚ ﰛ ﰜ ﰝ ﰞ ﰟ ﰠ ﰡ ﰢ ﰣ ﰤ ﰥ ﰦ ﰧ ﰨ ﰩ ﰪ
ﰫ ﰬ ﰭ ﰮ ﰯ ﰰ ﰱ ﰲ ﰳ ﰴ ﰵ ﰶ ﰷ ﰸ ﰹ ﰺ ﰻ ﰼ ﰽ ﰾ ﰿ ﱀ ﱁ ﱂ ﱃ ﱄ ﱅ ﱆ ﱇ ﱈ ﱉ ﱊ ﱋ ﱌ ﱍ ﱎ ﱏ ﱐ ﱑ ﱒ
ﱓ ﱔ ﱕ ﱖ ﱗ ﱘ ﱙ ﱚ ﱛ ﱜ ﱝ ﱞ ﱟ ﱠ ﱡ ﱢ ﱣ ﱤ ﱥ ﱦ ﱧ ﱨ ﱩ ﱪ ﱫ ﱬ ﱭ ﱮ ﱯ ﱰ ﱱ ﱲ ﱳ ﱴ ﱵ ﱶ ﱷ ﱸ ﱹ ﱺ
ﱻ ﱼ ﱽ ﱾ ﱿ ﲀ ﲁ ﲂ ﲃ ﲄ ﲅ ﲆ ﲇ ﲈ ﲉ ﲊ ﲋ ﲌ ﲍ ﲎ ﲏ ﲐ ﲑ ﲒ ﲓ ﲔ ﲕ ﲖ ﲗ ﲘ ﲙ ﲚ ﲛ ﲜ ﲝ ﲞ ﲟ ﲠ ﲡ
ﲢ ﲣ ﲤ ﲥ ﲦ ﲧ ﲨ ﲩ ﲪ ﲫ ﲬ ﲭ ﲮ ﲯ ﲰ ﲱ ﲲ ﲳ ﲴ ﲵ ﲶ ﲷ ﲸ ﲹ ﲺ ﲻ ﲼ ﲽ ﲾ ﲿ ﳀ ﳁ ﳂ ﳃ ﳄ ﳅ ﳆ ﳇ ﳈ ﳉ
ﳊ ﳋ ﳌ ﳍ ﳎ ﳏ ﳐ ﳑ ﳒ ﳓ ﳔ ﳕ ﳖ ﳗ ﳘ ﳙ ﳚ ﳛ ﳜ ﳝ ﳞ ﳟ ﳠ ﳡ ﳢ ﳣ ﳤ ﳥ ﳦ ﳧ ﳨ ﳩ ﳪ ﳫ ﳬ ﳭ ﳮ ﳯ ﳰ ﳱ
ﳲ ﳳ ﳴ ﳵ ﳶ ﳷ ﳸ ﳹ ﳺ ﳻ ﳼ ﳽ ﳾ ﳿ ﴀ ﴁ ﴂ ﴃ ﴄ ﴅ ﴆ ﴇ ﴈ ﴉ ﴊ ﴋ ﴌ ﴍ ﴎ ﴏ ﴐ ﴑ ﴒ ﴓ ﴔ ﴕ ﴖ ﴗ ﴘ ﴙ
ﴚ ﴛ ﴜ ﴝ ﴞ ﴟ ﴠ ﴡ ﴢ ﴣ ﴤ ﴥ ﴦ ﴧ ﴨ ﴩ ﴪ ﴫ ﴬ ﴭ ﴮ ﴯ ﴰ ﴱ ﴲ ﴳ ﴴ ﴵ ﴶ ﴷ ﴸ ﴹ ﴺ ﴻ ﴼ ﴽ ﴿
﵁ ﵂ ﵃ ﵄ ﵅ ﵆ ﹰ ﹱ ﹲ ﹳ ﹴ ﹶ ﹷ ﹸ ﹹ ﹺ ﹻ ﹼ ﹽ ﹾ ﹿ ﺀ ﺁ ﺂ ﺃ ﺄ ﺅ ﺆ ﺇ ﺈ ﺉ ﺊ ﺋ ﺌ ﺏ ﺐ ﺑ ﺒ
ﺓ ﺔ ﺕ ﺖ ﺗ ﺘ ﺙ ﺚ ﺛ ﺜ ﺝ ﺞ ﺟ ﺠ ﺡ ﺢ ﺣ ﺤ ﺥ ﺦ ﺧ ﺨ ﺩ ﺪ ﺫ ﺬ ﺭ ﺮ ﺯ ﺰ ﺱ ﺲ ﺳ ﺴ ﺵ ﺶ ﺷ ﺸ ﺹ ﺺ
ﺻ ﺼ ﺽ ﺾ ﺿ ﻀ ﻁ ﻂ ﻃ ﻄ ﻅ ﻆ ﻇ ﻈ ﻉ ﻊ ﻋ ﻌ ﻍ ﻎ ﻏ ﻐ ﻑ ﻒ ﻓ ﻔ ﻕ ﻖ ﻗ ﻘ ﻙ ﻚ ﻛ ﻜ ﻝ ﻞ ﻟ ﻠ ﻡ ﻢ
ﻣ ﻤ ﻥ ﻦ ﻧ ﻨ ﻭ ﻮ ﻯ ﻰ ﻱ ﻲ ﻳ ﻴ ﻵ ﻶ ﻷ ﻸ ﻹ ﻺ ﻻ ﻼ

BIN
gittheme1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
gittheme2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

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

149
showgitthemes Executable file
View File

@ -0,0 +1,149 @@
#!/usr/bin/env bash
clear
echo ""
branch="branch-name"
staged=2
conflicts=1
changed=3
untracked=4
stashed=2
ahead=1
behind=1
has_remote=0
is_clean=0
print_theme() {
local theme=$1
local suppress_newline=$2
local suppress_label=$3
case "$theme" in
2|3)
BRANCH_ICON=" "
STAGED_ICON=""
CHANGED_ICON="±"
UNTRACKED_ICON=""
STASHED_ICON=""
AHEAD_ICON=""
BEHIND_ICON=""
NO_REMOTE_ICON=""
CONFLICT_ICON="✘"
DIRTY_ICON="✘"
CLEAN_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
if [[ "$suppress_label" != "true" ]]; then
if [[ "$theme" == "1" || "$theme" == "2" || "$theme" == "3" ]]; then
echo -e "\e[1mTheme $theme:\e[0m This theme requires DejaVuSansMono Nerd Font Mono font"
elif [[ "$theme" == "4" ]]; then
echo -e "\e[1mTheme $theme:\e[0m Unicode"
elif [[ "$theme" == "5" ]]; then
echo -e "\e[1mTheme $theme:\e[0m Terminal Safe"
else
echo -e "\e[1mTheme $theme:\e[0m"
fi
fi
if [[ "$theme" == "2" ]]; then
printf "\e[30;44m"
printf "\e[97;44m %s%s" "$BRANCH_ICON" "$branch"
printf " %s%d" "$STAGED_ICON" "$staged"
printf " %s%d" "$CHANGED_ICON" "$changed"
printf " %s%d" "$UNTRACKED_ICON" "$untracked"
printf " %s%d" "$STASHED_ICON" "$stashed"
printf " %s%d" "$AHEAD_ICON" "$ahead"
printf " %s%d" "$BEHIND_ICON" "$behind"
(( has_remote == 0 )) && printf " %s" "$NO_REMOTE_ICON"
printf " %s%d" "$CONFLICT_ICON" "$conflicts"
printf " %s %s" "$DIRTY_ICON" "$CLEAN_ICON"
printf "\e[0m\e[34;107m"
printf "\e[30;107m ~/some-directory"
printf "\e[97;49m"
printf "\e[0m \$\n"
elif [[ "$theme" == "3" ]]; then
printf "\e[0;37m┌──[\e[0m"
printf "\e[38;5;117m%s%s\e[0m" "$BRANCH_ICON" "$branch"
printf " \e[38;5;196m%s%d" "$STAGED_ICON" "$staged"
printf " \e[38;5;69m%s%d" "$CHANGED_ICON" "$changed"
printf " \e[38;5;41m%s%d" "$UNTRACKED_ICON" "$untracked"
printf " \e[38;5;226m%s%d" "$STASHED_ICON" "$stashed"
printf " \e[0;37m%s%d" "$AHEAD_ICON" "$ahead"
printf " \e[0;37m%s%d" "$BEHIND_ICON" "$behind"
(( has_remote == 0 )) && printf " \e[38;5;250m%s" "$NO_REMOTE_ICON"
printf " \e[38;5;196m%s%d" "$CONFLICT_ICON" "$conflicts"
printf " \e[38;5;196m%s \e[0;32m%s" "$DIRTY_ICON" "$CLEAN_ICON"
printf "\e[0;37m] \e[38;5;178m~/some-directory\e[0m\e[0m\n"
printf "\e[0;37m└─\e[0m \$\n"
else
printf "\e[0;37m[\e[0m"
printf "\e[38;5;117m%s%s\e[0m" "$BRANCH_ICON" "$branch"
printf " \e[38;5;196m%s%d" "$STAGED_ICON" "$staged"
printf " \e[38;5;69m%s%d" "$CHANGED_ICON" "$changed"
printf " \e[38;5;41m%s%d" "$UNTRACKED_ICON" "$untracked"
printf " \e[38;5;226m%s%d" "$STASHED_ICON" "$stashed"
printf " \e[0;37m%s%d" "$AHEAD_ICON" "$ahead"
printf " \e[0;37m%s%d" "$BEHIND_ICON" "$behind"
(( has_remote == 0 )) && printf " \e[38;5;250m%s" "$NO_REMOTE_ICON"
printf " \e[38;5;196m%s%d" "$CONFLICT_ICON" "$conflicts"
printf " \e[38;5;196m%s \e[0;32m%s" "$DIRTY_ICON" "$CLEAN_ICON"
printf "\e[0;37m]\e[0m"
printf " \e[38;5;178m~/some-directory\e[0m \$\n"
fi
[[ "$suppress_newline" != "true" ]] && echo
}
# Print all 5 themes
for t in {1..5}; do
print_theme "$t"
done
# Two newlines
echo -e "\n"
# Reprint theme 1 with no label and no trailing newline
# print_theme 1 true true