Awesome
Bubblified zsh-theme
A zsh-theme inspired by agnoster and bubblewritten.
Best used with ohmyzsh and powered by nerdfonts
Installation
Antigen
Place the following line in the right spot of your .zshrc
antigen theme hohmannr/bubblified
Manual
Assuming you are using ohmyzsh.
Get the sourcefile
$ wget https://raw.githubusercontent.com/hohmannr/bubblified/master/bubblified.zsh-theme
Move it to your ohmyzsh theme folder
$ mv bubblified.zsh-theme $ZSH/themes
Open your .zshrc
and change the theme
ZSH_THEME="bubblified"
Restart your terminal emulator and enjoy.
Features
Git support
The theme's git parser adds two level of git information. Firstly, it colors all common git states differently. Secondly, it gives detailed change information by displaying a variety of icons.
State Colors
green
– clean branchyellow
– unstaged changesmagenta
– all changes are stagedblue
– there are stashed changes for this branchred
– unmerged changes/merge conflict
Icons
•
– indexed file modified
– file added to index
– indexed file removed
– indexed file renamed裸
– untracked file
– indexed file copied
SSH Support
If you are installing this theme on a ssh-machine, it automatically detects when you connect to this machine and displays a ssh symbol. You can freely choose this symbol and the bubble color for every ssh-machine that you manage, making them easily differentiable. Check the Customization section for further information.
256 Color support
This theme supports 256 colors, you can use zsh-color-codes (get a list by running the command spectrum_ls
) or the traditional zsh-color-strings (e.g. 'red'
). Check the Customization section for further information.
Customization
This theme is built with customization in mind. This means that you should be able to customize colors and icons aswell as add custom bubbles in the theme's style.
What to do before
Assuming you are using ohmyzsh.
Before customization please copy this theme to ohmyzsh's custom theme directory.
$ cp $ZSH/themes/bubblified.zsh-theme $ZSH/custom/themes
Then edit the theme using your favorite editor, mine is neovim.
$ nvim $ZSH/custom/themes/bubblified.zsh-theme
To load the edited theme, restart your terminal emulator or source your .zshrc
.
$ source ~/.zshrc
Icons
To change icons for the default bubbles, just change their constants under the # SYMBOL CONSTANTS
section.
Colors
To change colors for the default bubbles, just change their constants under the # COLOR CONSTANTS
section. Valid values are {'black', 'red', 'blue', 'cyan', 'yellow', 'green', 'white', 'magenta'}
, they correspond to the colors set in your terminal.
filepath_color='blue'
You can also use zsh-color-codes for a wider spectrum of 256 colors (use the command spectrum_ls
for a complete list). When working with color codes, make sure that you set all three digits.
filepath_color='078'
SSH
Assuming you have installed the theme ON your SSH-MACHINE.
To change the icon and the colors (including the bubble's color) you have to customize the theme on your ssh-machine.
Custom Bubbles
Simple Bubbles
Simple bubbles are bubbles with the default bubble_color
and content.
Declare a variable (e.g. the current time)
time_bubble="%T"
Build a bubble by enclosing the variable with $bubble_left
and $bubble_right
.
time_bubble="$bubble_left%T$bubble_right"
OPTIONAL - If you want a different text color, then add an escape sequence with the color definition or achieve 256 color support by using the in-built foreground function and a zsh-color-string or a zsh-color-code.
time_bubble="$bubble_left%{$fg[red]%}%T$bubble_right"
# or
time_bubble="$bubble_left$(foreground '073')%T$bubble_right"
Add the variable to the PROMPT
.
PROMPT='...$time_bubble...'
Fancy Bubbles
Fancy bubbles are in the style of the default git_bubble
. They consist of multiple segments for which the text and the background can be colored individually.
Define a custom function that echos the bubble's content.
foo () {
echo -n "left middle right"
}
Use the provided bubblify
function to build custom colored bubble segments.
foo () {
echo -n "$(bubblify 0 "left" "black" "red")$(bubblify 1 "middle" "green" "black")$(bubblify "right" "yellow" "magenta")"
}
TIP - bubblify {0, 1, 2, 3} "foreground-color" "background-color"
where 0
builds a left segment, 1
builds a middle segment, 2
builds a right segment and 3
builds a whole custom colored bubble with only one segment. "foreground-color" and "background-color" can be used with zsh-color-strings or zsh-color-codes.
TIP - Including %{$reset_color%}
at the end of the echo will make sure that colors are reset to the default ones after your bubble finishes rendering.
Add the function as a subshell call to the PROMPT
.
PROMPT='...$(foo)...'
Changelog
-
version 0.3:
- added git functionality
- fastified git parser
-
version 0.2:
- added ssh support
- added 256 color support
-
version 0.1.2:
- removed unnecessary escape sequences
-
version 0.1.1:
- fixed bug in
bubblify
where function description and README suggested the wrong building order for$1
- fixed bug in
-
version 0.1:
- initial commit