An asynchronous zsh prompt
alien theme is faster than a lot other themes.
Why? It updates part of the prompt asyncronously - the time consuming processings like git status checking, git dirty copy checking etc.
How? It starts a background job for these process, and in the mean time draws initial prompt and lets you use the terminal as you would normally.
alien theme is independent of any library like Oh-My-Zsh or Prezto. Whatever it needs already included inside. The only exception is font. You need to install the powerline patched fonts to properly display the prompt.
Add the following line to your .zshrc
depending on your zsh plugin manager
antigen theme eendroroy/alien alien
zgen load eendroroy/alien
zplug "eendroroy/alien"
git clone https://github.com/eendroroy/alien.git
cd alien
git submodule update --init --recursive --remote
Add the following line to your ~/.zshrc
source ~/alien/alien.zsh
add all configurations before plugin definitions (or sourcing the theme)
To define the order of sections to display:
export ALIEN_SECTIONS_LEFT=(
exit
battery
user
path
newline
ssh
venv
prompt
)
export ALIEN_SECTIONS_RIGHT=(
time
)
To define if sections are to be loaded asyncronously add :async
to the section-name:
export ALIEN_SECTIONS_LEFT=(
exit
battery
user
path
vcs_branch:async
vcs_status:async
vcs_dirty:async
newline
ssh
venv
prompt
)
To change the section-separator:
export ALIEN_SECTIONS_LEFT_SEP_SYM=
export ALIEN_SECTIONS_RIGHT_SEP_SYM=
prompt
-sectionTo change the symbol of the input-prompt:
export ALIEN_PROMPT_SYM=
To change colors:
export ALIEN_PROMPT_FG=100
exit
-sectionTo disable the numeric exit-code:
export ALIEN_SECTION_EXIT_CODE=0
To change colors:
export ALIEN_SECTION_EXIT_FG=100
export ALIEN_SECTION_EXIT_BG=150
export ALIEN_SECTION_EXIT_BG_ERROR=200
time
-sectionTo change the format::
export ALIEN_SECTION_TIME_FORMAT=%H:%M:%S # default is %r
To change colors:
export ALIEN_SECTION_TIME_FG=100
export ALIEN_SECTION_TIME_BG=150
battery
-sectionTo change colors:
export ALIEN_SECTION_BATTERY_FG=100
export ALIEN_SECTION_BATTERY_BG=150
user
-sectionTo show the hostname:
export ALIEN_SECTION_USER_HOST=1
To change colors:
export ALIEN_SECTION_USER_FG=100
export ALIEN_SECTION_USER_BG=150
path
-sectionTo change the number of path-components to display:
export ALIEN_SECTION_PATH_COMPONENTS=2
To change colors:
export ALIEN_SECTION_PATH_FG=100
export ALIEN_SECTION_PATH_BG=150
vcs_branch
-sectionTo change colors:
export ALIEN_SECTION_VCS_BRANCH_FG=100
export ALIEN_SECTION_VCS_BRANCH_BG=150
vcs_status
-sectionTo change colors:
export ALIEN_SECTION_VCS_STATUS_FG=100
export ALIEN_SECTION_VCS_STATUS_BG=150
vcs_dirty
-sectionTo change colors:
export ALIEN_SECTION_VCS_DIRTY_FG=100
export ALIEN_SECTION_VCS_DIRTY_BG=150
versions
-sectionDefine versions to show:
export ALIEN_VERSIONS_PROMPT='PYTHON_S RUBY_S NODE_S'
Supported versions:
PYTHON
PYTHON_S
RUBY
RUBY_S
JAVA
JAVA_S
GO
GO_S
ELIXIR
ELIXIR_S
CRYSTAL
CRYSTAL_S
NODE
NODE_S
PHP
PHP_S
you can chose from 6 different color schemes (blue is the default)
in ~/.zshrc just add any from the following three lines before your antigen theme ...
line
export ALIEN_THEME="blue"
export ALIEN_THEME="green"
export ALIEN_THEME="red"
export ALIEN_THEME="soft"
export ALIEN_THEME="gruvbox"
export ALIEN_THEME="bnw"
Custom Color
ALIEN_PROMPT_FG=87
ALIEN_SECTION_EXIT_FG=0
ALIEN_SECTION_EXIT_BG=87
ALIEN_SECTION_EXIT_BG_ERROR=202
ALIEN_SECTION_TIME_FG=0
ALIEN_SECTION_TIME_BG=193
ALIEN_SECTION_BATTERY_FG=0
ALIEN_SECTION_BATTERY_BG=193
ALIEN_SECTION_USER_FG=0
ALIEN_SECTION_USER_BG=87
ALIEN_SECTION_PATH_FG=0
ALIEN_SECTION_PATH_BG=45
ALIEN_SECTION_VCS_BRANCH_FG=87
ALIEN_SECTION_VCS_BRANCH_BG=238
ALIEN_SECTION_VCS_STATUS_FG=87
ALIEN_SECTION_VCS_STATUS_BG=238
ALIEN_SECTION_VCS_DIRTY_FG=87
ALIEN_SECTION_VCS_DIRTY_BG=238
ALIEN_SECTION_SSH_FG=238
ALIEN_SECTION_VENV_FG=238
ALIEN_GIT_TRACKED_COLOR=193
ALIEN_GIT_UN_TRACKED_COLOR=87
ALIEN_SECTION_VERSION_BG=237
ALIEN_PYTHON_COLOR=40
ALIEN_RUBY_COLOR=196
ALIEN_JAVA_COLOR=178
ALIEN_GO_COLOR=81
ALIEN_ELIXIR_COLOR=99
ALIEN_CRYSTAL_COLOR=8
ALIEN_NODE_COLOR=41
ALIEN_PHP_COLOR=57
Or creating a new theme file:
/path/to/custom/theme.zsh
#!/usr/bin/env zsh
alien_theme(){
ALIEN_PROMPT_FG=87
ALIEN_SECTION_EXIT_FG=0
ALIEN_SECTION_EXIT_BG=87
ALIEN_SECTION_EXIT_BG_ERROR=202
ALIEN_SECTION_TIME_FG=0
ALIEN_SECTION_TIME_BG=193
ALIEN_SECTION_BATTERY_FG=0
ALIEN_SECTION_BATTERY_BG=193
ALIEN_SECTION_USER_FG=0
ALIEN_SECTION_USER_BG=87
ALIEN_SECTION_PATH_FG=0
ALIEN_SECTION_PATH_BG=45
ALIEN_SECTION_VCS_BRANCH_FG=87
ALIEN_SECTION_VCS_BRANCH_BG=238
ALIEN_SECTION_VCS_STATUS_FG=87
ALIEN_SECTION_VCS_STATUS_BG=238
ALIEN_SECTION_VCS_DIRTY_FG=87
ALIEN_SECTION_VCS_DIRTY_BG=238
ALIEN_SECTION_SSH_FG=238
ALIEN_SECTION_VENV_FG=238
ALIEN_GIT_TRACKED_COLOR=193
ALIEN_GIT_UN_TRACKED_COLOR=87
ALIEN_SECTION_VERSION_BG=237
ALIEN_PYTHON_COLOR=40
ALIEN_RUBY_COLOR=196
ALIEN_JAVA_COLOR=178
ALIEN_GO_COLOR=81
ALIEN_ELIXIR_COLOR=99
ALIEN_CRYSTAL_COLOR=8
ALIEN_NODE_COLOR=41
ALIEN_PHP_COLOR=57
}
Then activate the theme using:
export ALIEN_CUSTOM_THEME_PATH=/path/to/custom/theme.zsh
export ALIEN_KEEP_PROMPT=1
This will keep previous prompt while new prompt is being rendered.
Enable Nerd Font
export ALIEN_USE_NERD_FONT=1
*Note: Nerd fonts*
export ALIEN_GIT_STASH_SYM=@
export ALIEN_GIT_SYM=G
export ALIEN_HG_SYM=H
export ALIEN_SVN_SYM=S
export ALIEN_BRANCH_SYM=
export ALIEN_GIT_ADD_SYM=+
export ALIEN_GIT_DEL_SYM=-
export ALIEN_GIT_MOD_SYM=⭑
export ALIEN_GIT_NEW_SYM=?
export ALIEN_GIT_PUSH_SYM=↑
export ALIEN_GIT_PULL_SYM=↓
export ALIEN_JAVA_SYM='JAVA:'
export ALIEN_PY_SYM='PY:'
export ALIEN_RB_SYM='RB:'
export ALIEN_GO_SYM='GO:'
export ALIEN_ELIXIR_SYM='EX:'
export ALIEN_CRYSTAL_SYM='CR:'
export ALIEN_NODE_SYM='⬡ '
export ALIEN_PHP_SYM='PHP:'
Note: this overrides ALIEN_USE_NERD_FONT
configuration.
Bug reports and pull requests are welcome on GitHub at alien repository. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)The project is available as open source under the terms of the MIT License.