Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user > #239720
| From | Nate Bargmann <n0nb@n0nb.us> |
|---|---|
| Newsgroups | linux.debian.user |
| Subject | Re: Why ``color_prompt`` is only set for ``xterm``? |
| Date | 2021-09-05 18:50 +0200 |
| Message-ID | <CU3vc-3bA-3@gated-at.bofh.it> (permalink) |
| References | <CT562-5UL-1@gated-at.bofh.it> <CT5pn-61K-3@gated-at.bofh.it> |
| Organization | Amateur Radio! |
[Multipart message — attachments visible in raw view] - view raw
I may as well add to the fun here.
Some years back, probably the late '90s or so, there was a short lived
"Bash Prompt Project". I seem to recall it have a package in Debian
back around that time. I had previously done colorizing of the MS-DOS
prompt and had desired to do the same in Bash. Along the way I found
that project and I think made a contribution. It's dead now but my
colored prompts live on!
A couple of years ago I became fascinated with terminfo and so am using
it rather than specifying ANSI escape codes directly. Here is the
entirety of my ~/.bashrc that deals with setting the prompt:
---------------------8<-----------------------------------
# Git repository status in the prompt
if [[ -e /usr/lib/git-core/git-sh-prompt ]]; then
# From https://gist.github.com/eliotsykes/47516b877f5a4f7cd52f
source /usr/lib/git-core/git-sh-prompt
export GIT_PS1_SHOWDIRTYSTATE=true # staged '+', unstaged '*'
export GIT_PS1_SHOWSTASHSTATE=true # '$' something is stashed
export GIT_PS1_SHOWUPSTREAM="auto" # '<' behind, '>' ahead, '<>' diverged, '=' no difference
export GIT_PS1_SHOWUNTRACKEDFILES=true # '%' untracked files
fi
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
# Use variables set from terminfo capabilities to make PS1 and LESS_TERMCAP_*
# variables less cryptic.
#
# Colors: 0, Black; 1, Red; 2, Green; 3, Yellow; 4, Blue; 5, Magenta; 6, Cyan; 7, White.
# Foreground (text) colors
BLK=$(tput setaf 0)
RED=$(tput setaf 1)
GRN=$(tput setaf 2)
YEL=$(tput setaf 3)
BLU=$(tput setaf 4)
MAG=$(tput setaf 5)
CYA=$(tput setaf 6)
WHT=$(tput setaf 7)
# Background colors
BLKB=$(tput setab 0)
REDB=$(tput setab 1)
GRNB=$(tput setab 2)
YELB=$(tput setab 3)
BLUB=$(tput setab 4)
MAGB=$(tput setab 5)
CYAB=$(tput setab 6)
WHTB=$(tput setab 7)
# Character attibutes
BLD=$(tput bold)
ITA=$(tput sitm)
NOR=$(tput sgr 0)
# More prompt madness. Show exit status if command returned non-zero result.
prompt_last_exit_status () {
PROMPT_LAST_EXIT_STATUS=$?
if [[ ${PROMPT_LAST_EXIT_STATUS} == "0" ]]; then
PROMPT_LAST_EXIT_STATUS=
else
PROMPT_LAST_EXIT_STATUS='{'$BLD$RED$PROMPT_LAST_EXIT_STATUS$NOR'}'
fi
}
prompt_command () {
prompt_last_exit_status
# From: https://superuser.com/a/180275
CurDir=$(pwd|sed -e "s!$HOME!~!"|sed -re "s!([^/])[^/]+/!\1/!g")
}
export PROMPT_COMMAND=prompt_command
if [ "$color_prompt" = yes ]; then
PS1='('
PS1+='\[$CYA\]$SHLVL\[$NOR\]'
PS1+=')'
PS1+='['
PS1+='\[$YEL\]\j\[$NOR\]'
PS1+=']'
PS1+='\[$GRN\]\u\[$NOR\]'
PS1+='@'
PS1+='\[$BLD$GRN\]\h\[$NOR\]'
PS1+=':'
PS1+='\[$BLD$BLU\]$CurDir\[$NOR\]'
PS1+=' '
PS1+='$(__git_ps1 "(\[$MAG\]\[$ITA\]%s\[$NOR\])")'
PS1+=' '
PS1+='$PROMPT_LAST_EXIT_STATUS'
PS1+='\n'
PS1+='\[$BLD$WHT\]\$\[$NOR\] '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
--------------------->8-----------------------------------
Generally, for root accounts I change GRN to RED and on virtual machines
to MAG. Of course quite a range is available but the most limiting is
the Linux virtual console driver so I keep things relatively simple.
I also created some posts on my blog about tput[1] and how to reset the
color palettes of the various terminals[2].
- Nate
[1] https://www.n0nb.us/blog/2020/02/tinkering-in-the-terminal-with-tput/
[2] https://www.n0nb.us/blog/2020/02/coping-with-color-on-the-linux-console-and-xterm-and-friends/
--
"The optimist proclaims that we live in the best of all
possible worlds. The pessimist fears this is true."
Web: https://www.n0nb.us
Projects: https://github.com/N0NB
GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819
Back to linux.debian.user | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Why ``color_prompt`` is only set for ``xterm``? IL Ka <kazakevichilya@gmail.com> - 2021-09-03 02:20 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? David Wright <deblis@lionunicorn.co.uk> - 2021-09-03 02:40 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? Nicholas Geovanis <nickgeovanis@gmail.com> - 2021-09-03 03:10 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? piorunz <piorunz@gmx.com> - 2021-09-03 03:50 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? Mark Neyhart <Mark.Neyhart@akleg.gov> - 2021-09-03 22:00 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? (colored prompt examples) Intense Red <intnsred@golgotha.net> - 2021-09-05 07:30 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? (colored prompt examples) Cindy Sue Causey <butterflybytes@gmail.com> - 2021-09-05 14:20 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? (colored prompt examples) Greg Wooledge <greg@wooledge.org> - 2021-09-05 15:10 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? (colored prompt examples) Cindy Sue Causey <butterflybytes@gmail.com> - 2021-09-05 15:40 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? (colored prompt examples) Greg Wooledge <greg@wooledge.org> - 2021-09-05 15:50 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? David Wright <deblis@lionunicorn.co.uk> - 2021-09-05 06:30 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? Greg Wooledge <greg@wooledge.org> - 2021-09-05 15:10 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? David Wright <deblis@lionunicorn.co.uk> - 2021-09-07 17:10 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? Nate Bargmann <n0nb@n0nb.us> - 2021-09-05 18:50 +0200
Re: Why ``color_prompt`` is only set for ``xterm``? Andrei POPESCU <andreimpopescu@gmail.com> - 2021-09-07 20:40 +0200
csiph-web