Skip to content

eendroroy/alien-minimal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Oct 27, 2024
c185925 · Oct 27, 2024
Oct 22, 2024
Sep 30, 2024
Sep 30, 2024
Oct 22, 2024
Aug 30, 2019
Sep 30, 2024
Sep 30, 2024
Sep 30, 2024
Sep 30, 2024
May 25, 2017
Oct 24, 2024
May 25, 2017
Sep 30, 2024

Repository files navigation

alien-minimal

alien-minimal theme is faster than many other themes.

Why? It updates part of the prompt asynchronously – the time-consuming processing like git status checking, git dirty copy checking and so on

How? It starts a background job for these processes, and in the meantime shows initial prompt and lets you use the terminal as you would normally.

alien-minimal is independent of any library/framework like Oh-My-Zsh or Prezto.

Installation

Add the following line in ~/.zshrc depending on zsh plugin manager

antigen theme eendroroy/alien-minimal alien-minimal
zgen load eendroroy/alien-minimal
zplug "eendroroy/alien-minimal"
# if using git 2.13 or higher
git clone --recurse-submodules https://github.com/eendroroy/alien-minimal.git ${ZSH_CUSTOM}/themes/alien-minimal

# if lower version use
cd ${ZSH_CUSTOM}/themes/alien-minimal
git clone https://github.com/eendroroy/alien-minimal.git
git submodule update --init --recursive # --remote

Then set ZSH_THEME="alien-minimal/alien-minimal" in the ~/.zshrc file.

Customizations

add configurations in ~/.amrc

Sections

Available sections:

  • am_ssh_st
  • am_prompt_start_tag
  • am_prompt_dir
  • am_prompt_end_tag
  • am_venv
  • am_version_prompt
  • am_vcs_prompt
  • am_space

am_vcs_prompt configuration

Git:

  • am_git_symbol
  • am_git_rebasing
  • am_git_branch
  • am_git_left_right_master
  • am_git_commit_time
  • am_git_rev
  • am_git_stash
  • am_git_left_right
  • am_git_dirty

Mercurial:

  • am_hg_symbol
  • am_hg_branch
  • am_hg_rev

Subversion:

  • am_svn_symbol
  • am_svn_rev

A sample sensible configuration

AM_VERSIONS_PROMPT=()

AM_GIT_SECTION=(
  am_git_symbol
  am_git_rebasing
  am_git_branch
  am_git_left_right_master
  am_git_commit_time
  am_git_rev
  am_git_stash
  am_git_left_right
  am_git_dirty
)

AM_HG_SECTION=(
  am_hg_symbol
  am_hg_branch
  am_hg_rev
)

AM_SVN_SECTION=(
  am_svn_symbol
  am_svn_rev
)

AM_LEFT_SECTION=(
  am_space
  am_ssh_st
  am_prompt_start_tag
  am_prompt_dir
  am_prompt_end_tag
  am_venv
  am_space
)

AM_RIGHT_SECTION=(
  am_version_prompt
  am_vcs_prompt
)

Update left prompt asynchronously

export AM_ASYNC_L_PROMPT=1

Show initial new line

Always show a new line

export AM_INITIAL_LINE_FEED=1

Unset AM_INITIAL_LINE_FEED to stop printing a new line.

Add start tag and end tag:

export AM_PROMPT_START_TAG='-->'     # previously `PROMPT_START_TAG`     
export AM_PROMPT_END_TAG='\ $'       # previously `PROMPT_END_TAG`       
export AM_PROMPT_START_TAG_COLOR=81  # previously `PROMPT_START_TAG_COLOR`  
export AM_PROMPT_END_TAG_COLOR=81    # previously `PROMPT_END_TAG_COLOR`    

Result:

--> ~ $
--> ~ $ 1
(venv) --> python-project $
(venv) --> python-project $ 130

You can additionally show the error color on prompt start tag:

export AM_ERROR_ON_START_TAG=1

Note: if AM_PROMPT_START_TAG is empty, this configuration will be ignored.

Show versions:

Available version are: PYTHON,PYTHON_S,RUBY,RUBY_S,JAVA,JAVA_S,GO,GO_S,ELIXIR,ELIXIR_S, CRYSTAL,CRYSTAL_S,NODE,NODE_S,PHP,PHP_S,GRADLE,MAVEN

export AM_VERSIONS_PROMPT=(RUBY PYTHON JAVA GO CRYSTAL NODE PHP ELIXIR GRADLE)

Customize Separator:

export AM_VERSION_PROMPT_SEP='|'

Note: Prompt maintain declaration order.

Configure dirname in prompt:

export AM_DIR_EXPANSION_LEVEL=2

The effect may be unnoticeable on faster CPUs.

Hide exit code:

export AM_HIDE_EXIT_CODE=1

Keep previous RPROMPT:

export AM_KEEP_PROMPT=1

Color themes:

1. export AM_THEME=mono
1. export AM_THEME=mono_bright
1. export AM_THEME=terminal
1. export AM_THEME=soft
1. export AM_THEME=default

Note: Unset AM_THEME to use default color scheme.

Apart from these default themes, custom colors can be defined:

Use previewer to easily preview colors.

export AM_VCS_COLOR=1          # color for VCS (G: M: V:)
export AM_SSH_COLOR=11         # color for ssh indicator
export AM_NORMAL_COLOR=12      # color for normal text
export AM_ERROR_COLOR=1        # color for ERROR
export AM_REV_COLOR=14         # color for VCS Revision number
export AM_BRANCH_COLOR=10      # color for VCS BRANCH name
export AM_LEFT_RIGHT_COLOR=3   # color for GIT Left-Right status
export AM_STASH_COLOR=3        # color for GIT stash count
export AM_BARE_COLOR=3         # color for GIT bare repo indicator
export AM_COMMIT_SINCE_COLOR=6 # color for last commit time
export AM_FADE_COLOR=8         # color for fade text color
export AM_VENV_COLOR=8         # color fir python virtual env text
export AM_PYTHON_COLOR=2       # color for python version text
export AM_RUBY_COLOR=1         # color for ruby version text
export AM_JAVA_COLOR=15        # color for java version text
export AM_TIMER_COLOR=14       # color for command execution time

Or creating a new theme file:

/path/to/custom/theme.zsh

#!/usr/bin/env zsh

am_theme(){
  AM_VCS_COLOR=248
  AM_SSH_COLOR=143
  AM_NORMAL_COLOR=39
  AM_ERROR_COLOR=208
  AM_REV_COLOR=248
  AM_BRANCH_COLOR=78
  AM_LEFT_RIGHT_COLOR=222
  AM_STASH_COLOR=222
  AM_BARE_COLOR=222
  AM_COMMIT_SINCE_COLOR=244
  AM_FADE_COLOR=242
  AM_VENV_COLOR=245
  AM_PYTHON_COLOR=40
  AM_RUBY_COLOR=196
  AM_JAVA_COLOR=178
  AM_GO_COLOR=81
  AM_ELIXIR_COLOR=81
  AM_CRYSTAL_COLOR=8
  AM_NODE_COLOR=2
  AM_PHP_COLOR=5
  AM_GRADLE_COLOR=2
  AM_MAVEN_COLOR=3
  AM_TIMER_COLOR=248
  AM_PROMPT_START_TAG_COLOR=39
  AM_PROMPT_END_TAG_COLOR=39
  AM_GIT_TRACKED_COLOR=78
  AM_GIT_UN_TRACKED_COLOR=208
  AM_LEFT_RIGHT_COLOR=252
}

Then activate the theme using:

export AM_CUSTOM_THEME_PATH=/path/to/custom/theme.zsh

Nerd Font:

Nerd Font must be installed nerd-fonts

Enable Nerd Font

export AM_USE_NERD_FONT=1 # previously `USE_NERD_FONT`

customize symbols

export AM_GIT_STASH_SYM='@'
export AM_GIT_BARE_SYM=''
export AM_GIT_SYM='G'
export AM_HG_SYM='H'
export AM_SVN_SYM='S'
export AM_SSH_SYM='[S]'
export AM_JAVA_SYM='JAVA:'
export AM_PY_SYM='PY:'
export AM_RB_SYM='RB:'
export AM_GO_SYM='GO:'
export AM_ELIXIR_SYM='EX:'
export AM_CRYSTAL_SYM='CR:'
export AM_NODE_SYM=''
export AM_PHP_SYM='PHP:'
export AM_GRADLE_SYM='GRADLE:'
export AM_MAVEN_SYM='MVN:'
export AM_GIT_REBASING_SYMBOL=''
export AM_GIT_PUSH_SYM=''
export AM_GIT_PULL_SYM=''
export AM_LEFT_RIGHT_SEP='|'

Note: this overrides AM_USE_NERD_FONT configuration.

Libraries Used

License

The project is available as open source under the terms of the MIT License.