Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Coolest prompt?
- X-seq: zsh-users 7555
- From: Vincent Lefevre <vincent@xxxxxxxxxx>
- To: ZSH-users <zsh-users@xxxxxxxxxx>
- Subject: Re: Coolest prompt?
- Date: Thu, 17 Jun 2004 14:25:27 +0200
- In-reply-to: <20040615151840.GC7673@xxxxxxx>
- Mail-followup-to: ZSH-users <zsh-users@xxxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- References: <200406111329.45312.myrmidon@xxxxxxxxxxx> <87CE3664-BBF7-11D8-9BE4-000393ABF2F0@xxxxxxxxxxxxxxxxxx> <20040615151840.GC7673@xxxxxxx>
- Sender: Vincent Lefevre <vincent@xxxxxxxxxx>
On 2004-06-15 17:18:40 +0200, Julius Plenz wrote:
> To see this Prompt in action, look at this example:
> 
> e/www/plenz,0% cd www/
> w/plenz/www,0% cd plenz.com/
> w/plenz.com,0% cd /tmp
>        /tmp,0% sleep 10&
> [1] 16056
>        /tmp,1% cd
> [1]  + 16056 done       sleep 10
> e/www/plenz,0%
> 
> So, you see, there is a fixed path-length and the number of
> background jobs. I really like this prompt, its simple but gives
> enough information.
You could avoid to write ",0" when there are no background jobs.
Here's my prompt code:
setopt PROMPT_SUBST
setopt PROMPT_PERCENT
zmodload -i zsh/parameter
precmd()
{
  local njobs
  if [[ $domain == local.ay && "$(pmu_battery)" == "Battery" ]] then
    psvar[1]="[$(pmu_percent)%]"
  else
    psvar[1]=""
  fi
  njobs=$#jobstates;
  case $njobs in
    0) psvar[2]=();;
    1) psvar[2]="1 job";;
    *) psvar[2]="$njobs jobs";;
  esac
  [[ -n $TTY && $TERM == (xterm*|dtterm|rxvt|screen*) ]] &&
    {
      print -nP "\e]1;%m:%.\x07"
      print -nP "\e]2;%(2v. %2v |.)${WINTITLE:+ $WINTITLE |} %n@%m - %~ | %y"
      [[ $TERM == screen* ]] && print -n .
      print -n "\x07"
    } > $TTY
}
TRAPCLD() { [[ -o interactive && -n $TTY ]] && precmd }
putprompt()
{
  local preprompt postprompt prefail postfail
  if [[ -n $COLORTERM ]] then
    local bgcol=`tput setab 0`
    preprompt="%{`tput bold`$bgcol%(2v.`tput setaf 2`.`tput setaf 3`)%}"
    postprompt="%{`tput sgr0`%}"
    prefail="%{`tput setab 1`%}"
    postfail="%{$bgcol%}"
  fi
  PS1="%m:%20<...<%~%<<%(?..${prefail}[%?]${postfail})%1v%(#.#.>) "
  RPS1="<%*"
  PS1="$preprompt$PS1$postprompt"
  RPS1="$preprompt$RPS1$postprompt"
  PS2="$preprompt$PS2$postprompt"
  PS3="$preprompt$PS3$postprompt"
  PS4="$preprompt$PS4$postprompt"
}
putprompt
-- 
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.org/>
100% validated (X)HTML - Acorn / RISC OS / ARM, free software, YP17,
Championnat International des Jeux Mathématiques et Logiques, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Messages sorted by:
Reverse Date,
Date,
Thread,
Author