Skip to content

Instantly share code, notes, and snippets.

@wmayner
Forked from agnoster/README.md
Last active December 29, 2015 09:38

Revisions

  1. wmayner revised this gist Nov 26, 2013. 3 changed files with 81 additions and 53 deletions.
    55 changes: 15 additions & 40 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -1,40 +1,15 @@
    # agnoster.zsh-theme

    A ZSH theme optimized for people who use:

    - Solarized
    - Git
    - Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

    For Mac users, I highly recommend iTerm 2 + Solarized Dark

    # Compatibility

    **NOTE:** In all likelihood, you will need to install a [Powerline-patched font](https://gist.github.com/1595572) for this theme to render correctly.

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"`. The result should look like this:

    ![Character Example](http://cl.ly/content/image/2l3w443z363P/aHR0cDovL2YuY2wubHkvaXRlbXMvM2ozTjJpMDMzTzJNM0ozcDFjMjgvU2NyZWVuJTIwU2hvdCUyMDIwMTItMDktMTQlMjBhdCUyMDEyLjA2LjAyJTIwLnBuZw==)

    ## What does it show?

    - If the previous command failed (✘)
    - User @ Hostname (if user is not DEFAULT_USER, which can then be set in your profile)
    - Git status
    - Branch (⭠) or detached head (➦)
    - Current branch / SHA1 in detached head state
    - Dirty working directory (±, color change)
    - Working directory
    - Elevated (root) privileges (⚡)

    ![Screenshot](https://raw.github.com/gist/3712874/5d28e2d9fe2e4d0a4fda0315ad97bdafa399425c/screenshot.png)

    ## Future Work

    I don't want to clutter it up too much, but I am toying with the idea of adding RVM (ruby version) and n (node.js version) display.

    It's currently hideously slow, especially inside a git repo. I guess it's not overly so for comparable themes, but it bugs me, and I'd love to hear ideas about how to improve the performance.

    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.

    Also the dependency on a powerline-patched font is regrettable, but there's really no way to get that effect without it. Ideally there would be a way to check for compatibility, or maybe even fall back to one of the similar unicode glyphs.
    # wmayner.zsh-theme #

    Forked from [@agnoster's zsh theme](https://gist.github.com/agnoster/3712874).
    Incorporates changes from
    [@smileart's fork](https://gist.github.com/smileart/3750104).

    ## Modifications in this fork: ##
    * The current path is right aligned, so it's out of the way
    when working in deeply nested directories. The main,
    left-aligned prompt only the current directory's name.
    * If you're working in a git repo with untracked files, the git portion of
    the prompt will be red (a clean repo is still green, and a dirty repo with
    no untracked files is still yellow).

    ### For more information see [the original](https://gist.github.com/agnoster/3712874). ###
    Binary file removed screenshot.png
    Binary file not shown.
    79 changes: 66 additions & 13 deletions agnoster.zsh-theme → wmayner.zsh-theme
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,18 @@
    # vim:ft=zsh ts=2 sw=2 sts=2
    # # wmayner.zsh-theme
    #
    # Forked from [@agnoster's zsh theme](https://gist.github.com/agnoster/3712874).
    # Incorporates changes from
    # [@smileart's fork](https://gist.github.com/smileart/3750104).
    #
    # agnoster's Theme - https://gist.github.com/3712874
    # A Powerline-inspired theme for ZSH
    # ## Modifications in this fork: ##
    # * The current path is right aligned, so it's out of the way
    # when working in deeply nested directories. The main,
    # left-aligned prompt only the current directory's name.
    # * If you're working in a git repo with untracked files, the git portion of
    # the prompt will be red (a clean repo is still green, and a dirty repo with
    # no untracked files is still yellow).
    #
    # # README
    # ## README ##
    #
    # In order for this theme to render correctly, you will need a
    # [Powerline-patched font](https://gist.github.com/1595572).
    @@ -13,19 +22,20 @@
    # using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app -
    # it has significantly better color fidelity.
    #
    # # Goals
    # ## Goals ##
    #
    # The aim of this theme is to only show you *relevant* information. Like most
    # prompts, it will only show git information when in a git working directory.
    # However, it goes a step further: everything from the current user and
    # However, it goes a step furthjer: everything from the current user and
    # hostname to whether the last call exited with an error to whether background
    # jobs are running in this shell will all be displayed automatically when
    # appropriate.

    ### Segment drawing
    # ### Segment drawing ###
    # A few utility functions to make it easy and re-usable to draw segmented prompts

    CURRENT_BG='NONE'
    END_FG='NONE'
    SEGMENT_SEPARATOR=''

    # Begin a segment
    @@ -47,21 +57,27 @@ prompt_segment() {
    # End the prompt, closing any open segments
    prompt_end() {
    if [[ -n $CURRENT_BG ]]; then
    echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
    # Use END_FG if it's been set (for coloring last separator based on current
    # vi mode)
    if [[ $END_FG != 'NONE' ]]; then
    echo -n " %{%k%F{$END_FG}%}$SEGMENT_SEPARATOR"
    else
    echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
    fi
    else
    echo -n "%{%k%}"
    fi
    echo -n "%{%f%}"
    CURRENT_BG=''
    }

    ### Prompt components
    # ### Prompt components ###
    # Each component will draw itself, and hide itself if no information needs to be shown

    # Context: user@hostname (who am I and where am I)
    prompt_context() {
    local user=`whoami`

    # Only display user if not the default
    if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    prompt_segment black default "%(!.%{%F{yellow}%}.)$user@%m"
    fi
    @@ -74,7 +90,9 @@ prompt_git() {
    ZSH_THEME_GIT_PROMPT_DIRTY='±'
    dirty=$(parse_git_dirty)
    ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="$(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
    if [[ -n $dirty ]]; then
    if [[ ! -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
    prompt_segment red black
    elif [[ -n $dirty ]]; then
    prompt_segment yellow black
    else
    prompt_segment green black
    @@ -85,7 +103,8 @@ prompt_git() {

    # Dir: current working directory
    prompt_dir() {
    prompt_segment blue black '%~'
    # Use just the name of the current directory (not the full path)
    prompt_segment blue black '%c'
    }

    # Status:
    @@ -102,7 +121,7 @@ prompt_status() {
    [[ -n "$symbols" ]] && prompt_segment black default "$symbols"
    }

    ## Main prompt
    # ## Build the prompt ##
    build_prompt() {
    RETVAL=$?
    prompt_status
    @@ -112,4 +131,38 @@ build_prompt() {
    prompt_end
    }

    # Set the main prompt
    PROMPT='%{%f%b%k%}$(build_prompt) '

    # Put the full path of the current directory on the right
    # (from kennethreitz.zsh-theme)
    RPS1='%{$fg[blue]%}%~%{$reset_color%}'

    # ### Change end separator color depending on current vi mode ###
    autoload -U colors
    # This is called whenever $KEYMAP is changed
    zle-keymap-select () {
    # If we're in vi command mode, make the last separator red
    if [[ $KEYMAP = vicmd ]]; then
    END_FG='cyan'
    # Otherwise don't do anything
    else
    END_FG='NONE'
    fi
    # Redraw the prompt once we've changed the color
    zle reset-prompt
    }
    # Replace default zle-keymap-select with ours
    zle -N zle-keymap-select

    zle-line-init () {
    zle -K viins
    }
    # Replace default zle-line-init with ours
    zle -N zle-line-init

    # Activate vi mod
    bindkey -v

    # Vim modeline:
    # vim:ft=zsh ts=2 sw=2 sts=2
  2. @agnoster agnoster revised this gist Sep 26, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -37,4 +37,4 @@ It's currently hideously slow, especially inside a git repo. I guess it's not ov

    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.

    Apparently the unicode characters don't display correctly on all systems. It would be nice to be able to say "this font will make it work, always". But what font?
    Also the dependency on a powerline-patched font is regrettable, but there's really no way to get that effect without it. Ideally there would be a way to check for compatibility, or maybe even fall back to one of the similar unicode glyphs.
  3. @agnoster agnoster revised this gist Sep 26, 2012. 1 changed file with 5 additions and 3 deletions.
    8 changes: 5 additions & 3 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,8 @@ A ZSH theme optimized for people who use:
    - Git
    - Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

    For Mac users, I highly recommend iTerm 2 + Solarized Dark

    # Compatibility

    **NOTE:** In all likelihood, you will need to install a [Powerline-patched font](https://gist.github.com/1595572) for this theme to render correctly.
    @@ -16,16 +18,16 @@ To test if your terminal and font support it, check that all the necessary chara

    ## What does it show?

    - Success (✔) or failure (✘) of previous command
    - Hostname
    - If the previous command failed (✘)
    - User @ Hostname (if user is not DEFAULT_USER, which can then be set in your profile)
    - Git status
    - Branch (⭠) or detached head (➦)
    - Current branch / SHA1 in detached head state
    - Dirty working directory (±, color change)
    - Working directory
    - Elevated (root) privileges (⚡)

    ![Screenshot](https://gist.github.com/raw/3712874/de4828056ec1f04b03dbf4940f1b61e525ec9799/screenshot.png)
    ![Screenshot](https://raw.github.com/gist/3712874/5d28e2d9fe2e4d0a4fda0315ad97bdafa399425c/screenshot.png)

    ## Future Work

  4. @agnoster agnoster revised this gist Sep 26, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion agnoster.zsh-theme
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    # vim:ft=zsh ts=2 sw=2 sts=2
    #
    # agnoster's Theme
    # agnoster's Theme - https://gist.github.com/3712874
    # A Powerline-inspired theme for ZSH
    #
    # # README
  5. @agnoster agnoster revised this gist Sep 26, 2012. 1 changed file with 4 additions and 2 deletions.
    6 changes: 4 additions & 2 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,8 @@ A ZSH theme optimized for people who use:
    - Git
    - Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

    For Mac users, I highly recommend iTerm 2 + Solarized Dark

    # Compatibility

    **NOTE:** In all likelihood, you will need to install a [Powerline-patched font](https://gist.github.com/1595572) for this theme to render correctly.
    @@ -16,8 +18,8 @@ To test if your terminal and font support it, check that all the necessary chara

    ## What does it show?

    - Success (✔) or failure (✘) of previous command
    - Hostname
    - If the previous command failed (✘)
    - User @ Hostname (if user is not DEFAULT_USER, which can then be set in your profile)
    - Git status
    - Branch (⭠) or detached head (➦)
    - Current branch / SHA1 in detached head state
  6. @agnoster agnoster revised this gist Sep 25, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -25,7 +25,7 @@ To test if your terminal and font support it, check that all the necessary chara
    - Working directory
    - Elevated (root) privileges (⚡)

    ![Screenshot](https://gist.github.com/raw/3712874/de4828056ec1f04b03dbf4940f1b61e525ec9799/screenshot.png)
    ![Screenshot](https://raw.github.com/gist/3712874/5d28e2d9fe2e4d0a4fda0315ad97bdafa399425c/screenshot.png)

    ## Future Work

  7. @agnoster agnoster revised this gist Sep 25, 2012. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -8,6 +8,8 @@ A ZSH theme optimized for people who use:

    # Compatibility

    **NOTE:** In all likelihood, you will need to install a [Powerline-patched font](https://gist.github.com/1595572) for this theme to render correctly.

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"`. The result should look like this:

    ![Character Example](http://cl.ly/content/image/2l3w443z363P/aHR0cDovL2YuY2wubHkvaXRlbXMvM2ozTjJpMDMzTzJNM0ozcDFjMjgvU2NyZWVuJTIwU2hvdCUyMDIwMTItMDktMTQlMjBhdCUyMDEyLjA2LjAyJTIwLnBuZw==)
  8. @agnoster agnoster revised this gist Sep 25, 2012. 1 changed file with 0 additions and 0 deletions.
    Binary file modified screenshot.png
    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
  9. @agnoster agnoster revised this gist Sep 25, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -8,7 +8,7 @@ A ZSH theme optimized for people who use:

    # Compatibility

    **NOTE:** In all likelihood, you will need to install a [Powerline-patched font] for this theme to render correctly.
    **NOTE:** In all likelihood, you will need to install a [Powerline-patched font](https://gist.github.com/1595572) for this theme to render correctly.

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"`. The result should look like this:

  10. @agnoster agnoster revised this gist Sep 25, 2012. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -8,6 +8,8 @@ A ZSH theme optimized for people who use:

    # Compatibility

    **NOTE:** In all likelihood, you will need to install a [Powerline-patched font] for this theme to render correctly.

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"`. The result should look like this:

    ![Character Example](http://cl.ly/content/image/2l3w443z363P/aHR0cDovL2YuY2wubHkvaXRlbXMvM2ozTjJpMDMzTzJNM0ozcDFjMjgvU2NyZWVuJTIwU2hvdCUyMDIwMTItMDktMTQlMjBhdCUyMDEyLjA2LjAyJTIwLnBuZw==)
  11. @agnoster agnoster revised this gist Sep 25, 2012. 1 changed file with 12 additions and 0 deletions.
    12 changes: 12 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,12 @@ A ZSH theme optimized for people who use:
    - Git
    - Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

    # Compatibility

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"`. The result should look like this:

    ![Character Example](http://cl.ly/content/image/2l3w443z363P/aHR0cDovL2YuY2wubHkvaXRlbXMvM2ozTjJpMDMzTzJNM0ozcDFjMjgvU2NyZWVuJTIwU2hvdCUyMDIwMTItMDktMTQlMjBhdCUyMDEyLjA2LjAyJTIwLnBuZw==)

    ## What does it show?

    - Success (✔) or failure (✘) of previous command
    @@ -22,3 +28,9 @@ A ZSH theme optimized for people who use:
    ## Future Work

    I don't want to clutter it up too much, but I am toying with the idea of adding RVM (ruby version) and n (node.js version) display.

    It's currently hideously slow, especially inside a git repo. I guess it's not overly so for comparable themes, but it bugs me, and I'd love to hear ideas about how to improve the performance.

    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.

    Apparently the unicode characters don't display correctly on all systems. It would be nice to be able to say "this font will make it work, always". But what font?
  12. @agnoster agnoster revised this gist Sep 25, 2012. 1 changed file with 105 additions and 17 deletions.
    122 changes: 105 additions & 17 deletions agnoster.zsh-theme
    Original file line number Diff line number Diff line change
    @@ -1,27 +1,115 @@
    # https://github.com/agnoster zsh theme
    # vim:ft=zsh ts=2 sw=2 sts=2
    #
    # agnoster's Theme
    # A Powerline-inspired theme for ZSH
    #
    # # README
    #
    # In order for this theme to render correctly, you will need a
    # [Powerline-patched font](https://gist.github.com/1595572).
    #
    # In addition, I recommend the
    # [Solarized theme](https://github.com/altercation/solarized/) and, if you're
    # using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app -
    # it has significantly better color fidelity.
    #
    # # Goals
    #
    # The aim of this theme is to only show you *relevant* information. Like most
    # prompts, it will only show git information when in a git working directory.
    # However, it goes a step further: everything from the current user and
    # hostname to whether the last call exited with an error to whether background
    # jobs are running in this shell will all be displayed automatically when
    # appropriate.

    ZSH_THEME_GIT_PROMPT_DIRTY='±'
    ### Segment drawing
    # A few utility functions to make it easy and re-usable to draw segmented prompts

    function _git_prompt_info() {
    ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="$(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
    echo "${ref/refs\/heads\//⭠ }$(parse_git_dirty)"
    CURRENT_BG='NONE'
    SEGMENT_SEPARATOR=''

    # Begin a segment
    # Takes two arguments, background and foreground. Both can be omitted,
    # rendering default background/foreground.
    prompt_segment() {
    local bg fg
    [[ -n $1 ]] && bg="%K{$1}" || bg="%k"
    [[ -n $2 ]] && fg="%F{$2}" || fg="%f"
    if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
    echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} "
    else
    echo -n "%{$bg%}%{$fg%} "
    fi
    CURRENT_BG=$1
    [[ -n $3 ]] && echo -n $3
    }

    # End the prompt, closing any open segments
    prompt_end() {
    if [[ -n $CURRENT_BG ]]; then
    echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
    else
    echo -n "%{%k%}"
    fi
    echo -n "%{%f%}"
    CURRENT_BG=''
    }

    function _git_info() {
    ### Prompt components
    # Each component will draw itself, and hide itself if no information needs to be shown

    # Context: user@hostname (who am I and where am I)
    prompt_context() {
    local user=`whoami`

    if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    prompt_segment black default "%(!.%{%F{yellow}%}.)$user@%m"
    fi
    }

    # Git: branch/detached head, dirty status
    prompt_git() {
    local ref dirty
    if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
    local BG_COLOR=green
    if [[ -n $(parse_git_dirty) ]]; then
    BG_COLOR=yellow
    ZSH_THEME_GIT_PROMPT_DIRTY='±'
    dirty=$(parse_git_dirty)
    ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="$(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
    if [[ -n $dirty ]]; then
    prompt_segment yellow black
    else
    prompt_segment green black
    fi
    echo "%{%K{$BG_COLOR}%}⮀%{%F{black}%} $(_git_prompt_info) %{%F{$BG_COLOR}%K{blue}%}⮀"
    else
    echo "%{%K{blue}%}⮀"
    echo -n "${ref/refs\/heads\//⭠ }$dirty"
    fi
    }

    PROMPT_HOST='%{%b%F{gray}%K{black}%} %(?.%{%F{green}%}✔.%{%F{red}%}✘)%{%F{gray}%} %m %{%F{black}%}'
    PROMPT_DIR='%{%F{white}%} %1~ '
    PROMPT_SU='%(!.%{%k%F{blue}%K{black}%}⮀%{%F{yellow}%} ⚡ %{%k%F{black}%}.%{%k%F{blue}%})⮀%{%f%k%b%}'
    # Dir: current working directory
    prompt_dir() {
    prompt_segment blue black '%~'
    }

    # Status:
    # - was there an error
    # - am I root
    # - are there background jobs?
    prompt_status() {
    local symbols
    symbols=()
    [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘"
    [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡"
    [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙"

    [[ -n "$symbols" ]] && prompt_segment black default "$symbols"
    }

    ## Main prompt
    build_prompt() {
    RETVAL=$?
    prompt_status
    prompt_context
    prompt_dir
    prompt_git
    prompt_end
    }

    PROMPT='%{%f%b%k%}
    $PROMPT_HOST$(_git_info)$PROMPT_DIR$PROMPT_SU '
    PROMPT='%{%f%b%k%}$(build_prompt) '
  13. @agnoster agnoster revised this gist Sep 14, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -10,7 +10,7 @@ A ZSH theme optimized for people who use:

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"`. The result should look like this:

    ![Character Example](http://cl.ly/image/2l3w443z363P)
    ![Character Example](http://cl.ly/content/image/2l3w443z363P/aHR0cDovL2YuY2wubHkvaXRlbXMvM2ozTjJpMDMzTzJNM0ozcDFjMjgvU2NyZWVuJTIwU2hvdCUyMDIwMTItMDktMTQlMjBhdCUyMDEyLjA2LjAyJTIwLnBuZw==)

    ## What does it show?

  14. @agnoster agnoster revised this gist Sep 14, 2012. 1 changed file with 7 additions and 3 deletions.
    10 changes: 7 additions & 3 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -6,9 +6,11 @@ A ZSH theme optimized for people who use:
    - Git
    - Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀±⭠ ➦✔✘⚡"`. The result should look like this:
    # Compatibility

    ![Character Example](http://cl.ly/image/3m3b0k2g2Y1A/Screen%20Shot%202012-09-14%20at%2012.01.14%20.png)
    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀ ± ⭠ ➦ ✔ ✘ ⚡"`. The result should look like this:

    ![Character Example](http://cl.ly/image/2l3w443z363P)

    ## What does it show?

    @@ -29,4 +31,6 @@ I don't want to clutter it up too much, but I am toying with the idea of adding

    It's currently hideously slow, especially inside a git repo. I guess it's not overly so for comparable themes, but it bugs me, and I'd love to hear ideas about how to improve the performance.

    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.
    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.

    Apparently the unicode characters don't display correctly on all systems. It would be nice to be able to say "this font will make it work, always". But what font?
  15. @agnoster agnoster revised this gist Sep 14, 2012. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion README.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,10 @@ A ZSH theme optimized for people who use:
    - Git
    - Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

    To test if your terminal and font support it, check that all the necessary characters are supported by copying the following command to your terminal: `echo "⮀±⭠ ➦✔✘⚡"`. The result should look like this:

    ![Character Example](http://cl.ly/image/3m3b0k2g2Y1A/Screen%20Shot%202012-09-14%20at%2012.01.14%20.png)

    ## What does it show?

    - Success (✔) or failure (✘) of previous command
    @@ -25,4 +29,4 @@ I don't want to clutter it up too much, but I am toying with the idea of adding

    It's currently hideously slow, especially inside a git repo. I guess it's not overly so for comparable themes, but it bugs me, and I'd love to hear ideas about how to improve the performance.

    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.
    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.
  16. @agnoster agnoster revised this gist Sep 13, 2012. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -22,3 +22,7 @@ A ZSH theme optimized for people who use:
    ## Future Work

    I don't want to clutter it up too much, but I am toying with the idea of adding RVM (ruby version) and n (node.js version) display.

    It's currently hideously slow, especially inside a git repo. I guess it's not overly so for comparable themes, but it bugs me, and I'd love to hear ideas about how to improve the performance.

    Would be nice for the code to be a bit more sane and re-usable. Something to easily append a section with a given FG/BG, and add the correct opening and closing.
  17. @agnoster agnoster revised this gist Sep 13, 2012. 1 changed file with 24 additions and 0 deletions.
    24 changes: 24 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    # agnoster.zsh-theme

    A ZSH theme optimized for people who use:

    - Solarized
    - Git
    - Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

    ## What does it show?

    - Success (✔) or failure (✘) of previous command
    - Hostname
    - Git status
    - Branch (⭠) or detached head (➦)
    - Current branch / SHA1 in detached head state
    - Dirty working directory (±, color change)
    - Working directory
    - Elevated (root) privileges (⚡)

    ![Screenshot](https://gist.github.com/raw/3712874/de4828056ec1f04b03dbf4940f1b61e525ec9799/screenshot.png)

    ## Future Work

    I don't want to clutter it up too much, but I am toying with the idea of adding RVM (ruby version) and n (node.js version) display.
  18. @agnoster agnoster revised this gist Sep 13, 2012. 1 changed file with 0 additions and 0 deletions.
    Binary file added screenshot.png
    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
  19. @agnoster agnoster created this gist Sep 13, 2012.
    27 changes: 27 additions & 0 deletions agnoster.zsh-theme
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    # https://github.com/agnoster zsh theme

    ZSH_THEME_GIT_PROMPT_DIRTY='±'

    function _git_prompt_info() {
    ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="$(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
    echo "${ref/refs\/heads\//⭠ }$(parse_git_dirty)"
    }

    function _git_info() {
    if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
    local BG_COLOR=green
    if [[ -n $(parse_git_dirty) ]]; then
    BG_COLOR=yellow
    fi
    echo "%{%K{$BG_COLOR}%}⮀%{%F{black}%} $(_git_prompt_info) %{%F{$BG_COLOR}%K{blue}%}⮀"
    else
    echo "%{%K{blue}%}⮀"
    fi
    }

    PROMPT_HOST='%{%b%F{gray}%K{black}%} %(?.%{%F{green}%}✔.%{%F{red}%}✘)%{%F{gray}%} %m %{%F{black}%}'
    PROMPT_DIR='%{%F{white}%} %1~ '
    PROMPT_SU='%(!.%{%k%F{blue}%K{black}%}⮀%{%F{yellow}%} ⚡ %{%k%F{black}%}.%{%k%F{blue}%})⮀%{%f%k%b%}'

    PROMPT='%{%f%b%k%}
    $PROMPT_HOST$(_git_info)$PROMPT_DIR$PROMPT_SU '