# BarbUk theme

A minimal theme with a clean git prompt

## Provided Information

* Current git remote tool logo (support: github, gitlab, bitbucket)
* Current path (red when user is root)
* Current git info
* Last command exit code (only shown when the exit code is greater than 0)
* user@host for ssh connection

## Fonts and glyphs

A font with SCM glyphs is required to display the default tool/host logos.
You can use a font from https://www.nerdfonts.com/ or patch your own font with the tool
provided by https://github.com/ryanoasis/nerd-fonts.

You can also override the default variables if you want to use different glyphs or standard ASCII characters.

### Default theme glyphs

```bash
SCM_GIT_CHAR_GITLAB='  '
SCM_GIT_CHAR_BITBUCKET='  '
SCM_GIT_CHAR_GITHUB='  '
SCM_GIT_CHAR_DEFAULT='  '
SCM_GIT_CHAR_ICON_BRANCH=''
EXIT_CODE_ICON=' '
```

### Customize glyphs

Define your custom glyphs before sourcing bash-it:

```bash
SCM_GIT_CHAR_GITHUB='•'
source "$BASH_IT"/bash_it.sh
```

## SSH prompt

### Usage

When using a ssh session, the theme will display `user@hostname`.
You can disable this information with `BARBUK_SSH_INFO`.

The hostname is displayed in the FQDN format by default. You
can use the short hostname format with `BARBUK_HOST_INFO`.

```bash
# short or long
export BARBUK_HOST_INFO=short
# true or false
export BARBUK_SSH_INFO=false
source "$BASH_IT"/bash_it.sh
```

### Keep theme with sudoer

If you want the theme to persist using `sudo -s` in a ssh session, you need to configure sudo to keep the `HOME` and `SSH_CONNECTION` environment variables.

`HOME` contains the path to the home directory of the current user. Keeping it will allow to use your user dotfiles when elevating privileges.

Keeping `SSH_CONNECTION` env is necessary for ssh detection in the theme.

Please refer to the following documentation for more information:
 -  [sudo manual](https://www.sudo.ws/man/1.8.13/sudoers.man.html) for `env_keep` configuration
 -  [openssh manual](https://linux.die.net/man/1/ssh) for information about `SSH_CONNECTION` environment

```bash
cat << EOF > /etc/sudoers.d/keepenv
Defaults env_keep += HOME
Defaults env_keep += SSH_CONNECTION
EOF
chmod 400 /etc/sudoers.d/keepenv
```

## Examples

### Clean

```bash
 ~ ❯ 
```

### Git

```bash
   ~/.dotfiles on  master ⤏  origin ↑2 •7 ✗ ❯
```

### Ssh

```bash
user@hostname in  ~/bash-it on  master ✓ ❯
```
