{"id":13671063,"url":"https://github.com/jtyr/gbt","last_synced_at":"2025-04-04T15:09:48.994Z","repository":{"id":45128933,"uuid":"107932874","full_name":"jtyr/gbt","owner":"jtyr","description":"Highly configurable prompt builder for Bash, ZSH and PowerShell written in Go.","archived":false,"fork":false,"pushed_at":"2024-02-22T23:43:04.000Z","size":2551,"stargazers_count":553,"open_issues_count":2,"forks_count":34,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-03-28T14:07:32.795Z","etag":null,"topics":["aws","azure","docker","gcp","go","kubectl","mysql","powershell","prompt","python","screen","shell","ssh","su","sudo","termux","vagrant","zsh"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jtyr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-23T04:40:26.000Z","updated_at":"2025-01-25T22:29:36.000Z","dependencies_parsed_at":"2024-01-03T04:29:41.981Z","dependency_job_id":"647b65fc-4a8f-464c-aa19-14805bc3337f","html_url":"https://github.com/jtyr/gbt","commit_stats":{"total_commits":307,"total_committers":11,"mean_commits":27.90909090909091,"dds":0.0456026058631922,"last_synced_commit":"9299d66d4968a7e31ceb2fb6f0b816078cc3b48b"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtyr%2Fgbt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtyr%2Fgbt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtyr%2Fgbt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtyr%2Fgbt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtyr","download_url":"https://codeload.github.com/jtyr/gbt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198463,"owners_count":20900080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","azure","docker","gcp","go","kubectl","mysql","powershell","prompt","python","screen","shell","ssh","su","sudo","termux","vagrant","zsh"],"created_at":"2024-08-02T09:00:57.571Z","updated_at":"2025-04-04T15:09:48.962Z","avatar_url":"https://github.com/jtyr.png","language":"Go","readme":"Go Bullet Train (GBT)\n=====================\n\nHighly configurable prompt builder for Bash, ZSH and PowerShell written in Go.\nIt's inspired by the [Oh My ZSH](https://github.com/robbyrussell/oh-my-zsh)\n[Bullet Train](https://github.com/caiogondim/bullet-train.zsh) theme but runs\nsignificantly faster.\n\n![Demo](https://raw.githubusercontent.com/jtyr/gbt/master/images/demo.gif \"Demo\")\n\nGBT comes with an interesting feature called\n[prompt forwarding](#prompt-forwarding) which allows to forward user-defined\nprompt to a remote machine and have the same-looking prompt across all machines\nvia SSH but also in Docker, Kubectl, Vagrant, MySQL or in Screen without the\nneed to install anything remotely.\n\n![Prompt forwarding demo](https://raw.githubusercontent.com/jtyr/gbt/master/images/prompt_forwarding.gif \"Prompt forwarding demo\")\n\nAll the above works well on Linux (Terminator, Konsole, Gnome Terminal), Mac\n(Terminal, iTerm), Android (Termux) and Windows (PowerShell, Windows Terminal).\n\n[![Release](https://img.shields.io/github/release/jtyr/gbt.svg)](https://github.com/jtyr/gbt/releases)\n[![Build status](https://travis-ci.org/jtyr/gbt.svg?branch=master)](https://travis-ci.org/jtyr/gbt)\n[![Coverage Status](https://coveralls.io/repos/github/jtyr/gbt/badge.svg?branch=master)](https://coveralls.io/github/jtyr/gbt?branch=master)\n[![Packagecloud](https://img.shields.io/badge/%E2%98%81-Packagecloud-707aed.svg)](https://packagecloud.io/gbt/release)\n\n\nTable of contents\n-----------------\n\n- [Setup](#setup)\n  - [Installation](#installation)\n    - [Arch Linux](#arch-linux)\n    - [CentOS/RHEL](#centosrhel)\n    - [Ubuntu/Debian](#ubuntudebian)\n    - [Mac](#mac)\n    - [Windows](#windows)\n    - [Android](#android)\n    - [From the source code](#from-the-source-code)\n  - [Activation](#activation)\n  - [Fonts and colors](#fonts-and-colors)\n- [Configuration](#configuration)\n  - [Colors](#colors)\n  - [Formatting](#formatting)\n  - [Train variables](#train-variables)\n  - [Cars variables](#cars-variables)\n    - [`Aws` car](#aws-car)\n    - [`Azure` car](#azure-car)\n    - [`Custom` car](#custom-car)\n    - [`Dir` car](#dir-car)\n    - [`ExecTime` car](#exectime-car)\n    - [`Gcp` car](#gcp-car)\n    - [`Git` car](#git-car)\n    - [`Hostname` car](#hostname-car)\n    - [`Kubectl` car](#kubectl-car)\n    - [`Os` car](#os-car)\n    - [`PyVirtEnv` car](#pyvirtenv-car)\n    - [`Sign` car](#sign-car)\n    - [`Status` car](#status-car)\n    - [`Time` car](#time-car)\n- [Benchmark](#benchmark)\n- [Prompt forwarding](#prompt-forwarding)\n  - [Principle](#principle)\n  - [Additional settings](#additional-settings)\n  - [MacOS users](#macos-users)\n  - [Limitations](#limitations)\n- [TODO](#todo)\n- [Author](#author)\n- [License](#license)\n\n\nSetup\n-----\n\nIn order to setup GBT on your machine, you have to [install](#installation) it,\n[activate](#activation) it and setup a special [font](#fonts-and-colors) in your\nterminal (optional).\n\n### Installation\n\n#### Arch Linux\n\n```shell\nyaourt -S gbt\n```\n\nOr install `gbt-git` if you would like to run the latest greatest from the\n`master` branch.\n\n#### CentOS/RHEL\n\nPackages hosted by [Packagecloud](https://packagecloud.io/gbt/release):\n\n```shell\necho '[gbt]\nname=GBT YUM repo\nbaseurl=https://packagecloud.io/gbt/release/el/7/$basearch\ngpgkey=https://packagecloud.io/gbt/release/gpgkey\n       https://packagecloud.io/gbt/release/gpgkey/gbt-release-4C6E79EFF45439B6.pub.gpg\ngpgcheck=1\nrepo_gpgcheck=1' | sudo tee /etc/yum.repos.d/gbt.repo \u003e/dev/null\nsudo yum install gbt\n```\n\nUse the exact repository definition from above for all RedHat-based\ndistribution regardless its version.\n\n#### Ubuntu/Debian\n\nPackages hosted by [Packagecloud](https://packagecloud.io/gbt/release):\n\n```shell\ncurl -L https://packagecloud.io/gbt/release/gpgkey | sudo apt-key add -\necho 'deb https://packagecloud.io/gbt/release/ubuntu/ xenial main' | sudo tee /etc/apt/sources.list.d/gbt.list \u003e/dev/null\nsudo apt-get update\nsudo apt-get install gbt\n```\n\nUse the exact repository definition from above for all Debian-based\ndistribution regardless its version.\n\n#### Mac\n\nUsing [`brew`](https://brew.sh):\n\n```shell\nbrew tap jtyr/repo\nbrew install gbt\n```\nOr install `gbt-git` if you would like to run the latest greatest from the\n`master` branch:\n\n```shell\nbrew tap jtyr/repo\nbrew install --HEAD gbt-git\n```\n\n#### Windows\n\nUsing [`choco`](https://chocolatey.org):\n\n```powershell\nchoco install gbt\n```\n\nUsing [`scoop`](https://scoop.sh):\n\n```powershell\nscoop install gbt\n```\n\nOr manually by copying the `gbt.exe` file into a directory listed in the `PATH`\nenvironment variable (e.g. `C:\\Windows\\system32`).\n\n#### Android\n\nInstall [Termux](https://termux.com) from [Google Play Store](https://play.google.com/store/apps/details?id=com.termux)\nand then type this in the Termux app:\n\n```shell\napt update\napt install gbt\n```\n\n#### From the source code\n\nMake sure [Go](https://golang.org) is installed and then run the following on\nLinux and Mac:\n\n```shell\nmkdir ~/go\nexport GOPATH=~/go\nexport PATH=\"$PATH:$GOPATH/bin\"\ngo get github.com/jtyr/gbt/cmd/gbt\n```\n\nOr the following on Windows using PowerShell:\n\n```powershell\nmkdir ~/go\n$Env:GOPATH = '~/go'\n$Env:PATH = \"~/go/bin;$Env:PATH\"\ngo install github.com/jtyr/gbt/cmd/gbt@latest\n```\n\n---\n\n### Activation\n\nAfter GBT is installed, it can be activated by calling it from the shell prompt\nvariable:\n\n```shell\n# For Bash\nPS1='$(gbt $?)'\n\n# For ZSH\nPROMPT='$(gbt $?)'\n```\n\nIf you are using ZSH together with some shell framework (e.g. [Oh My\nZSH](https://github.com/robbyrussell/oh-my-zsh)), your shell is processing a\nfair amount of shell scripts upon ever prompt appearance. You can speed up your\nshell by removing the framework dependency from your configuration and replacing\nit with GBT and a [simple ZSH\nconfiguration](https://gist.github.com/jtyr/be0e6007bd22c9d51e8702a70430d116#file-zshrc-L1-L43).\nCombining pure ZSH configuration with GBT will provide the best possible\nperformance for your shell.\n\nTo activate GBT in PowerShell, run the following in the console or store it to\nthe PowerShell profile file (`echo $profile`):\n\n```powershell\nfunction prompt {\n    $rc = [int]$(-Not $?)\n    $Env:GBT_SHELL = 'plain'\n    $Env:PWD = get-location\n    $Env:GBT_CAR_CUSTOM_EXECUTOR='powershell.exe'\n    $Env:GBT_CAR_CUSTOM_EXECUTOR_PARAM='-Command'\n    $gbt_output = \u0026 @({gbt $rc},{gbt.exe $rc})[$PSVersionTable.PSVersion.Major -lt 6 -or $IsWindows] | Out-String\n    $gbt_output = $gbt_output -replace ([Environment]::NewLine + '$'), ''\n    Write-Host -NoNewline $gbt_output\n    return [char]0\n}\n# Needed only on Windows\n[console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding\n```\n\n---\n\n### Fonts and colors\n\nAlthough GBT can be configured to use only ASCII characters (see\n[`basic`](blob/master/themes/basic.sh) theme), the default configuration uses\nsome UTF-8 characters which require special font. In order to display all\ncharacters of the default prompt correctly, the shell should support UTF-8 and\n[Nerd](https://github.com/ryanoasis/nerd-fonts) fonts (or at least the\n[DejaVuSansMono\nNerd](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/DejaVuSansMono/Regular/complete)\nfont) should be installed. On Linux, you can install it like this:\n\n```shell\nmkdir ~/.fonts\ncurl -L -o ~/.fonts/DejaVuSansMonoNerdFontCompleteMono.ttf https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DejaVuSansMono/Regular/complete/DejaVu%20Sans%20Mono%20Nerd%20Font%20Complete%20Mono.ttf\nfc-cache\n```\n\nOn Mac, it can be installed via `brew`:\n\n```shell\nbrew tap homebrew/cask-fonts\nbrew install --cask font-dejavu-sans-mono-nerd-font\n```\n\nOn Windows, it can be installed via `choco`:\n\n```powershell\nchoco install font-nerd-DejaVuSansMono\n```\n\nOr via `scoop`:\n\n```powershell\nscoop bucket add nerd-fonts\nscoop install DejaVuSansMono-NF\n```\n\nOr just [download](https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DejaVuSansMono/Regular/complete/DejaVu%20Sans%20Mono%20Nerd%20Font%20Complete%20Mono%20Windows%20Compatible.ttf)\nthe font, open it and then install it.\n\nOnce the font is installed, it has to be set in the terminal application to\nrender all prompt characters correctly. Search for the font name `DejaVuSansMono\nNerd Font Mono` on Linux and Mac and `DejaVuSansMono NF` on Windows.\n\nIn order to have the Nerd font in Termux on Android, you have to install\n[Termux:Styling](https://play.google.com/store/apps/details?id=com.termux.styling)\napplication. Then longpress the terminal screen and select `MORE...` → `Style`\n→ `CHOOSE FONT` and there choose the `DejaVu` font.\n\nSome Unix terminals might not use 256 color palette by default. In such case try\nto set the following:\n\n```shell\nexport TERM='xterm-256color'\n```\n\n\nConfiguration\n-------------\n\nThe prompt (train) is assembled from several elements (cars). The look and\nbehavior of whole train as well as each car can be influenced by a set of\nenvironment variables. To set the environment variable, use `export` in the\nLinux and Mac shell and `$Env:` on Windows.\n\n\n### Colors\n\nThe value of all `_BG` and `_FG` variables defines the background and\nforeground color of the particular element. The value of the color can be\nspecified in 3 ways:\n\n#### Color name\n\nOnly a limited number of named colors is supported:\n\n- ![black](https://via.placeholder.com/10/000000/000000?text=+) `black`\n- ![red](https://via.placeholder.com/10/800000/000000?text=+) `red`\n- ![green](https://via.placeholder.com/10/008000/000000?text=+) `green`\n- ![yellow](https://via.placeholder.com/10/808000/000000?text=+) `yellow`\n- ![blue](https://via.placeholder.com/10/000080/000000?text=+) `blue`\n- ![magenta](https://via.placeholder.com/10/800080/000000?text=+) `magenta`\n- ![cyan](https://via.placeholder.com/10/008080/000000?text=+) `cyan`\n- ![light_gray](https://via.placeholder.com/10/c0c0c0/000000?text=+) `light_gray`\n- ![dark_gray](https://via.placeholder.com/10/808080/000000?text=+) `dark_gray`\n- ![light_red](https://via.placeholder.com/10/ff0000/000000?text=+) `light_red`\n- ![light_green](https://via.placeholder.com/10/00ff00/000000?text=+) `light_green`\n- ![light_green](https://via.placeholder.com/10/ffff00/000000?text=+) `light_yellow`\n- ![light_blue](https://via.placeholder.com/10/0000ff/000000?text=+) `light_blue`\n- ![light_magenta](https://via.placeholder.com/10/ff00ff/000000?text=+) `light_magenta`\n- ![light_cyan](https://via.placeholder.com/10/00ffff/000000?text=+) `light_cyan`\n- ![white](https://via.placeholder.com/10/ffffff/000000?text=+) `white`\n- `default` (default color of the terminal)\n\nExamples:\n\n```shell\n# Set the background color of the `Dir` car to red\nexport GBT_CAR_DIR_BG='red'\n# Set the foreground color of the `Dir` car to white\nexport GBT_CAR_DIR_FG='white'\n```\n\n#### Color number\n\nColor can also by expressed by a single number in the range from `0` to\n`255`. The color of each number in that range is visible in the 256-color\nlookup table on\n[Wikipedia](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit). The named\ncolors described above are the first 16 numbers from the lookup table.\n\nExamples:\n\n```shell\n# Set the background color of the `Dir` car to red\nexport GBT_CAR_DIR_BG='1'\n# Set the foreground color of the `Dir` car to white\nexport GBT_CAR_DIR_FG='15'\n```\n\n#### RGB color\n\nArbitrary color can be expressed in the form of RGB triplet.\n\nExamples:\n\n```shell\n# Set the background color of the `Dir` car to red\nexport GBT_CAR_DIR_BG='170;0;0'\n# Set the foreground color of the `Dir` car to white\nexport GBT_CAR_DIR_FG='255;255;255'\n```\n\n#### Color scheme resistance\n\nGBT is using [8-bit color\npalette](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to color\nindividual cars of the train. First 16 colors (Standart and High-intensity\ncolors) of the palette are prone to a change if the terminal is using some color\nscheme (e.g.\n[Solarized](https://en.wikipedia.org/wiki/Solarized_(color_scheme))). That means\nthat if one GBT train uses mixture of the first 16 and the remaining 240 colors,\nthe look might be inconsistent because some of the colors might change\n(depending on the color scheme) and some not. Luckily the first 16 colors can be\nfound in the remaining 240 colors and therefore GBT can automatically convert\nthe first 16 colors into higher colors which provides consistent look regardless\nthe color scheme. This works automatically for [color names](#color-name) as\nwell as for [color numbers](#color-number). If needed, the automatic conversion\ncan be disabled with the following variable:\n\n```shell\nexport GBT_FORCE_HIGHER_COLORS='0'\n```\n\n\n### Formatting\n\nFormatting is done via `_FM` variables. The possible values are:\n\n- `normal`\n\n  Makes the text normal.\n\n- `dim`\n\n  Makes the text dim.\n\n- `bold`\n\n  Makes the text bold. Not all font characters have variant for bold formatting.\n\n- `underline`\n\n  Makes the text underlined.\n\n- `blink`\n\n  Makes the text to blink.\n\n- `invert`\n\n  Makes the text color inverted.\n\n- `hide`\n\n  Makes the text hidden.\n\n- `none`\n\n  No formatting applied.\n\n  Multiple formattings can be combined into comma-separated list.\n\n  Examples:\n\n  ```shell\n  # Set the directory name to be bold\n  export GBT_CAR_DIR_FM='bold'\n  # Set the directory name to be bold and underlined\n  export GBT_CAR_DIR_FM='bold,underline'\n  ```\n\n\n### Train variables\n\n- `GBT_CARS='Status, Os, Hostname, Dir, Git, Sign'`\n\n  List of cars used in the train.\n\n  To add a new car into the train, the whole variable must be redefined. For\n  example in order to add the `Time` car into the default set of cars between\n  the `Os` and `Hostname` car, the variable should look like this:\n\n  ```shell\n  export GBT_CARS='Status, Os, Time, Hostname, Dir, Git, Sign'\n  ```\n\n- `GBT_RCARS='Time'`\n\n  The same like `GBT_CARS` but for the right hand side prompt.\n\n  ```shell\n  # Add the Custom car into the right hand site car to have the separator visible\n  export GBT_RCARS='Custom, Time'\n  # Make the Custom car to be invisible (zero length text)\n  export GBT_CAR_CUSTOM_BG='default'\n  export GBT_CAR_CUSTOM_FORMAT=''\n  # Show only time\n  export GBT_CAR_TIME_FORMAT=' {{ Time }} '\n  # Set the right hand side prompt (ZSH only)\n  RPROMPT='$(gbt -right)'\n  ```\n\n- `GBT_SEPARATOR=''`\n\n  Character used to separate cars in the train.\n\n- `GBT_RSEPARATOR=''`\n\n  The same like `GBT_SEPARATOR` but for the right hand side prompt.\n\n- `GBT_CAR_BG`\n\n  Background color inherited by the top background color variable of every car.\n  That allows to set the background color of all cars via single variable.\n\n- `GBT_CAR_FG`\n\n  Foreground color inherited by the top foreground color variable of every car.\n  That allows to set the foreground color of all cars via single variable.\n\n- `GBT_CAR_FM`\n\n  Formatting inherited by the top formatting variable of every car. That allows\n  to set the formatting of all cars via single variable.\n\n- `GBT_BEGINNING_BG='default'`\n\n  Background color of the text shown at the beginning of the train.\n\n- `GBT_BEGINNING_FG='default'`\n\n  Foreground color of the text shown at the beginning of the train.\n\n- `GBT_BEGINNING_FM='none'`\n\n  Formatting of the text shown at the beginning of the train.\n\n- `GBT_BEGINNING_TEXT=''`\n\n  Text shown at the beginning of the train.\n\n- `GBT_SHELL`\n\n  Indicates which shell is used. The value can be either `zsh`, `bash` or\n  `plain`. By default, the value is extracted from the `$SHELL` environment\n  variable. Set this variable to `bash` if your default shell is ZSH but you\n  want to test GBT in Bash:\n\n  ```shell\n  export GBT_SHELL='bash'\n  bash\n  ```\n  If set to `plain`, no shell-specific decoration is included in the output\n  text. That's suitable for displaying the GBT-generated string in the console\n  output.\n\n- `GBT_DEBUG='0'`\n\n  Shows more verbose output if some of the car modules cannot be imported.\n\n\n### Cars variables\n\n#### `Aws` car\n\nCar that displays information about the local [AWS](https://aws.amazon.com/)\nconfiguration.\n\n- `GBT_CAR_AWS_BG='166'`\n\n  Background color of the car.\n\n- `GBT_CAR_AWS_FG='white'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_AWS_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_AWS_FORMAT=' {{ Icon }} {{ Project }} '`\n\n  Format of the car.\n\n- `GBT_CAR_AWS_ICON_BG`\n\n  Background color of the `{{ Icon }}` element.\n\n- `GBT_CAR_AWS_ICON_FG`\n\n  Foreground color of the `{{ Icon }}` element.\n\n- `GBT_CAR_AWS_ICON_FM`\n\n  Formatting of the `{{ Icon }}` element.\n\n- `GBT_CAR_AWS_ICON_TEXT=''`\n\n  Text content of the `{{ Icon }}` element.\n\n- `GBT_CAR_AWS_PROFILE_BG`\n\n  Background color of the `{{ Profile }}` element.\n\n- `GBT_CAR_AWS_PROFILE_FG`\n\n  Foreground color of the `{{ Profile }}` element.\n\n- `GBT_CAR_AWS_PROFILE_FM`\n\n  Formatting of the `{{ Profile }}` element.\n\n- `GBT_CAR_AWS_PROFILE_TEXT`\n\n  Text content of the `{{ Profile }}` element specifying the configured profile.\n\n- `GBT_CAR_AWS_REGION_BG`\n\n  Background color of the `{{ Region }}` element.\n\n- `GBT_CAR_AWS_REGION_FG`\n\n  Foreground color of the `{{ Region }}` element.\n\n- `GBT_CAR_AWS_REGION_FM`\n\n  Formatting of the `{{ Region }}` element.\n\n- `GBT_CAR_AWS_REGION_TEXT`\n\n  Text content of the `{{ Region }}` element specifying the configured region.\n\n- `GBT_CAR_AWS_DISPLAY`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_AWS_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_AWS_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_AWS_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_AWS_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_AWS_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Azure` car\n\nCar that displays information about the local [Azure](https://azure.microsoft.com/)\nconfiguration.\n\n- `GBT_CAR_AZURE_BG='32'`\n\n  Background color of the car.\n\n- `GBT_CAR_AZURE_FG='white'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_AZURE_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_AZURE_FORMAT=' {{ Icon }} {{ Subscription }} '`\n\n  Format of the car.\n\n- `GBT_CAR_AZURE_ICON_BG`\n\n  Background color of the `{{ Icon }}` element.\n\n- `GBT_CAR_AZURE_ICON_FG`\n\n  Foreground color of the `{{ Icon }}` element.\n\n- `GBT_CAR_AZURE_ICON_FM`\n\n  Formatting of the `{{ Icon }}` element.\n\n- `GBT_CAR_AZURE_ICON_TEXT='ﴃ'`\n\n  Text content of the `{{ Icon }}` element.\n\n- `GBT_CAR_AZURE_CLOUD_BG`\n\n  Background color of the `{{ Cloud }}` element.\n\n- `GBT_CAR_AZURE_CLOUD_FG`\n\n  Foreground color of the `{{ Cloud }}` element.\n\n- `GBT_CAR_AZURE_CLOUD_FM`\n\n  Formatting of the `{{ Cloud }}` element.\n\n- `GBT_CAR_AZURE_CLOUD_TEXT`\n\n  Text content of the `{{ Cloud }}` element specifying the configured cloud.\n\n- `GBT_CAR_AZURE_SUBSCRIPTION_BG`\n\n  Background color of the `{{ Subscription }}` element.\n\n- `GBT_CAR_AZURE_SUBSCRIPTION_FG`\n\n  Foreground color of the `{{ Subscription }}` element.\n\n- `GBT_CAR_AZURE_SUBSCRIPTION_FM`\n\n  Formatting of the `{{ Subscription }}` element.\n\n- `GBT_CAR_AZURE_SUBSCRIPTION_TEXT`\n\n  Text content of the `{{ Subscription }}` element specifying the configured\n  subscription.\n\n- `GBT_CAR_AZURE_USERNAME_BG`\n\n  Background color of the `{{ UserName }}` element.\n\n- `GBT_CAR_AZURE_USERNAME_FG`\n\n  Foreground color of the `{{ UserName }}` element.\n\n- `GBT_CAR_AZURE_USERNAME_FM`\n\n  Formatting of the `{{ UserName }}` element.\n\n- `GBT_CAR_AZURE_USERNAME_TEXT`\n\n  Text content of the `{{ UserName }}` element specifying the configured user\n  name.\n\n- `GBT_CAR_AZURE_USERTYPE_BG`\n\n  Background color of the `{{ UserType }}` element.\n\n- `GBT_CAR_AZURE_USERTYPE_FG`\n\n  Foreground color of the `{{ UserType }}` element.\n\n- `GBT_CAR_AZURE_USERTYPE_FM`\n\n  Formatting of the `{{ UserType }}` element.\n\n- `GBT_CAR_AZURE_USERTYPE_TEXT`\n\n  Text content of the `{{ UserType }}` element specifying the configured user\n  type.\n\n- `GBT_CAR_AZURE_STATE_BG`\n\n  Background color of the `{{ State }}` element.\n\n- `GBT_CAR_AZURE_STATE_FG`\n\n  Foreground color of the `{{ State }}` element.\n\n- `GBT_CAR_AZURE_STATE_FM`\n\n  Formatting of the `{{ State }}` element.\n\n- `GBT_CAR_AZURE_STATE_TEXT`\n\n  Text content of the `{{ State }}` element specifying the configured\n  subscription state.\n\n- `GBT_CAR_AZURE_DEFAULTS_GROUP_BG`\n\n  Background color of the `{{ DefaultsGroup }}` element.\n\n- `GBT_CAR_AZURE_DEFAULTS_GROUP_FG`\n\n  Foreground color of the `{{ DefaultsGroup }}` element.\n\n- `GBT_CAR_AZURE_DEFAULTS_GROUP_FM`\n\n  Formatting of the `{{ DefaultsGroup }}` element.\n\n- `GBT_CAR_AZURE_DEFAULTS_GROUP_TEXT`\n\n  Text content of the `{{ DefaultsGroup }}` element specifying the configured\n  default resource group.\n\n- `GBT_CAR_AZURE_DISPLAY`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_AZURE_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_AZURE_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_AZURE_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_AZURE_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_AZURE_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Custom` car\n\nThe main purpose of this car is to provide the possibility to create car with\ncustom text.\n\n- `GBT_CAR_CUSTOM_BG='yellow'`\n\n  Background color of the car.\n\n- `GBT_CAR_CUSTOM_FG='default'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_CUSTOM_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_CUSTOM_FORMAT=' {{ Text }} '`\n\n  Format of the car.\n\n- `GBT_CAR_CUSTOM_TEXT_BG`\n\n  Background color of the `{{ Text }}` element.\n\n- `GBT_CAR_CUSTOM_TEXT_FG`\n\n  Foreground color of the `{{ Text }}` element.\n\n- `GBT_CAR_CUSTOM_TEXT_FM`\n\n  Formatting of the `{{ Text }}` element.\n\n- `GBT_CAR_CUSTOM_TEXT_TEXT='?'`\n\n  Text content of the `{{ Text }}` element.\n\n- `GBT_CAR_CUSTOM_TEXT_CMD`\n\n  The `{{ Text }}` element will be replaced by standard output of the command\n  specified in this variable. Content of the `GBT_CAR_CUSTOM_TEXT_TEXT` variable\n  takes precedence over this variable.\n\n  ```shell\n  # Show 1 minute loadavg as the content of the Text element\n  export GBT_CAR_CUSTOM_TEXT_CMD=\"uptime | sed -e 's/.*load average: //' -e 's/,.*//'\"\n  ```\n\n- `GBT_CAR_CUSTOM_TEXT_EXECUTOR='sh'`\n\n  Executor used to execute all text command (`_TEXT_CMD`).\n\n- `GBT_CAR_CUSTOM_TEXT_EXECUTOR='-c'`\n\n  Parameter for the executor used to execute text command (`_TEXT_CMD`).\n\n- `GBT_CAR_CUSTOM_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_CUSTOM_DISPLAY_CMD`\n\n  Command which gets executed in order to evaluate whether the car should be\n  displayed or not. Content of the `GBT_CAR_CUSTOM_DISPLAY` variable takes\n  precedence over this variable.\n\n- `GBT_CAR_CUSTOM_DISPLAY_EXECUTOR='sh'`\n\n  Executor used to execute all display command (`_TEXT_CMD`).\n\n- `GBT_CAR_CUSTOM_DISPLAY_EXECUTOR='-c'`\n\n  Parameter for the executor used to execute display command (`_TEXT_CMD`).\n\n  ```shell\n  # Show percentage of used disk space of the root partition\n  export GBT_CAR_CUSTOM_TEXT_CMD=\"df -h --output=pcent / | tail -n1 | sed -re 's/\\s//g' -e 's/%/%%/'\"\n  # Display the car only if the percentage is above 90%\n  export GBT_CAR_CUSTOM_DISPLAY_CMD=\"[[ $(df -h --output=pcent / | tail -n1 | sed -re 's/\\s//g' -e 's/%//') -gt 70 ]] \u0026\u0026 echo YES\"\n  ```\n\n- `GBT_CAR_CUSTOM_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_CUSTOM_EXECUTOR='sh'`\n\n  Executor used to execute all custom commands (`_TEXT_CMD` and `_DISPLAY_CMD`).\n\n- `GBT_CAR_CUSTOM_EXECUTOR='-c'`\n\n  Parameter for the executor used to execute all custom commands (`_TEXT_CMD`\n  and `_DISPLAY_CMD`).\n\n- `GBT_CAR_CUSTOM_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_CUSTOM_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_CUSTOM_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_CUSTOM_SEP_FM`\n\n  Formatting of the separator for this car.\n\nMultiple `Custom` cars can be used in the `GBT_CARS` variable. Just add some\nidentifier behind the car name. To set properties of the new car, just add the\nsame identifier into the environment variable:\n\n```shell\n# Adding Custom and Custom1 car\nexport GBT_CARS='Status, Os, Custom, Custom1, Hostname, Dir, Git, Sign'\n# The text of the default Custom car\nexport GBT_CAR_CUSTOM_TEXT_TEXT='default'\n# The text of the Custom1 car\nexport GBT_CAR_CUSTOM1_TEXT_TEXT='1'\n# Set different background color for the Custom1 car\nexport GBT_CAR_CUSTOM1_BG='magenta'\n```\n\n\n#### `Dir` car\n\nCar that displays current directory name.\n\n- `GBT_CAR_DIR_BG='blue'`\n\n  Background color of the car.\n\n- `GBT_CAR_DIR_FG='light_gray'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_DIR_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_DIR_FORMAT=' {{ Dir }} '`\n\n  Format of the car.\n\n- `GBT_CAR_DIR_DIR_BG`\n\n  Background color of the `{{ Dir }}` element.\n\n- `GBT_CAR_DIR_DIR_FG`\n\n  Foreground color of the `{{ Dir }}` element.\n\n- `GBT_CAR_DIR_DIR_FM`\n\n  Formatting of the `{{ Dir }}` element.\n\n- `GBT_CAR_DIR_DIR_TEXT`\n\n  Text content of the `{{ Dir }}` element. The directory name.\n\n- `GBT_CAR_DIR_DIRSEP`\n\n  OS-default character used to separate directories.\n\n- `GBT_CAR_DIR_HOMESIGN='~'`\n\n  Character which represents the user's home directory. If set to empty\n  string, full home directory path is used instead.\n\n- `GBT_CAR_DIR_DEPTH='1'`\n\n  Number of directories to show.\n\n- `GBT_CAR_DIR_NONCURLEN='255'`\n\n  Indicates how many characters of the non-current directory name should be\n  displayed. This can be set to `1` to display only the first character of the\n  directory name when using `GBT_CAR_DIR_DEPTH` with value grater than one.\n\n- `GBT_CAR_DIR_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_DIR_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_DIR_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_DIR_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_DIR_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_DIR_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `ExecTime` car\n\nCar that displays how long each shell command run.\n\n- `GBT_CAR_EXECTIME_BG='light_gray'`\n\n  Background color of the car.\n\n- `GBT_CAR_EXECTIME_FG='black'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_EXECTIME_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_EXECTIME_FORMAT=' {{ Time }} '`\n\n  Format of the car.\n\n- `GBT_CAR_EXECTIME_DURATION_BG`\n\n  Background color of the `{{ Duration }}` element.\n\n- `GBT_CAR_EXECTIME_DURATION_FG`\n\n  Foreground color of the `{{ Duration }}` element.\n\n- `GBT_CAR_EXECTIME_DURATION_FM`\n\n  Formatting of the `{{ Duration }}` element.\n\n- `GBT_CAR_EXECTIME_DURATION_TEXT`\n\n  Text content of the `{{ Duration }}` element. The duration of the execution\n  time (e.g `1h8m19s135ms` for precision set to `3`).\n\n- `GBT_CAR_EXECTIME_SECONDS_BG`\n\n  Background color of the `{{ Seconds }}` element.\n\n- `GBT_CAR_EXECTIME_SECONDS_FG`\n\n  Foreground color of the `{{ Seconds }}` element.\n\n- `GBT_CAR_EXECTIME_SECONDS_FM`\n\n  Formatting of the `{{ Seconds }}` element.\n\n- `GBT_CAR_EXECTIME_SECONDS_TEXT`\n\n  Text content of the `{{ Seconds }}` element. The execution time in seconds\n  (e.g. `4099.1358` for precision set to `4`).\n\n- `GBT_CAR_EXECTIME_TIME_BG`\n\n  Background color of the `{{ Time }}` element.\n\n- `GBT_CAR_EXECTIME_TIME_FG`\n\n  Foreground color of the `{{ Time }}` element.\n\n- `GBT_CAR_EXECTIME_TIME_FM`\n\n  Formatting of the `{{ Time }}` element.\n\n- `GBT_CAR_EXECTIME_TIME_TEXT`\n\n  Text content of the `{{ Time }}` element. The execution time (e.g.\n  `01:08:19.1358` for precision set to `4`).\n\n- `GBT_CAR_EXECTIME_PRECISION='0'`\n\n  Sub-second precision to show.\n\n- `GBT_CAR_EXECTIME_SECS`\n\n  The number of seconds the command run in shell. This variable is defined in\n  the source file as shown bellow.\n\n- `GBT_CAR_EXECTIME_BELL='0'`\n\n  Sound console bell if the executed command exceeds specified number of\n  seconds. Value set to `0` disables the bell (default).\n\n- `GBT_CAR_EXECTIME_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_EXECTIME_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_EXECTIME_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_EXECTIME_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_EXECTIME_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_EXECTIME_SEP_FM`\n\n  Formatting of the separator for this car.\n\nIn order to allow this car to calculate the execution time, the following must\nbe loaded in the shell:\n\n```shell\n# For Bash\nsource /usr/share/gbt/sources/exectime/bash.sh\n# For ZSH\nsource /usr/share/gbt/sources/exectime/zsh.sh\n```\n\nOn macOS the `date` command does not support `%N` format for milliseconds and\nyou need to override the environment variable `GBT__SOURCE_DATE_ARG='+%s`.\n\n\n#### `Gcp` car\n\nCar that displays information about the local [GCP](https://cloud.google.com/)\nconfiguration.\n\n- `GBT_CAR_GCP_BG='33'`\n\n  Background color of the car.\n\n- `GBT_CAR_GCP_FG='white'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_GCP_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_GCP_FORMAT=' {{ Icon }} {{ Project }} '`\n\n  Format of the car.\n\n- `GBT_CAR_GCP_ICON_BG`\n\n  Background color of the `{{ Icon }}` element.\n\n- `GBT_CAR_GCP_ICON_FG`\n\n  Foreground color of the `{{ Icon }}` element.\n\n- `GBT_CAR_GCP_ICON_FM`\n\n  Formatting of the `{{ Icon }}` element.\n\n- `GBT_CAR_GCP_ICON_TEXT=''`\n\n  Text content of the `{{ Icon }}` element.\n\n- `GBT_CAR_GCP_ACCOUNT_BG`\n\n  Background color of the `{{ Account }}` element.\n\n- `GBT_CAR_GCP_ACCOUNT_FG`\n\n  Foreground color of the `{{ Account }}` element.\n\n- `GBT_CAR_GCP_ACCOUNT_FM`\n\n  Formatting of the `{{ Account }}` element.\n\n- `GBT_CAR_GCP_ACCOUNT_TEXT`\n\n  Text content of the `{{ Account }}` element specifying the configured account.\n\n- `GBT_CAR_GCP_CONFIG_BG`\n\n  Background color of the `{{ Config }}` element.\n\n- `GBT_CAR_GCP_CONFIG_FG`\n\n  Foreground color of the `{{ Config }}` element.\n\n- `GBT_CAR_GCP_CONFIG_FM`\n\n  Formatting of the `{{ Config }}` element.\n\n- `GBT_CAR_GCP_CONFIG_TEXT`\n\n  Text content of the `{{ Config }}` element specifying the active\n  configuration.\n\n- `GBT_CAR_GCP_PROJECT_BG`\n\n  Background color of the `{{ Project }}` element.\n\n- `GBT_CAR_GCP_PROJECT_FG`\n\n  Foreground color of the `{{ Project }}` element.\n\n- `GBT_CAR_GCP_PROJECT_FM`\n\n  Formatting of the `{{ Project }}` element.\n\n- `GBT_CAR_GCP_PROJECT_TEXT`\n\n  Text content of the `{{ Project }}` element specifying the configured project.\n\n- `GBT_CAR_GCP_PROJECT_ALIASES`\n\n  List of aliases that allow to display different project name based on the\n  original name. The following example shows how to change the project\n  `my-dev-project-123456` to `dev` and the project `my-prod-project-654321` to\n  `prod`.\n\n  ```shell\n  export GBT_CAR_GCP_PROJECT_ALIASES='\n    my-dev-project-123456=dev,\n    my-prod-project-654321=prod,\n  '\n  ```\n\n- `GBT_CAR_GCP_DISPLAY`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_GCP_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_GCP_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_GCP_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_GCP_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_GCP_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Git` car\n\nCar that displays information about a local Git repository. This car is\ndisplayed only if the current directory is a Git repository.\n\n- `GBT_CAR_GIT_BG='light_gray'`\n\n  Background color of the car.\n\n- `GBT_CAR_GIT_FG='black'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_GIT_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_GIT_FORMAT=' {{ Icon }} {{ Head }} {{ Status }}{{ Ahead }}{{ Behind }} '`\n\n  Format of the car.\n\n- `GBT_CAR_GIT_ICON_BG`\n\n  Background color of the `{{ Icon }}` element.\n\n- `GBT_CAR_GIT_ICON_FG`\n\n  Foreground color of the `{{ Icon }}` element.\n\n- `GBT_CAR_GIT_ICON_FM`\n\n  Formatting of the `{{ Icon }}` element.\n\n- `GBT_CAR_GIT_ICON_TEXT=''`\n\n  Text content of the `{{ Icon }}` element.\n\n- `GBT_CAR_GIT_HEAD_BG`\n\n  Background color of the `{{ Head }}` element.\n\n- `GBT_CAR_GIT_HEAD_FG`\n\n  Foreground color of the `{{ Head }}` element.\n\n- `GBT_CAR_GIT_HEAD_FM`\n\n  Formatting of the `{{ Head }}` element.\n\n- `GBT_CAR_GIT_HEAD_TEXT`\n\n  Text content of the `{{ Head }}` element - branch, tag name or the\n  commit ID.\n\n- `GBT_CAR_GIT_STATUS_BG`\n\n  Background color of the `{{ Status }}` element.\n\n- `GBT_CAR_GIT_STATUS_FG`\n\n  Foreground color of the `{{ Status }}` element.\n\n- `GBT_CAR_GIT_STATUS_FM`\n\n  Formatting of the `{{ Status }}` element.\n\n- `GBT_CAR_GIT_STATUS_FORMAT`\n\n  Format of the `{{ Status }}` element. The content is either\n  `{{ StatusDirty }}` or `{{ StatusClean }}` depending on the state of the\n  local Git repository.\n\n- `GBT_CAR_GIT_STATUS_DIRTY_BG`\n\n  Background color of the `{{ StatusDirty }}` element.\n\n- `GBT_CAR_GIT_STATUS_DIRTY_FG='red'`\n\n  Foreground color of the `{{ StatusDirty }}` element.\n\n- `GBT_CAR_GIT_STATUS_DIRTY_FM`\n\n  Formatting of the `{{ StatusDirty }}` element.\n\n- `GBT_CAR_GIT_STATUS_DIRTY_TEXT='✘'`\n\n  Text content of the `{{ StatusDirty }}` element.\n\n- `GBT_CAR_GIT_STATUS_CLEAN_BG`\n\n  Background color of the `{{ StatusClean }}` element.\n\n- `GBT_CAR_GIT_STATUS_CLEAN_FG='green'`\n\n  Foreground color of the `{{ StatusClean }}` element.\n\n- `GBT_CAR_GIT_STATUS_CLEAN_FM`\n\n  Formatting of the `{{ StatusClean }}` element.\n\n- `GBT_CAR_GIT_STATUS_CLEAN_TEXT='✔'`\n\n  Text content of the `{{ StatusClean }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_BG`\n\n  Background color of the `{{ StatusAdded }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_FG`\n\n  Foreground color of the `{{ StatusAdded }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_FM`\n\n  Formatting of the `{{ StatusAdded }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_FORMAT='{{ StatusAddedSymbol }}'`\n\n  Format of the the `{{ StatusAdded }}` element. It can be\n  `{{ StatusAddedSymbol }}` or `{{ StatusAddedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_ADDED_SYMBOL_BG`\n\n  Background color of the `{{ StatusAddedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusAddedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusAddedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_SYMBOL_TEXT=' ⟴'`\n\n  Text content of the `{{ StatusAddedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_COUNT_BG`\n\n  Background color of the `{{ StatusAddedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_COUNT_FG`\n\n  Foreground color of the `{{ StatusAddedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_COUNT_FM`\n\n  Formatting of the `{{ StatusAddedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_ADDED_COUNT_TEXT`\n\n  Text content of the `{{ StatusAddedCount }}` element. By default it contains\n  a number of added files.\n\n- `GBT_CAR_GIT_STATUS_COPIED_BG`\n\n  Background color of the `{{ StatusCopied }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_FG`\n\n  Foreground color of the `{{ StatusCopied }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_FM`\n\n  Formatting of the `{{ StatusCopied }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_FORMAT='{{ StatusCopiedSymbol }}'`\n\n  Format of the the `{{ StatusCopied }}` element. It can be\n  `{{ StatusCopiedSymbol }}` or `{{ StatusCopiedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_COPIED_SYMBOL_BG`\n\n  Background color of the `{{ StatusCopiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusCopiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusCopiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_SYMBOL_TEXT=' ⥈'`\n\n  Text content of the `{{ StatusCopiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_COUNT_BG`\n\n  Background color of the `{{ StatusCopiedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_COUNT_FG`\n\n  Foreground color of the `{{ StatusCopiedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_COUNT_FM`\n\n  Formatting of the `{{ StatusCopiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_COPIED_COUNT_TEXT`\n\n  Text content of the `{{ StatusCopiedCount }}` element. By default it contains\n  a number of files copied.\n\n- `GBT_CAR_GIT_STATUS_DELETED_BG`\n\n  Background color of the `{{ StatusDeleted }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_FG`\n\n  Foreground color of the `{{ StatusDeleted }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_FM`\n\n  Formatting of the `{{ StatusDeleted }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_FORMAT='{{ StatusDeletedSymbol }}'`\n\n  Format of the the `{{ StatusDeleted }}` element. It can be\n  `{{ StatusDeletedSymbol }}` or `{{ StatusDeletedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_DELETED_SYMBOL_BG`\n\n  Background color of the `{{ StatusDeletedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusDeletedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusDeletedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_SYMBOL_TEXT=' ➖'`\n\n  Text content of the `{{ StatusDeletedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_COUNT_BG`\n\n  Background color of the `{{ StatusDeletedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_COUNT_FG`\n\n  Foreground color of the `{{ StatusDeletedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_COUNT_FM`\n\n  Formatting of the `{{ StatusDeletedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_DELETED_COUNT_TEXT`\n\n  Text content of the `{{ StatusDeletedCount }}` element. By default it contains\n  a number of deleted files.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_BG`\n\n  Background color of the `{{ StatusIgnored }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_FG`\n\n  Foreground color of the `{{ StatusIgnored }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_FM`\n\n  Formatting of the `{{ StatusIgnored }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_FORMAT='{{ StatusIgnoredSymbol }}'`\n\n  Format of the the `{{ StatusIgnored }}` element. It can be\n  `{{ StatusIgnoredSymbol }}` or `{{ StatusIgnoredCount }}`.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_SYMBOL_BG`\n\n  Background color of the `{{ StatusIgnoredSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusIgnoredSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusIgnoredSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_SYMBOL_TEXT=' ⬆'`\n\n  Text content of the `{{ StatusIgnoredSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_COUNT_BG`\n\n  Background color of the `{{ StatusIgnoredCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_COUNT_FG`\n\n  Foreground color of the `{{ StatusIgnoredCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_COUNT_FM`\n\n  Formatting of the `{{ StatusIgnoredSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_IGNORED_COUNT_TEXT`\n\n  Text content of the `{{ StatusIgnoredCount }}` element. By default it contains\n  a number of ignored files.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_BG`\n\n  Background color of the `{{ StatusModified }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_FG`\n\n  Foreground color of the `{{ StatusModified }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_FM`\n\n  Formatting of the `{{ StatusModified }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_FORMAT='{{ StatusModifiedSymbol }}'`\n\n  Format of the the `{{ StatusModified }}` element. It can be\n  `{{ StatusModifiedSymbol }}` or `{{ StatusModifiedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_SYMBOL_BG`\n\n  Background color of the `{{ StatusModifiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusModifiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusModifiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_SYMBOL_TEXT=' ⬆'`\n\n  Text content of the `{{ StatusModifiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_COUNT_BG`\n\n  Background color of the `{{ StatusModifiedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_COUNT_FG`\n\n  Foreground color of the `{{ StatusModifiedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_COUNT_FM`\n\n  Formatting of the `{{ StatusModifiedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_MODIFIED_COUNT_TEXT`\n\n  Text content of the `{{ StatusModifiedCount }}` element. By default it\n  contains a number of modified files.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_BG`\n\n  Background color of the `{{ StatusRenamed }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_FG`\n\n  Foreground color of the `{{ StatusRenamed }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_FM`\n\n  Formatting of the `{{ StatusRenamed }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_FORMAT='{{ StatusRenamedSymbol }}'`\n\n  Format of the the `{{ StatusRenamed }}` element. It can be\n  `{{ StatusRenamedSymbol }}` or `{{ StatusRenamedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_SYMBOL_BG`\n\n  Background color of the `{{ StatusRenamedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusRenamedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusRenamedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_SYMBOL_TEXT=' ⬆'`\n\n  Text content of the `{{ StatusRenamedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_COUNT_BG`\n\n  Background color of the `{{ StatusRenamedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_COUNT_FG`\n\n  Foreground color of the `{{ StatusRenamedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_COUNT_FM`\n\n  Formatting of the `{{ StatusRenamedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_RENAMED_COUNT_TEXT`\n\n  Text content of the `{{ StatusRenamedCount }}` element. By default it contains\n  a number of renamed files.\n\n- `GBT_CAR_GIT_STATUS_STAGED_BG`\n\n  Background color of the `{{ StatusStaged }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_FG`\n\n  Foreground color of the `{{ StatusStaged }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_FM`\n\n  Formatting of the `{{ StatusStaged }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_FORMAT='{{ StatusStagedSymbol }}'`\n\n  Format of the the `{{ StatusStaged }}` element. It can be\n  `{{ StatusStagedSymbol }}` or `{{ StatusStagedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_STAGED_SYMBOL_BG`\n\n  Background color of the `{{ StatusStagedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusStagedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusStagedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_SYMBOL_TEXT=' ⬆'`\n\n  Text content of the `{{ StatusStagedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_COUNT_BG`\n\n  Background color of the `{{ StatusStagedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_COUNT_FG`\n\n  Foreground color of the `{{ StatusStagedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_COUNT_FM`\n\n  Formatting of the `{{ StatusStagedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_STAGED_COUNT_TEXT`\n\n  Text content of the `{{ StatusStagedCount }}` element. By default it contains\n  a number of staged files.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_BG`\n\n  Background color of the `{{ StatusUnmerged }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_FG`\n\n  Foreground color of the `{{ StatusUnmerged }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_FM`\n\n  Formatting of the `{{ StatusUnmerged }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_FORMAT='{{ StatusUnmergedSymbol }}'`\n\n  Format of the the `{{ StatusUnmerged }}` element. It can be\n  `{{ StatusUnmergedSymbol }}` or `{{ StatusUnmergedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_SYMBOL_BG`\n\n  Background color of the `{{ StatusUnmergedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusUnmergedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusUnmergedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_SYMBOL_TEXT=' ⬆'`\n\n  Text content of the `{{ StatusUnmergedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_COUNT_BG`\n\n  Background color of the `{{ StatusUnmergedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_COUNT_FG`\n\n  Foreground color of the `{{ StatusUnmergedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_COUNT_FM`\n\n  Formatting of the `{{ StatusUnmergedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNMERGED_COUNT_TEXT`\n\n  Text content of the `{{ StatusUnmergedCount }}` element. By default it\n  contains a number of unmerged files.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_BG`\n\n  Background color of the `{{ StatusUntracked }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_FG`\n\n  Foreground color of the `{{ StatusUntracked }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_FM`\n\n  Formatting of the `{{ StatusUntracked }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_FORMAT='{{ StatusUntrackedSymbol }}'`\n\n  Format of the the `{{ StatusUntracked }}` element. It can be\n  `{{ StatusUntrackedSymbol }}` or `{{ StatusUntrackedCount }}`.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_SYMBOL_BG`\n\n  Background color of the `{{ StatusUntrackedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_SYMBOL_FG`\n\n  Foreground color of the `{{ StatusUntrackedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_SYMBOL_FM`\n\n  Formatting of the `{{ StatusUntrackedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_SYMBOL_TEXT=' ⬆'`\n\n  Text content of the `{{ StatusUntrackedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_COUNT_BG`\n\n  Background color of the `{{ StatusUntrackedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_COUNT_FG`\n\n  Foreground color of the `{{ StatusUntrackedCount }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_COUNT_FM`\n\n  Formatting of the `{{ StatusUntrackedSymbol }}` element.\n\n- `GBT_CAR_GIT_STATUS_UNTRACKED_COUNT_TEXT`\n\n  Text content of the `{{ StatusUntrackedCount }}` element. By default it\n  contains a number of untracked files.\n\n- `GBT_CAR_GIT_AHEAD_BG`\n\n  Background color of the `{{ Ahead }}` element.\n\n- `GBT_CAR_GIT_AHEAD_FG`\n\n  Foreground color of the `{{ Ahead }}` element.\n\n- `GBT_CAR_GIT_AHEAD_FM`\n\n  Formatting of the `{{ Ahead }}` element.\n\n- `GBT_CAR_GIT_AHEAD_FORMAT='{{ AheadSymbol }}'`\n\n  Format of the the `{{ Ahead }}` element. It can be `{{ AheadSymbol }}` or\n  `{{ AheadCount }}`.\n\n- `GBT_CAR_GIT_AHEAD_SYMBOL_BG`\n\n  Background color of the `{{ AheadSymbol }}` element.\n\n- `GBT_CAR_GIT_AHEAD_SYMBOL_FG`\n\n  Foreground color of the `{{ AheadSymbol }}` element.\n\n- `GBT_CAR_GIT_AHEAD_SYMBOL_FM`\n\n  Formatting of the `{{ AheadSymbol }}` element.\n\n- `GBT_CAR_GIT_AHEAD_SYMBOL_TEXT=' ⬆'`\n\n  Text content of the `{{ AheadSymbol }}` element.\n\n- `GBT_CAR_GIT_AHEAD_COUNT_BG`\n\n  Background color of the `{{ AheadCount }}` element.\n\n- `GBT_CAR_GIT_AHEAD_COUNT_FG`\n\n  Foreground color of the `{{ AheadCount }}` element.\n\n- `GBT_CAR_GIT_AHEAD_COUNT_FM`\n\n  Formatting of the `{{ AheadSymbol }}` element.\n\n- `GBT_CAR_GIT_AHEAD_COUNT_TEXT`\n\n  Text content of the `{{ AheadCount }}` element. By default it contains\n  a number of commits ahead of the remote branch.\n\n- `GBT_CAR_GIT_BEHIND_BG`\n\n  Background color of the `{{ Behind }}` element.\n\n- `GBT_CAR_GIT_BEHIND_FG`\n\n  Foreground color of the `{{ Behind }}` element.\n\n- `GBT_CAR_GIT_BEHIND_FM`\n\n  Formatting of the `{{ Behind }}` element.\n\n- `GBT_CAR_GIT_BEHIND_FORMAT='{{ BehindSymbol }}'`\n\n  Format of the the `{{ Behind }}` element. It can be `{{ BehindSymbol }}` or\n  `{{ BehindCount }}`.\n\n- `GBT_CAR_GIT_BEHIND_SYMBOL_BG`\n\n  Background color of the `{{ BehindSymbol }}` element.\n\n- `GBT_CAR_GIT_BEHIND_SYMBOL_FG`\n\n  Foreground color of the `{{ BehindSymbol }}` element.\n\n- `GBT_CAR_GIT_BEHIND_SYMBOL_FM`\n\n  Formatting of the `{{ BehindSymbol }}` element.\n\n- `GBT_CAR_GIT_BEHIND_SYMBOL_TEXT=' ⬇'`\n\n  Text content of the `{{ BehindSymbol }}` element.\n\n- `GBT_CAR_GIT_BEHIND_COUNT_BG`\n\n  Background color of the `{{ BehindCount }}` element.\n\n- `GBT_CAR_GIT_BEHIND_COUNT_FG`\n\n  Foreground color of the `{{ BehindCount }}` element.\n\n- `GBT_CAR_GIT_BEHIND_COUNT_FM`\n\n  Formatting of the `{{ BehindSymbol }}` element.\n\n- `GBT_CAR_GIT_BEHIND_COUNT_TEXT`\n\n  Text content of the `{{ BehindCount }}` element. By default it contains\n  a number of commits ahead of the remote branch.\n\n- `GBT_CAR_GIT_STASH_BG`\n\n  Background color of the `{{ Stash }}` element.\n\n- `GBT_CAR_GIT_STASH_FG`\n\n  Foreground color of the `{{ Stash }}` element.\n\n- `GBT_CAR_GIT_STASH_FM`\n\n  Formatting of the `{{ Stash }}` element.\n\n- `GBT_CAR_GIT_STASH_FORMAT='{{ StashSymbol }}'`\n\n  Format of the the `{{ Stash }}` element. It can be `{{ StashSymbol }}` or\n  `{{ StashCount }}`.\n\n- `GBT_CAR_GIT_STASH_SYMBOL_BG`\n\n  Background color of the `{{ StashSymbol }}` element.\n\n- `GBT_CAR_GIT_STASH_SYMBOL_FG`\n\n  Foreground color of the `{{ StashSymbol }}` element.\n\n- `GBT_CAR_GIT_STASH_SYMBOL_FM`\n\n  Formatting of the `{{ StashSymbol }}` element.\n\n- `GBT_CAR_GIT_STASH_SYMBOL_TEXT=' ⚑'`\n\n  Text content of the `{{ StashSymbol }}` element.\n\n- `GBT_CAR_GIT_STASH_COUNT_BG`\n\n  Background color of the `{{ StashCount }}` element.\n\n- `GBT_CAR_GIT_STASH_COUNT_FG`\n\n  Foreground color of the `{{ StashCount }}` element.\n\n- `GBT_CAR_GIT_STASH_COUNT_FM`\n\n  Formatting of the `{{ StashSymbol }}` element.\n\n- `GBT_CAR_GIT_STASH_COUNT_TEXT`\n\n  Text content of the `{{ StashCount }}` element. By default it contains\n  a number of stashes.\n\n- `GBT_CAR_GIT_DISPLAY`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_GIT_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_GIT_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_GIT_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_GIT_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_GIT_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Hostname` car\n\nCar that displays username of the currently logged user and the hostname of the\nlocal machine.\n\n- `GBT_CAR_HOSTNAME_BG='dark_gray'`\n\n  Background color of the car.\n\n- `GBT_CAR_HOSTNAME_FG='252'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_HOSTNAME_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_HOSTNAME_FORMAT=' {{ UserHost }} '`\n\n  Format of the car.\n\n- `GBT_CAR_HOSTNAME_USERHOST_BG`\n\n  Background color of the `{{ UserHost }}` element.\n\n- `GBT_CAR_HOSTNAME_USERHOST_FG`\n\n  Foreground color of the `{{ UserHost }}` element.\n\n- `GBT_CAR_HOSTNAME_USERHOST_FM`\n\n  Formatting of the `{{ UserHost }}` element.\n\n- `GBT_CAR_HOSTNAME_USERHOST_FORMAT`\n\n  Format of the `{{ UserHost }}` element. The value is either\n  `{{ Admin }}@{{ Host }}` if the user is `root` or `{{ User }}@{{ Host }}`\n  if the user is a normal user.\n\n- `GBT_CAR_HOSTNAME_ADMIN_BG`\n\n  Background color of the `{{ Admin }}` element.\n\n- `GBT_CAR_HOSTNAME_ADMIN_FG`\n\n  Foreground color of the `{{ Admin }}` element.\n\n- `GBT_CAR_HOSTNAME_ADMIN_FM`\n\n  Formatting of the `{{ Admin }}` element.\n\n- `GBT_CAR_HOSTNAME_ADMIN_TEXT`\n\n  Text content of the `{{ Admin }}` element. The user name.\n\n- `GBT_CAR_HOSTNAME_USER_BG`\n\n  Background color of the `{{ User }}` element.\n\n- `GBT_CAR_HOSTNAME_USER_FG`\n\n  Foreground color of the `{{ User }}` element.\n\n- `GBT_CAR_HOSTNAME_USER_FM`\n\n  Formatting of the `{{ User }}` element.\n\n- `GBT_CAR_HOSTNAME_USER_TEXT`\n\n  Text content of the `{{ User }}` element. The user name.\n\n- `GBT_CAR_HOSTNAME_HOST_BG`\n\n  Background color of the `{{ Host }}` element.\n\n- `GBT_CAR_HOSTNAME_HOST_FG`\n\n  Foreground color of the `{{ Host }}` element.\n\n- `GBT_CAR_HOSTNAME_HOST_FM`\n\n  Formatting of the `{{ Host }}` element.\n\n- `GBT_CAR_HOSTNAME_HOST_TEXT`\n\n  Text content of the `{{ Host }}` element. The host name.\n\n- `GBT_CAR_HOSTNAME_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_HOSTNAME_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_HOSTNAME_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_HOSTNAME_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_HOSTNAME_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_HOSTNAME_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Kubectl` car\n\nCar that displays `kubectl` information.\n\n- `GBT_CAR_KUBECTL_BG='26'`\n\n  Background color of the car.\n\n- `GBT_CAR_KUBECTL_FG='white'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_KUBECTL_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_KUBECTL_FORMAT=' {{ Icon }} {{ Context }} '`\n\n  Format of the car. `{{ Cluster }}`, `{{ AuthInfo }}` and `{{ Namespace }}`\n  can be used here as well.\n\n- `GBT_CAR_KUBECTL_ICON_BG`\n\n  Background color of the `{{ Icon }}` element.\n\n- `GBT_CAR_KUBECTL_ICON_FG`\n\n  Foreground color of the `{{ Icon }}` element.\n\n- `GBT_CAR_KUBECTL_ICON_FM`\n\n  Formatting of the `{{ Icon }}` element.\n\n- `GBT_CAR_KUBECTL_ICON_TEXT='⎈'`\n\n  Text content of the `{{ Icon }}` element.\n\n- `GBT_CAR_KUBECTL_CONTEXT_BG`\n\n  Background color of the `{{ Context }}` element.\n\n- `GBT_CAR_KUBECTL_CONTEXT_FG`\n\n  Foreground color of the `{{ Context }}` element.\n\n- `GBT_CAR_KUBECTL_CONTEXT_FM`\n\n  Formatting of the `{{ Context }}` element.\n\n- `GBT_CAR_KUBECTL_CONTEXT_TEXT`\n\n  Text content of the `{{ Context }}` element.\n\n- `GBT_CAR_KUBECTL_CLUSTER_BG`\n\n  Background color of the `{{ Cluster }}` element.\n\n- `GBT_CAR_KUBECTL_CLUSTER_FG`\n\n  Foreground color of the `{{ Cluster }}` element.\n\n- `GBT_CAR_KUBECTL_CLUSTER_FM`\n\n  Formatting of the `{{ Cluster }}` element.\n\n- `GBT_CAR_KUBECTL_CLUSTER_TEXT`\n\n  Text content of the `{{ Cluster }}` element.\n\n- `GBT_CAR_KUBECTL_AUTHINFO_BG`\n\n  Background color of the `{{ AuthInfo }}` element.\n\n- `GBT_CAR_KUBECTL_AUTHINFO_FG`\n\n  Foreground color of the `{{ AuthInfo }}` element.\n\n- `GBT_CAR_KUBECTL_AUTHINFO_FM`\n\n  Formatting of the `{{ AuthInfo }}` element.\n\n- `GBT_CAR_KUBECTL_AUTHINFO_TEXT`\n\n  Text content of the `{{ AuthInfo }}` element.\n\n- `GBT_CAR_KUBECTL_NAMESPACE_BG`\n\n  Background color of the `{{ Namespace }}` element.\n\n- `GBT_CAR_KUBECTL_NAMESPACE_FG`\n\n  Foreground color of the `{{ Namespace }}` element.\n\n- `GBT_CAR_KUBECTL_NAMESPACE_FM`\n\n  Formatting of the `{{ Namespace }}` element.\n\n- `GBT_CAR_KUBECTL_NAMESPACE_TEXT`\n\n  Text content of the `{{ Namespace }}` element.\n\n- `GBT_CAR_KUBECTL_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_KUBECTL_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_KUBECTL_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_KUBECTL_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_KUBECTL_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_KUBECTL_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Os` car\n\nCar that displays icon of the operating system.\n\n- `GBT_CAR_OS_BG='235'`\n\n  Background color of the car.\n\n- `GBT_CAR_OS_FG='white'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_OS_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_OS_FORMAT=' {{ Symbol }} '`\n\n  Format of the car.\n\n- `GBT_CAR_OS_SYMBOL_BG`\n\n  Background color of the `{{ Symbol }}` element.\n\n- `GBT_CAR_OS_SYMBOL_FG`\n\n  Foreground color of the `{{ Symbol }}` element.\n\n- `GBT_CAR_OS_SYMBOL_FM`\n\n  Formatting of the `{{ Symbol }}` element.\n\n- `GBT_CAR_OS_SYMBOL_TEXT`\n\n  Text content of the `{{ Symbol }}` element.\n\n- `GBT_CAR_OS_NAME`\n\n  The name of the symbol to display. Default value is selected by the system\n  the shell runs at. Possible names and their symbols are:\n\n  - `amzn` \n  - `android` \n  - `arch` \n  - `archarm` \n  - `centos` \n  - `cloud` \n  - `coreos` \n  - `darwin` \n  - `debian` \n  - `docker` \n  - `elementary` \n  - `fedora` \n  - `freebsd` \n  - `gentoo` \n  - `linux` \n  - `linuxmint` \n  - `mageia` \n  - `mandriva` \n  - `opensuse` \n  - `raspbian` \n  - `redhat` \n  - `sabayon` \n  - `slackware` \n  - `ubuntu` \n  - `windows` \n\n  Example:\n\n  ```shell\n  export GBT_CAR_OS_NAME='arch'\n  ```\n\n- `GBT_CAR_OS_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_OS_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_OS_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_OS_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_OS_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_OS_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `PyVirtEnv` car\n\nCar that displays Python Virtual Environment name. This car is displayed only\nif the Python Virtual Environment is activated. The activation script usually\nprepends the shell prompt by the Virtual Environment name by default. In order\nto disable it, the following environment variable must be set:\n\n```shell\nexport VIRTUAL_ENV_DISABLE_PROMPT='1'\n```\n\nVariables used by the car:\n\n- `GBT_CAR_PYVIRTENV_BG='222'`\n\n  Background color of the car.\n\n- `GBT_CAR_PYVIRTENV_FG='black'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_PYVIRTENV_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_PYVIRTENV_FORMAT=' {{ Icon }} {{ Name }} '`\n\n  Format of the car.\n\n- `GBT_CAR_PYVIRTENV_ICON_BG`\n\n  Background color of the `{{ Icon }}` element.\n\n- `GBT_CAR_PYVIRTENV_ICON_FG`\n\n  Foreground color of the `{{ Icon }}` element.\n\n- `GBT_CAR_PYVIRTENV_ICON_FM`\n\n  Formatting of the `{{ Icon }}` element.\n\n- `GBT_CAR_PYVIRTENV_ICON_TEXT`\n\n  Text content of the `{{ Icon }}` element.\n\n- `GBT_CAR_PYVIRTENV_NAME_BG`\n\n  Background color of the `{{ Name }}` element.\n\n- `GBT_CAR_PYVIRTENV_NAME_FG='33'`\n\n  Foreground color of the `{{ NAME }}` element.\n\n- `GBT_CAR_PYVIRTENV_NAME_FM`\n\n  Formatting of the `{{ Name }}` element.\n\n- `GBT_CAR_PYVIRTENV_NAME_TEXT`\n\n  The name of the Python Virtual Environment deducted from the `VIRTUAL_ENV`\n  environment variable.\n\n- `GBT_CAR_PYVIRTENV_DISPLAY`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_PYVIRTENV_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_PYVIRTENV_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_PYVIRTENV_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_PYVIRTENV_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_PYVIRTENV_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Sign` car\n\nCar that displays prompt character for the admin and user at the end of the\ntrain.\n\n- `GBT_CAR_SIGN_BG='default'`\n\n  Background color of the car.\n\n- `GBT_CAR_SIGN_FG='default'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_SIGN_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_SIGN_FORMAT=' {{ Symbol }} '`\n\n  Format of the car.\n\n- `GBT_CAR_SIGN_SYMBOL_BG`\n\n  Background color of the `{{ Symbol }}` element.\n\n- `GBT_CAR_SIGN_SYMBOL_FG`\n\n  Foreground color of the `{{ Symbol }}` element.\n\n- `GBT_CAR_SIGN_SYMBOL_FM='bold'`\n\n  Formatting of the `{{ Symbol }}` element.\n\n- `GBT_CAR_SIGN_SYMBOL_FORMAT`\n\n  Format of the `{{ Symbol }}` element. The format is either `{{ Admin }}` if\n  the UID is 0 or `{{ User }}` if the UID is not 0.\n\n- `GBT_CAR_SIGN_ADMIN_BG`\n\n  Background color of the `{{ Admin }}` element.\n\n- `GBT_CAR_SIGN_ADMIN_FG='red'`\n\n  Foreground color of the `{{ Admin }}` element.\n\n- `GBT_CAR_SIGN_ADMIN_FM`\n\n  Formatting of the `{{ Admin }}` element.\n\n- `GBT_CAR_SIGN_ADMIN_TEXT='#'`\n\n  Text content of the `{{ Admin }}` element.\n\n- `GBT_CAR_SIGN_USER_BG`\n\n  Background color of the `{{ User }}` element.\n\n- `GBT_CAR_SIGN_USER_FG='light_green'`\n\n  Foreground color of the `{{ User }}` element.\n\n- `GBT_CAR_SIGN_USER_FM`\n\n  Formatting of the `{{ User }}` element.\n\n- `GBT_CAR_SIGN_USER_TEXT='$'`\n\n  Text content of the `{{ User }}` element. The user name.\n\n- `GBT_CAR_SIGN_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_SIGN_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_SIGN_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_SIGN_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_SIGN_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_SIGN_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Status` car\n\nCar that visualizes return code of every command. By default, this car is\ndisplayed only when the return code is non-zero. If you want to display it even\nif the return code is zero, set the following variable:\n\n```shell\nexport GBT_CAR_STATUS_DISPLAY='1'\n```\n\nVariables used by the car:\n\n- `GBT_CAR_STATUS_BG`\n\n  Background color of the car. It's either `GBT_CAR_STATUS_OK_BG` if the last\n  command returned `0` return code otherwise the `GBT_CAR_STATUS_ERROR_BG` is\n  used.\n\n- `GBT_CAR_STATUS_FG='default'`\n\n  Foreground color of the car. It's either `GBT_CAR_STATUS_OK_FG` if the last\n  command returned `0` return code otherwise the `GBT_CAR_STATUS_ERROR_FG` is\n  used.\n\n- `GBT_CAR_STATUS_FM='none'`\n\n  Formatting of the car. It's either `GBT_CAR_STATUS_OK_FM` if the last command\n  returned `0` return code otherwise the `GBT_CAR_STATUS_ERROR_FM` is used.\n\n- `GBT_CAR_STATUS_FORMAT=' {{ Symbol }} '`\n\n  Format of the car. This can be changed to contain also the value of the\n  return code:\n\n  ```shell\n  export GBT_CAR_STATUS_FORMAT=' {{ Symbol }} {{ Code }} '\n  ```\n\n  or the signal name of the return code:\n\n  ```shell\n  export GBT_CAR_STATUS_FORMAT=' {{ Symbol }} {{ Signal }} '\n  ```\n\n  If you want to display the Status train even if there is no error, you have\n  to use the `{{ Details }}` element to prevent the `{{ Code }}` and/or\n  `{{ Signal }}` from being displayed:\n\n  ```shell\n  export GBT_CAR_STATUS_DISPLAY=1\n  export GBT_CAR_STATUS_FORMAT=' {{ Symbol }}{{ Details }} '\n  ```\n\n  Then you can modify the format of the `{{ Details }}` element like this for\n  when there is an error:\n\n  ```shell\n  export GBT_CAR_STATUS_DETAILS_FORMAT=' {{ Code }} {{ Signal }}'\n  ```\n\n- `GBT_CAR_STATUS_SYMBOL_BG`\n\n  Background color of the `{{ Symbol }}` element.\n\n- `GBT_CAR_STATUS_SYMBOL_FG`\n\n  Foreground color of the `{{ Symbol }}` element.\n\n- `GBT_CAR_STATUS_SYMBOL_FM='bold'`\n\n  Formatting of the `{{ Symbol }}` element.\n\n- `GBT_CAR_STATUS_SYMBOL_FORMAT`\n\n  Format of the `{{ Symbol }}` element. The format is either `{{ Error }}` if\n  the last command returned non zero return code otherwise `{{ User }}` is\n  used.\n\n- `GBT_CAR_STATUS_SIGNAL_BG`\n\n  Background color of the `{{ Signal }}` element.\n\n- `GBT_CAR_STATUS_SIGNAL_FG`\n\n  Foreground color of the `{{ Signal }}` element.\n\n- `GBT_CAR_STATUS_SIGNAL_FM`\n\n  Formatting color of the `{{ Signal }}` element.\n\n- `GBT_CAR_STATUS_SIGNAL_TEXT`\n\n  Text of the `{{ Signal }}` element.\n\n- `GBT_CAR_STATUS_CODE_BG='red'`\n\n  Background color of the `{{ Code }}` element.\n\n- `GBT_CAR_STATUS_CODE_FG='light_gray'`\n\n  Foreground color of the `{{ Code }}` element.\n\n- `GBT_CAR_STATUS_CODE_FM='none'`\n\n  Formatting of the `{{ Code }}` element.\n\n- `GBT_CAR_STATUS_CODE_TEXT`\n\n  Text content of the `{{ Code }}` element. The return code.\n\n- `GBT_CAR_STATUS_ERROR_BG='red'`\n\n  Background color of the `{{ Error }}` element.\n\n- `GBT_CAR_STATUS_ERROR_FG='light_gray'`\n\n  Foreground color of the `{{ Error }}` element.\n\n- `GBT_CAR_STATUS_ERROR_FM='none'`\n\n  Formatting of the `{{ Error }}` element.\n\n- `GBT_CAR_STATUS_ERROR_TEXT='✘'`\n\n  Text content of the `{{ Error }}` element.\n\n- `GBT_CAR_STATUS_OK_BG='green'`\n\n  Background color of the `{{ Ok }}` element.\n\n- `GBT_CAR_STATUS_OK_FG='light_gray'`\n\n  Foreground color of the `{{ Ok }}` element.\n\n- `GBT_CAR_STATUS_OK_FM='none'`\n\n  Formatting of the `{{ Ok }}` element.\n\n- `GBT_CAR_STATUS_OK_TEXT='✔'`\n\n  Text content of the `{{ Ok }}` element.\n\n- `GBT_CAR_STATUS_DISPLAY`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_STATUS_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_STATUS_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_STATUS_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_STATUS_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_STATUS_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\n#### `Time` car\n\nCar that displays current date and time.\n\n- `GBT_CAR_TIME_BG='light_blue'`\n\n  Background color of the car.\n\n- `GBT_CAR_TIME_FG='light_gray'`\n\n  Foreground color of the car.\n\n- `GBT_CAR_TIME_FM='none'`\n\n  Formatting of the car.\n\n- `GBT_CAR_TIME_FORMAT=' {{ DateTime }} '`\n\n  Format of the car.\n\n- `GBT_CAR_TIME_DATETIME_BG`\n\n  Background color of the `{{ DateTime }}` element.\n\n- `GBT_CAR_TIME_DATETIME_FG`\n\n  Foreground color of the `{{ DateTime }}` element.\n\n- `GBT_CAR_TIME_DATETIME_FM`\n\n  Formatting of the `{{ DateTime }}` element.\n\n- `GBT_CAR_TIME_DATETIME_FORMAT='{{ Date }} {{ Time }}'`\n\n  Format of the `{{ DateTime }}` element.\n\n- `GBT_CAR_TIME_DATE_BG`\n\n  Background color of the `{{ Date }}` element.\n\n- `GBT_CAR_TIME_DATE_FG`\n\n  Foreground color of the `{{ Date }}` element.\n\n- `GBT_CAR_TIME_DATE_FM`\n\n  Formatting of the `{{ Date }}` element.\n\n- `GBT_CAR_TIME_DATE_FORMAT='Mon 02 Jan'`\n\n  Format of the `{{ Date }}` element. The format is using placeholders as\n  described in the [`time.Format()`](https://golang.org/src/time/format.go#L87)\n  Go function. For example `January` is a placeholder for current full month\n  name and `PM` is a placeholder `AM` if the current time is before noon or\n  `PM` if the current time is after noon. So in order to display date in the\n  format of `YYYY-MM-DD`, the value of this variable should be `2006-01-02`.\n\n- `GBT_CAR_TIME_TIME_BG`\n\n  Background color of the `{{ Host }}` element.\n\n- `GBT_CAR_TIME_TIME_FG='light_yellow'`\n\n  Foreground color of the `{{ Host }}` element.\n\n- `GBT_CAR_TIME_TIME_FM`\n\n  Formatting of the `{{ Host }}` element.\n\n- `GBT_CAR_TIME_TIME_FORMAT='15:04:05'`\n\n  Text content of the `{{ Host }}` element. The format principles are the same\n  like in the case of the `GBT_CAR_TIME_DATE_FORMAT` variable above. So in\n  order to display time in the 12h format, the value of this variable should be\n  `03:04:05 PM`.\n\n- `GBT_CAR_TIME_DISPLAY='1'`\n\n  Whether to display this car if it's in the list of cars (`GBT_CARS`).\n\n- `GBT_CAR_TIME_WRAP='0'`\n\n  Whether to wrap the prompt line in front of this car.\n\n- `GBT_CAR_TIME_SEP_TEXT`\n\n  Text content of the separator for this car.\n\n- `GBT_CAR_TIME_SEP_BG`\n\n  Background color of the separator for this car.\n\n- `GBT_CAR_TIME_SEP_FG`\n\n  Foreground color of the separator for this car.\n\n- `GBT_CAR_TIME_SEP_FM`\n\n  Formatting of the separator for this car.\n\n\nBenchmark\n---------\n\nBenchmark of GBT can be done by faking the output of GBT by a testing script\nwhich executes as minimum of commands as possible. For simplicity, the test will\nproduce output of the Git car only and will be done from within a directory with\na Git repository.\n\nThe testing script is using exactly the same commands like GBT to determine the\nGit branch, whether the Git repository contains any change and whether it's\nahead/behind of the remote branch. The script has the following content and is\nstored in `/tmp/test.sh`:\n\n```shell\nBRANCH=\"$(git symbolic-ref HEAD)\"\n[ -z \"$(git status --porcelain)\" ] \u0026\u0026 DIRTY_ICON='%{\\e[38;5;2m%}✔' || DIRTY_ICON='%{\\e[38;5;1m%}✘'\n[[ \"$(git rev-list --count HEAD..@{upstream})\" == '0' ]] \u0026\u0026 AHEAD_ICON='' || AHEAD_ICON=' ⬆'\n[[ \"$(git rev-list --count @{upstream}..HEAD)\" == '0' ]] \u0026\u0026 BEHIND_ICON='' || BEHIND_ICON=' ⬇'\n\necho -en \"%{\\e[0m%}%{\\e[48;5;7m%}%{\\e[38;5;0m%} %{\\e[48;5;7m%}%{\\e[38;5;0m%}%{\\e[48;5;7m%}%{\\e[38;5;0m%} %{\\e[48;5;7m%}%{\\e[38;5;0m%}${BRANCH##*/}%{\\e[48;5;7m%}%{\\e[38;5;0m%} %{\\e[48;5;7m%}%{\\e[38;5;0m%}%{\\e[48;5;7m%}$DIRTY_ICON%{\\e[48;5;7m%}%{\\e[38;5;0m%}%{\\e[48;5;7m%}%{\\e[38;5;0m%}%{\\e[48;5;7m%}%{\\e[38;5;0m%}$AHEAD_ICON%{\\e[48;5;7m%}%{\\e[38;5;0m%}%{\\e[48;5;7m%}%{\\e[38;5;0m%}$BEHIND_ICON%{\\e[48;5;7m%}%{\\e[38;5;0m%} %{\\e[0m%}\"\n```\n\nThe testing script produces the same output like GBT when run by Bash or ZSH:\n\n```shell\nbash /tmp/test.sh \u003e /tmp/a\nzsh /tmp/test.sh \u003e /tmp/b\nGBT_SHELL='zsh' GBT_CARS='Git' gbt \u003e /tmp/c\ndiff /tmp/{a,b}\ndiff /tmp/{b,c}\n```\n\nWe will use ZSH to run 10 measurements of 100 executions of the testing script\nby Bash and ZSH as well as of GBT itself.\n\n```shell\n# Execution of the testing script by Bash\nfor N in $(seq 10); do time (for M in $(seq 100); do bash /tmp/test.sh 1\u003e/dev/null 2\u003e\u00261; done;) done 2\u003e\u00261 | sed 's/.*  //'\n0.95s user 1.05s system 102% cpu 1.944 total\n0.94s user 1.06s system 102% cpu 1.944 total\n0.93s user 1.05s system 102% cpu 1.930 total\n0.91s user 1.10s system 102% cpu 1.954 total\n0.92s user 1.07s system 102% cpu 1.933 total\n0.97s user 1.03s system 102% cpu 1.943 total\n0.92s user 1.07s system 102% cpu 1.931 total\n0.92s user 1.08s system 102% cpu 1.949 total\n0.89s user 1.11s system 102% cpu 1.938 total\n0.93s user 1.07s system 102% cpu 1.944 total\n# Execution of the testing script by ZSH\nfor N in $(seq 10); do time (for M in $(seq 100); do zsh /tmp/test.sh 1\u003e/dev/null 2\u003e\u00261; done;) done 2\u003e\u00261 | sed 's/.*  //'\n0.89s user 1.08s system 103% cpu 1.909 total\n0.82s user 1.15s system 103% cpu 1.906 total\n0.82s user 1.15s system 103% cpu 1.903 total\n0.84s user 1.13s system 103% cpu 1.907 total\n0.88s user 1.10s system 103% cpu 1.915 total\n0.88s user 1.09s system 103% cpu 1.907 total\n0.84s user 1.14s system 103% cpu 1.919 total\n0.85s user 1.11s system 103% cpu 1.901 total\n0.89s user 1.08s system 103% cpu 1.914 total\n0.96s user 1.01s system 103% cpu 1.908 total\n# Execution of GBT\nfor N in $(seq 10); do time (for M in $(seq 100); do GBT_SHELL='zsh' GBT_CARS='Git' gbt 1\u003e/dev/null 2\u003e\u00261; done;) done 2\u003e\u00261 | sed 's/.*  //'\n1.03s user 1.19s system 115% cpu 1.922 total\n0.98s user 1.18s system 115% cpu 1.874 total\n1.06s user 1.11s system 115% cpu 1.880 total\n1.02s user 1.14s system 115% cpu 1.867 total\n1.04s user 1.17s system 115% cpu 1.918 total\n1.05s user 1.10s system 115% cpu 1.853 total\n1.07s user 1.11s system 115% cpu 1.895 total\n1.01s user 1.18s system 115% cpu 1.903 total\n1.08s user 1.03s system 115% cpu 1.825 total\n1.05s user 1.09s system 115% cpu 1.844 total\n```\n\nFrom the above is visible that GBT performs faster than Bash and ZSH even if the\ntesting script was as simple as possible. You can also notice that GBT was using\nmore CPU than Bash or ZSH. That's probably because of the built-in concurrency\nsupport in Go.\n\n\nPrompt forwarding\n-----------------\n\nIn order to enjoy GBT prompt via SSH but also in Docker, Kubectl, Vagrant, MySQL\nor in Screen without the need to install GBT everywhere, you can use GBTS (GBT\nwritten in Shell). GBTS is a set of scripts which get forwarded to applications\nand remote connections and then executed to generate the nice looking prompt.\n\nYou can start using it by doing the following:\n\n```shell\nexport GBT__HOME='/usr/share/gbt'\nsource $GBT__HOME/sources/gbts/cmd/local.sh\n```\n\nThis will automatically create command line aliases for all enabled plugins (by\ndefault `docker`, `gssh`, `kubectl`, `mysql`, `screen`, `ssh`, `su`, `sudo` and\n`vagrant`). Then just SSH to some remote server or enter some Docker container\n(even via `kubectl`) or Vagrant box and you should get GBT prompt there.\n\nIf you want to have some of the default aliase available only on the remote\nsite, just un-alias them locally:\n\n```shell\nunalias sudo su\n```\n\nYou can also forward your own aliases which will be then available on any remote\nsite. For example to have `alias ll='ls -l'` on any remote site, just create the\nfollowing alias and it will be automatically forwarded:\n\n```shell\nalias gbt___ll='ls -l'\n```\n\nThe idea behind prompt forwarding is coming from Vladimir Babichev\n(@[mrdrup](https://github.com/mrdrup)) who was using it for several years\nbefore GBT even existed. After seeing the potential of GBT, he sparked the\nimplementation of prompt forwarding into GBT which later turned into GBTS.\n\n\n### Principle\n\nPrinciple of GBTS is to pass the GBTS scripts to the application and then execute\nthem. This is done by concatting all the GBTS scripts into one file and encoding\nit by Base64 algorithm. Such string, together with few more commands, is then\nused as an argument of the application which makes it to store it on the remote\nsite in the `/tmp/.gbt.\u003cNUM\u003e` file. The same we create the `/tmp/.gbt.\u003cNUM\u003e.bash`\nscript which is then used as a replacement of the real shell on the remote site.\nFor SSH it would look like this:\n\n```shell\nssh -t myserver \"export GBT__CONF='$GBT__CONF' \u0026\u0026 echo '\u003cBASE64_ENCODED_STRING\u003e' | base64 -d \u003e \\$GBT__CONF \u0026\u0026 bash --rcfile \\$GBT__CONF\"\n```\n\nIn order to make all this invisible, we wrap that command into a function (e.g.\n`gbt_ssh`) and assign it to an `alias` of the same name like the original\napplication (e.g. `ssh`):\n\n```shell\nalias ssh='gbt_ssh'\n```\n\nThe same or very similar principle applies to other supported commands like\n`docker`, `gssh` ([GCP\nSSH](https://cloud.google.com/sdk/gcloud/reference/compute/ssh)), `kubectl`,\n`mysql`, `screen`, `su`, `sudo` and `vagrant`.\n\n\n### Additional settings\n\nGBTS has few settings which can be used to influence its behaviour. See the\ndetails [here](https://github.com/jtyr/gbt/tree/master/sources/gbts/README.md).\n\n\n### MacOS users\n\nTo make GBTS working correctly between Linux and MacOS and vice versa requires a\nlittle bit of fiddling. The reason is that the basic command line tools like\n`date` and `base64` are very old on MacOS and mostly incompatible with the Linux\nworld. Some tools are even called differently (e.g. `md5sum` is called `md5`).\n\nTherefore if you want to make the remote script verification working (make sure\nnobody changed the remote script while using it), the following variables must be\nset:\n\n```shell\n# Use 'md5' command instead of 'md5sum'\nexport GBT__SOURCE_MD5_LOCAL='md5'\n# Cut the 4th field from the output of 'md5'\nexport GBT__SOURCE_MD5_CUT_LOCAL='4'\n```\n\nIf you don't want to use this feature, you can disable it in which case the above\nvariables won't be required:\n\n```shell\nexport GBT__SOURCE_SEC_DISABLE=1\n```\n\nWhen using the `ExecTime` car, the following variable must be set:\n\n```shell\n# Don't use nanoseconds in the 'ExecTime' car\nexport GBT__SOURCE_DATE_ARG='+%s'\n```\n\nFor maximum compatibility with GBT, it's recommended to install GNU `coreutils`\n(`brew install coreutils`) and instead of the variable above use these:\n\n```shell\n# Use 'gdate' instead of 'date'\nexport GBT__SOURCE_DATE='gdate'\n# Use 'gdate' instead of 'date' (only if you run GBT on a Mac)\nexport GBT__SOURCE_BASE64_LOCAL='gbase64'\n# Use 'gdate' instead of 'date' (only if you are connection to Mac via SSH)\nexport GBT__SOURCE_BASE64='gbase64'\n```\n\nWhen connecting to MacOS from Linux using `gbt_ssh` and not using `gbase64` on\nMacOS, the following variable must be set on Linux to make the Base64 decoding\nworking on MacOS:\n\n```shell\n# Use 'base64 -D' to decode Base64 encoded text\nexport GBT__SOURCE_BASE64_DEC='-D'\n```\n\n\n### Limitations\n\n- Requires Bash v4.x to run.\n- The [color representation](https://bugs.mysql.com/79755) and [support of\n  unicode characters](https://bugs.mysql.com/89359) for MySQL is broken in MySQL\n  5.6 and above. But it works just fine in all versions of Percona and MariaDB.\n- Plugins `su` and `sudo` are not supported on MacOS.\n\n\nTODO\n----\n\nContribution to the following is more than welcome:\n\n- Optimize generated escape sequence\n    - Don't decorate empty string\n    - Don't decorate child element with the same attributes used by the parent\n- Implement templating language to allow more dynamic configuration\n    - Jinja2-like syntax\n    - Should be able to refer variables from the local car\n        - `GBT_CAR_GIT_BG=\"{% 'red' if Status == '{{ StatusDirty }}' else 'light_gray' %}\"`\n    - Should be able to refer ENV variables (e.g. `env('HOME')`)\n    - Could be able to refer variables from another car\n    - Advanced functionality via pipes (e.g. `\u003cexpr\u003e | substr(1,3)`)\n- Add support for GBT [plugins](https://golang.org/pkg/plugin/)\n    - Load plugins with `GBT_PLUGINS='mycar1:/path/to/mycar1.so;mycar2:/path/to/mycar2.so'`\n    - Load the plugin, read the `Car` symbol and assign the reference to the\n      `mycar1` in the `carsFactory`\n- Implement Vim statusline using GBT as the generator\n- Implement Tmux statusline using GBT as the generator\n- Add weather car\n    - Using Yahoo Weather API\n    - Needs to cache the results in a file and refresh only if its timestamp is\n      older than certain time. Or perhaps store the last update in env var?\n- Add more themes\n\n\nAuthor\n------\n\nJiri Tyr\n\n\nLicense\n-------\n\nMIT\n","funding_links":[],"categories":["Themes","Go"],"sub_categories":["ZSH on Windows"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtyr%2Fgbt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtyr%2Fgbt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtyr%2Fgbt/lists"}