
My Extravagant Zsh Prompt - thmzlt
http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/
======
JoshTriplett
I took the minimal approach with my prompt. Under normal circumstances, my
prompt looks like this:

    
    
      ~$
    

I only show the username and hostname in my prompt if remote or unusual: [ -n
"$SSH_CONNECTION" ] || [ "$USER" != "josh" ]. If either of those, I prefix my
prompt with "user@host:". Apart from that, I show the exit status of the last
command run, if non-zero. In general, I try to hide all boring information and
show useful information only.

------
grayrest
If anybody's interested, here's my considerably less extravagant Zsh
prompt[1]. It shows the current directory along with what top level directory
you're in on the right prompt along with VCS info. The left side shows
backgrounded jobs marked with pipes but otherwise is just a $ so command lines
wrap less frequently. It uses the vcs_info functionality from zshkit[2].

[1] <http://gr.ayre.st/s/screenshots/git/git_working.png> [2]
<https://github.com/mattfoster/zshkit>

    
    
        function prompt_grayrest_setup {
          unset PS1 PS2 PS3 PS4 PROMPT RPROMPT
          autoload colors zsh/terminfo
          if [[ "$terminfo[colors]" -ge 8 ]]; then
            colors
          fi
          # Colours accepted as arguments
          local u_col=${1:-'green'}
          local h_col=${2:-'blue'}
          local d_col=${3:-'yellow'}
          local d_col_pre='blue'
          local job_color='yellow'
          local n_tru=${4:-'blue'}
          local n_fal=${5:-'yellow'}
          # looks like: ee1mpf@eepc-tsar16 ~ $
            ps1=(
            # "%{$fg_bold[$u_col]%}%n@"
            # "%{$fg_bold[$h_col]%}%m "
            "%1(j.%{$fg_bold[$job_color]%}.)"
            "%4(j.%{$reset_color$fg[$job_color]%}[%{$reset_color$fg_bold[$job_color]%}%j%{$reset_color$fg[$job_color]%}] .%3(j.||| .%2(j.|| .%1(j.| .))))"
            "%{$reset_color%}"
            "%{%(?.$fg[$n_tru].$fg[$n_fal])%}$ "
            "%{$reset_color%}"
          )
          ps2=(
            "%_ %{$fg[$d_col]%}-> "
            "%{$reset_color%}"
          )
          rps1=(
            '%{$fg[$b_col]%}${vcs_info_msg_0_}%{$reset_color%}'
            " %{$fg[$d_col]%}%(4~.%{$fg[$d_col_pre]%}%-1~%{$fg[$d_col]%} %2~.%3~) %{$reset_color%}"
          )
          PS2="${(j::)ps2}"
          PS1="${(j::)ps1}"
          RPS1="${(j::)rps1}"
        }

~~~
bonzoesc
Are you using a private fork of zshkit, or staying pretty close to
mattfoster's master branch?

I used to pull in mattfoster's stuff, but I got complacent and fell out of it.

~~~
grayrest
I'm pretty close to mattfoster's master.

------
freedrull
Why oh why do you need your battery life displayed in your prompt? There are
plenty of other places to display it.

~~~
jodrellblank
Because he works " _from coffeeshops and client meetings pretty often, so it’s
nice to have a reminder of my remaining battery power to know when I need to
plug in_ ". Didn't you read it?

------
flexd
I just use oh-my-zsh (<https://github.com/robbyrussell/oh-my-zsh>) to quickly
enable half these things.

➜ civ5replays git:(master) ✗

Looks like that now, the X means uncommited changes. civ5replays being the
folder, the rest being... the rest!

------
metabrew
My favourite prompt-hack is to colourise the $ when the previous command exits
non-zero, here's how I have my bash PS1 set up:
<http://www.metabrew.com/article/updated-bash-ps1>

If you exit `top` by pressing q, it exits with non-zero - who knew? :)

------
yogsototh
May I suggest to use this prompt for git users[1]. I use it daily and I am
really happy with it.

[1]: <http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/>

------
honza
I love how Steve's articles get rediscovered and resubmitted over and over.

