An open API service indexing awesome lists of open source software.

https://github.com/hohmannr/bubblified


https://github.com/hohmannr/bubblified

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Bubblified zsh-theme

![bubblified.gif](https://raw.githubusercontent.com/hohmannr/bubblified/master/pics/bubblified.gif)

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

![git-demo.png](https://raw.githubusercontent.com/hohmannr/bubblified/master/pics/git-demo.png)

### 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.

![ssh-demo.png](https://raw.githubusercontent.com/hohmannr/bubblified/master/pics/ssh-demo.png)

### 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.

![256-colors-demo.png](https://raw.githubusercontent.com/hohmannr/bubblified/master/pics/256-colors-demo.png)

## 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