diff --git a/themes/THEMES.md b/themes/THEMES.md index 6a4be11bf..08d75886e 100644 --- a/themes/THEMES.md +++ b/themes/THEMES.md @@ -171,6 +171,10 @@ [![](n0qorg/n0qorg-dark.png)](n0qorg/n0qorg-dark.png) +## `nekonight` + +[![](nekonight/nekonight-dark.jpg)](nekonight/nekonight-dark.jpg) + ## `nwinkler` [![](nwinkler/nwinkler-dark.png)](nwinkler/nwinkler-dark.png) diff --git a/themes/nekonight/nekonight-dark.jpg b/themes/nekonight/nekonight-dark.jpg new file mode 100644 index 000000000..6a71f274a Binary files /dev/null and b/themes/nekonight/nekonight-dark.jpg differ diff --git a/themes/nekonight/nekonight.theme.sh b/themes/nekonight/nekonight.theme.sh new file mode 100644 index 000000000..4d3e22bc5 --- /dev/null +++ b/themes/nekonight/nekonight.theme.sh @@ -0,0 +1,55 @@ +# nekonight Bash prompt with source control management +# Author: Bruno Ciccarino +# +# +# Theme inspired by: +# - Bash_it cupcake theme +# Demo: +# ╭─🐱 virtualenv 🐱user at 🐱host in 🐱directory on (🐱branch {1} ↑1 ↓1 +1 •1 ⌀1 ✗) +# ╰λ cd ~/path/to/your-directory + +icon_start="╭─" +icon_user=" 🐱 ${_omb_prompt_bold_olive}\u${_omb_prompt_normal}" +icon_host=" at 🐱 ${_omb_prompt_bold_cyan}\h${_omb_prompt_normal}" +icon_directory=" in 🐱 ${_omb_prompt_bold_magenta}\w${_omb_prompt_normal}" +icon_end="╰─${_omb_prompt_bold_white}λ${_omb_prompt_normal}" + +function _omb_theme_nekonight_git_prompt_info() { + local branch_name + branch_name=$(git symbolic-ref --short HEAD 2>/dev/null) + local git_status="" + + if [[ -n $branch_name ]]; then + git_status="${_omb_prompt_bold_white}(🐱 $branch_name $(_omb_theme_nekonight_scm_git_status))${_omb_prompt_normal}" + fi + + echo -n "$git_status" +} + +function _omb_theme_nekonight_scm_git_status() { + local git_status="" + + if git rev-list --count --left-right @{upstream}...HEAD 2>/dev/null | grep -Eq '^[0-9]+\s[0-9]+$'; then + git_status+="${_omb_prompt_brown}↓${_omb_prompt_normal} " + fi + + if [[ -n $(git diff --cached --name-status 2>/dev/null) ]]; then + git_status+="${_omb_prompt_green}+${_omb_prompt_normal}" + fi + + if [[ -n $(git diff --name-status 2>/dev/null) ]]; then + git_status+="${_omb_prompt_yellow}•${_omb_prompt_normal}" + fi + + if [[ -n $(git ls-files --others --exclude-standard 2>/dev/null) ]]; then + git_status+="${_omb_prompt_red}⌀${_omb_prompt_normal}" + fi + + echo -n "$git_status" +} + +function _omb_theme_PROMPT_COMMAND() { + PS1="${icon_start}${icon_user}${icon_host}${icon_directory} in $(_omb_theme_nekonight_git_prompt_info)\n${icon_end} " +} + +_omb_util_add_prompt_command _omb_theme_PROMPT_COMMAND