https://github.com/hohmannr/bubblified
https://github.com/hohmannr/bubblified
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/hohmannr/bubblified
- Owner: hohmannr
- License: mit
- Created: 2020-04-02T16:31:33.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-04-13T19:58:36.000Z (about 1 year ago)
- Last Synced: 2024-11-03T04:32:41.671Z (7 months ago)
- Language: Shell
- Size: 560 KB
- Stars: 76
- Watchers: 1
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Bubblified zsh-theme

A zsh-theme inspired by [agnoster](https://github.com/agnoster/agnoster-zsh-theme) and [bubblewritten](https://github.com/paracorde/dots/blob/master/bubblewritten.zsh-theme).
**Best used with [ohmyzsh](https://github.com/ohmyzsh/ohmyzsh) and powered by [nerdfonts](https://github.com/ryanoasis/nerd-fonts)**
## Installation
### Antigen
Place the following line in the [right](https://github.com/zsh-users/antigen) 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 branch
- `yellow` – unstaged changes
- `magenta` – all changes are staged
- `blue` – there are stashed changes for this branch
- `red` – 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`- version 0.1:
- initial commit