bullet-train.zsh

:bullettrain_side: An oh-my-zsh shell theme based on the Powerline Vim plugin

Github stars Tracking Chart

Bullet Train for oh-my-zsh

Bullet Train is a oh-my-zsh shell
theme based on the
Powerline Vim plugin. It aims for
simplicity, showing information only when it's relevant.

It currently shows:

  • Current Python virtualenv; when using Pyenv and no active virtualenv shows the current Python version the shell uses
  • Current Ruby version using chruby; version and gemset when on RVM or Rbenv
  • Current Node.js version, through NVM (if present) or Node.js
  • Current Perl version using plenv
  • Current Elixir version
  • Git status
  • Timestamp
  • Current directory
  • Background jobs
  • Exit code of last command

If you want add some new feature, of fix some bug, open an issue and lets hack
together.

For a tmux theme to work with it, I suggest Maglev.

Preview

Preview

Requirements

In order to use the theme, you will first need:

  • Powerline compatible fonts like Vim Powerline patched fonts, Input Mono or Monoid.
  • On Ubuntu like systems you'll need the ttf-ancient-fonts package to correctly display some unicode symbols that are not covered by the Powerline fonts above.
  • A ZSH framework like antigen, oh-my-zsh or zgen
  • Make sure terminal is using 256-colors mode with export TERM="xterm-256color"
  • For iTerm 2 users, make sure you go into your settings and set both the regular font and the non-ascii font to powerline compatible fonts or the prompt separators and special characters will not display correctly.

Installing

For oh-my-zsh users

  1. Download the theme here

  2. Put the file bullet-train.zsh-theme in $ZSH_CUSTOM/themes/

  3. Configure the theme in your ~/.zshrc file:

ZSH_THEME="bullet-train"

For antigen users

Add the following snippet to your .zshrc somewhere after the line
antigen use oh-my-zsh.

antigen theme https://github.com/caiogondim/bullet-train-oh-my-zsh-theme bullet-train

For Zgen users

If you're using zgen, add the following line to your ~/.zshrc where you're adding your other zsh plugins after the line zgen oh-my-zsh.

zgen load caiogondim/bullet-train-oh-my-zsh-theme bullet-train

For Zplug users

If you're using zplug, add the following line
to your ~/.zshrc where you're adding your other zsh plugins.

setopt prompt_subst # Make sure prompt is able to be generated properly.
zplug "caiogondim/bullet-train.zsh", use:bullet-train.zsh-theme, defer:3 # defer until other plugins like oh-my-zsh is loaded

Options

Bullet Train is configurable. You can change colors and which segments you want
or don't want to see. All options must be overridden in your .zshrc file.

Order

BULLETTRAIN_PROMPT_ORDER defines order of prompt segments. Use zsh array
syntax to specify your own order, e.g:

BULLETTRAIN_PROMPT_ORDER=(
  git
  context
  dir
  time
)

NOTE: You do not need to specify end segment - it will be added automatically. With this you can also specify custom segments.

Prompt, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_PROMPT_CHAR, \$, Character to be show before any command, BULLETTRAIN_PROMPT_ROOT, true, Highlight if running as root, BULLETTRAIN_PROMPT_SEPARATE_LINE, true, Make the prompt span across two lines, BULLETTRAIN_PROMPT_ADD_NEWLINE, true, Adds a newline character before each prompt line

Status, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_STATUS_EXIT_SHOW, false, Show/hide exit code of last command, BULLETTRAIN_STATUS_BG, green, Background color, BULLETTRAIN_STATUS_ERROR_BG, red, Background color of segment when last command exited with an error, BULLETTRAIN_STATUS_FG, black, Foreground color

Time, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_TIME_12HR, false, Format time using 12-hour clock (am/pm), BULLETTRAIN_TIME_BG, white, Background color, BULLETTRAIN_TIME_FG, black, Foreground color

Custom, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_CUSTOM_MSG, false, Free segment you can put a custom message which will be eval'ed for every prompt, BULLETTRAIN_CUSTOM_BG, black, Background color, BULLETTRAIN_CUSTOM_FG, default, Foreground color

Context, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_CONTEXT_BG, black, Background color, BULLETTRAIN_CONTEXT_FG, default, Foreground color, BULLETTRAIN_CONTEXT_DEFAULT_USER, none, Default user. If you are running with other user other than default, the segment will be showed., BULLETTRAIN_CONTEXT_HOSTNAME, %m, Hostname. Set %M to display the full qualified domain name., BULLETTRAIN_IS_SSH_CLIENT, none, If true, the segment will be showed.

Python virtualenv (+Pyenv), Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_VIRTUALENV_BG, yellow, Background color, BULLETTRAIN_VIRTUALENV_FG, white, Foreground color, BULLETTRAIN_VIRTUALENV_PREFIX, ?, Prefix of the segment

node.js nvm, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_NVM_BG, green, Background color, BULLETTRAIN_NVM_FG, white, Foreground color, BULLETTRAIN_NVM_PREFIX, "⬡ ", Prefix of the segment

Ruby RVM/Rbenv, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_RUBY_BG, magenta, Background color, BULLETTRAIN_RUBY_FG, white, Foreground color, BULLETTRAIN_RUBY_PREFIX, "♦", Prefix of the segment

Elixir, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_ELIXIR_BG, magenta, Background color, BULLETTRAIN_ELIXIR_FG, white, Foreground color, BULLETTRAIN_ELIXIR_PREFIX, "?", Prefix of the segment

Go, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_GO_BG, green, Background color, BULLETTRAIN_GO_FG, white, Foreground color, BULLETTRAIN_GO_PREFIX, go, Prefix of the segment

Kubernetes Context, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_KCTX_BG, yellow, Background color, BULLETTRAIN_KCTX_FG, white, Foreground color, BULLETTRAIN_KCTX_PREFIX, , Kubernetes prefix of the segment, BULLETTRAIN_KCTX_KUBECTL, true, If false disable kubectl usage, BULLETTRAIN_KCTX_NAMESPACE, true, If false will not show the default namespace. Namespace is only visible if kubectl is installed, BULLETTRAIN_KCTX_KCONFIG, ${HOME}/.kube/config, Location of kube config file (e.g. /Users/Hugo/.kube/config)

The prompt will first check if BULLETTRAIN_KCTX_KUBECTL=true and kubectl is installed than it will use kubectl config view --minify to determine the context and default namespace in use.
If BULLETTRAIN_KCTX_KUBECTL=false or kubectl is not installed, BULLETTRAIN_KCTX_KCONFIG will be parsed to get the current context.

The usage of kubectl allow the prompt to get the default namespace even if you are using multiple kube config files (e.g. KUBECONFIG=~/.kube/config:path-to-config1:path-to-config2)

AWS Profile

Displays which AWS (Amazon Web Services) credentials profile is currently set.
This environment var is used by aws-cli and other tools to use the right access keys and other parameters., Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_AWS_BG, yellow, Background color, BULLETTRAIN_AWS_FG, black, Foreground color, BULLETTRAIN_AWS_PREFIX, ☁️, Prefix of the segment

Perl, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_PERL_BG, yellow, Background color, BULLETTRAIN_PERL_FG, black, Foreground color, BULLETTRAIN_PERL_PREFIX, ?, Prefix of the segment

Dir, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_DIR_BG, blue, Background color, BULLETTRAIN_DIR_FG, white, Foreground color, BULLETTRAIN_DIR_CONTEXT_SHOW, false, Show user and machine in an SCP formatted style, BULLETTRAIN_DIR_EXTENDED, 1, Extended path (0=short path, 1=medium path, 2=complete path, everything else=medium path)

Git, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_GIT_COLORIZE_DIRTY, false, Set BULLETTRAIN_GIT_BG to BULLETTRAIN_GIT_COLORIZE_DIRTY_COLOR in dirty state, BULLETTRAIN_GIT_COLORIZE_DIRTY_BG_COLOR, yellow, BULLETTRAIN_GIT_BG in dirty state, BULLETTRAIN_GIT_COLORIZE_DIRTY_FG_COLOR, black, BULLETTRAIN_GIT_FG in dirty state, BULLETTRAIN_GIT_BG, white, Background color, BULLETTRAIN_GIT_FG, black, Foreground color, BULLETTRAIN_GIT_PROMPT_CMD, git_prompt_info, Function to display details about your git segment., BULLETTRAIN_GIT_EXTENDED, true, BULLETTRAIN_GIT_PREFIX, "", Prefix, BULLETTRAIN_GIT_SUFFIX, "", Suffix, BULLETTRAIN_GIT_DIRTY, "✘", Icon for dirty state, BULLETTRAIN_GIT_CLEAN, "✔", Icon for clean state, BULLETTRAIN_GIT_ADDED, "%F{green}✚%F{black}", Icon for added files on stage, BULLETTRAIN_GIT_MODIFIED, "%F{blue}✹%F{black}", Icon for modified files, BULLETTRAIN_GIT_DELETED, "%F{red}✖%F{black}", Icon for delete files on stage, BULLETTRAIN_GIT_UNTRACKED, "%F{yellow}✭%F{black}", Icon for untracked files, BULLETTRAIN_GIT_RENAMED, "➜", Icon for renamed, BULLETTRAIN_GIT_UNMERGED, "═", Icon for unmerged state, BULLETTRAIN_GIT_AHEAD, " ⬆", Icon for ahead state from remote, BULLETTRAIN_GIT_BEHIND, " ⬇", Icon for behind state from remote, BULLETTRAIN_GIT_DIVERGED, " ⬍", Icon for diverged state from remote

The git prompt can be disabled for a specific repository by setting a git config flag: git config oh-my-zsh.hide-status 1. This is useful to avoid performance issues for particularly huge repositories.

Screen, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_SCREEN_BG, white, Background color, BULLETTRAIN_SCREEN_FG, black, Foreground color, BULLETTRAIN_SCREEN_PREFIX, , Prefix of the segment

Mercurial/HG, Variable, Default, Meaning, --------, -------, -------, ### Command execution time, Variable, Default, Meaning, --------, -------, -------, BULLETTRAIN_EXEC_TIME_ELAPSED, 5, Minimum elapsed time of command execution. If the execution time of a command is smaller than this, the segment will be hidden., BULLETTRAIN_EXEC_TIME_BG, yellow, Background color, BULLETTRAIN_EXEC_TIME_FG, black, Foreground color

Wiki

Contributors

That project was originally a fork from
Powerline, but
most of the code was later erased and its now more closely related to
Agnoster. Below is a git summary
of the project:

156	Caio Gondim
 33	Jérémy Romey
 14	Greg Fitzgerald
  8	Dan Kaplun
  8	Viktor (Icon) VAD
  7	Jocelyn Mallon
  7	Dawid Kurek
  6	Joe Block
  6	Jérémy Romey
  5	Arthur Wang
  4	Flavius Aspra
  3	Mario Zigliotto
  3	Michael Robinson
  3	Michael Cornell
  3	Iulian Onofrei
  2	itsZero (Chien-An Cho)
  2	Daniel Loader
  2	Charlie Smith
  2	wujtruj
  2	Jiri Tyr
  1	Sébastien Bordenave
  1	Yongqian Li
  1	alysson
  1	gvillalta99
  1	illuminatis
  1	krischer
  1	m.kuehn
  1	timfeirg
  1	Adrien Brault
  1	yachi
  1	Andreas Galauner
  1	Dale Davis
  1	Fabio Poloni
  1	Faure Hu
  1	Guillaume BINET
  1	Hannes Frank
  1	Heng-Yi Wu
  1	Jack Chu
  1	Jason Hollis
  1	KVoll
  1	Kevin
  1	Lyncredible
  1	Manuel Hoffmann
  1	Marius Krämer
  1	Maxime Bruguet
  1	Mertcan Mermerkaya
  1	Nicholas
  1	Peter Nagy
  1	Sen Jiang

Credits

This theme is highly inspired by the following themes:

Donating

If you found this project useful and are willing to donate, transfer some
bitcoins to 1BqqKiZA8Tq43CdukdBEwCdDD42jxuX9UY or through the
URL https://www.coinbase.com/caiogondim

Or via PayPal.me https://www.paypal.me/caiogondim.


caiogondim.com  · 
GitHub @caiogondim  · 
Twitter @caio_gondim

Main metrics

Overview
Name With Ownercaiogondim/bullet-train.zsh
Primary LanguageMakefile
Program languageMakefile (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2014-07-05 21:58:03
Pushed At2024-07-29 11:38:47
Last Commit At2019-09-17 17:07:22
Release Count4
Last Release Namev0.0.5 (Posted on 2014-12-01 18:28:45)
First Release Namev0.0.1 (Posted on 2014-07-18 16:03:39)
用户参与
Stargazers Count2.8k
Watchers Count44
Fork Count384
Commits Count358
Has Issues Enabled
Issues Count161
Issue Open Count50
Pull Requests Count88
Pull Requests Open Count43
Pull Requests Close Count60
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private