Skip to content

Instantly share code, notes, and snippets.

@Samyak2
Last active November 18, 2023 23:03
Show Gist options
  • Save Samyak2/6676c608371e915e3c066dbbdcc25622 to your computer and use it in GitHub Desktop.
Save Samyak2/6676c608371e915e3c066dbbdcc25622 to your computer and use it in GitHub Desktop.
Adding virtualenv and conda support to Oh My Zsh Bira theme

Steps to add virtualenv and conda support to Bira theme

  • Add the virtualenv plugin to ~/.zshrc and make sure these lines are in ~/.oh-my-zsh/plugins/virtualenv/virtualenv.plugin.zsh

    # disables prompt mangling in virtual_env/bin/activate
    export VIRTUAL_ENV_DISABLE_PROMPT=1
    
    #Disable conda prompt changes
    #https://conda.io/docs/user-guide/configuration/use-condarc.html#change-command-prompt-changeps1
    #changeps1: False
    `conda config --set changeps1 false`
  • Add these two helper functions to ~/.oh-my-zsh/themes/bira.zsh-theme (add them near the top, not at the end)

    function venv_info {
        if [[ -n "$VIRTUAL_ENV" ]]; then
            echo "%{$fg[green]%}‹${VIRTUAL_ENV:t}›%{$reset_color%}"
        fi
    }
    
    function conda_info {
        if [[ -n "$CONDA_DEFAULT_ENV" ]]; then
            echo "%{$fg[green]%}‹${CONDA_DEFAULT_ENV}›%{$reset_color%}"
        fi
    }
    local venv='$(venv_info)'
    local conda='$(conda_info)'
  • Add it to the prompt

    Look for the PROMPT variable in the same file and add ${conda} ${venv} to it (The order in which they should appear is your preference). It should look like this

    PROMPT="╭─${user_host} ${current_dir} ${rvm_ruby} ${git_branch} ${conda} ${venv}
    ╰─%B${user_symbol}%b "
  • Source ~/.zshrc to see if changes have taken place

@TreemanCHou
Copy link

TreemanCHou commented Oct 26, 2022

I'm using the jonathan theme , and all the solution above didn't work in jonathan because Jonathan has a different code structure from Bira . To display conda info in jonathan , just add the function "conda_info" to .oh-my-zsh/themes/jonathan.zsh-theme :

conda_prompt_info(){
  if [ -n "$CONDA_DEFAULT_ENV" ]; then
    echo -n "($CONDA_DEFAULT_ENV)"
  else
    echo -n "(base)"
  fi
}

As Jonathan has 2 lines of output and the first output line was filled by a function using "------" . If conda info displays in the first line , those "------" will be out of your screen . So :
add '${$(conda_prompt_info)}' to the SECOND LINE OF OUTPUT in the PROMPT . the PROMPT was devided into 2 parts by a empty line , so you can easily find where to add conda info . For me , I added it after the time info . My PROMPT is like

PROMPT=\'${PR_SET_CHARSET}${PR_STITLE}${(e)PR_TITLEBAR}\
${PR_CYAN}${PR_ULCORNER}${PR_HBAR}${PR_GREY}(\
${PR_GREEN}%${PR_PWDLEN}<...<%~%<<\
${PR_GREY})$(ruby_prompt_info)${PR_CYAN}${PR_HBAR}${PR_HBAR}${(e)PR_FILLBAR}${PR_HBAR}${PR_GREY}(\
${PR_CYAN}%(!.%SROOT%s.%n)${PR_GREY}@${PR_GREEN}%m:%l\
${PR_GREY})${PR_CYAN}${PR_HBAR}${PR_URCORNER}\

${PR_CYAN}${PR_LLCORNER}${PR_BLUE}${PR_HBAR}(\
${PR_YELLOW}%D{%H:%M:%S}\
${PR_LIGHT_BLUE}%{$reset_color%}$(git_prompt_info)$(git_prompt_status)${PR_BLUE})${$(conda_prompt_info)}${venv_prompt}${PR_CYAN}${PR_HBAR}\
${PR_HBAR}\
>${PR_NO_COLOUR} \'

I hope this will help someone too XD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment