From 5053c86daab05be48de16b8cf5cf52d9e0b37249 Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Fri, 3 Jun 2016 13:45:22 -0400 Subject: [PATCH] Git branch is added to bash prompt + colors are configured. --- config/.bashrc | 104 ++++++++++++++-- config/.dir_colors | 300 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 391 insertions(+), 13 deletions(-) create mode 100644 config/.dir_colors diff --git a/config/.bashrc b/config/.bashrc index 3bd123e..b1f0517 100755 --- a/config/.bashrc +++ b/config/.bashrc @@ -14,14 +14,6 @@ if [ -f /etc/bashrc ]; then . /etc/bashrc else - # are we an interactive shell? - if [ "$PS1" ]; then - PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"' - # Turn on checkwinsize - shopt -s checkwinsize - [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " - fi - if ! shopt -q login_shell ; then # We're not a login shell for i in /etc/profile.d/*.sh; do if [ -r "$i" ]; then @@ -49,15 +41,101 @@ kversion=`uname -v` krelease=`uname -r` hostnm=`hostname` +# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # -# If there is no terminal info in the system for current terminal but there is -# one in local terminfo then use it. +# Terminal colors. # -/bin/tput -T $TERM longname 2>/dev/null >/dev/null -if [[ $? -ne 0 && -f $HOME/.terminfo/$kernel/${TERM:0:1}/$TERM ]]; then - export TERMINFO=$HOME/.terminfo/$kernel; +if [[ $- == *i* ]]; then + # + # If there is no terminal info in the system for current terminal but there is + # one in local terminfo then use it. + # + /bin/tput -T $TERM longname 2>/dev/null >/dev/null + if [[ $? -ne 0 && -f $HOME/.terminfo/$kernel/${TERM:0:1}/$TERM ]]; then + export TERMINFO=$HOME/.terminfo/$kernel; + fi + + ### + # Colors + ### + # reset terminal colors + c_reset="$(tput sgr0)" + # regular foreground + crf_red=$(tput setaf 1) + crf_green=$(tput setaf 2) + crf_orange=$(tput setaf 3) + crf_blue=$(tput setaf 4) + crf_pink=$(tput setaf 5) + crf_cyan=$(tput setaf 6) + crf_white=$(tput setaf 7) + # bold foreground + cbf_red=$(tput bold; tput setaf 1) + cbf_green=$(tput bold; tput setaf 2) + cbf_orange=$(tput bold; tput setaf 3) + cbf_blue=$(tput bold; tput setaf 4) + cbf_pink=$(tput bold; tput setaf 5) + cbf_cyan=$(tput bold; tput setaf 6) + cbf_white=$(tput bold; tput setaf 7) + + # + # Load better colors. + # + if [ -f ~/.dir_colors ]; then + eval $(dircolors ~/.dir_colors) + fi fi +# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Prompt. +# +if [[ "$PS1" ]]; then + export PROMPT_COMMAND=__prompt_command + function __prompt_command() + { + local es=$? + if [ $es -eq 0 ]; then + local exit_code_color=$crf_green + else + local exit_code_color=$crf_red + fi + + local git_branch=$(git rev-parse --abbrev-ref HEAD 2> /dev/null | tr -d ' ') + local svn_rev=$(svn info . 2> /dev/null | awk -F ':' '/Revision:/ { print $2 }') + +# PS1="$cbf_blue[$exit_code_color\#$cbf_blue]" # command counter + PS1="$cbf_blue[$cbf_blue$?$cbf_blue]\n" # command counter +# PS1+=" " + PS1+="$cbf_white\u$crf_blue@$cbf_white\h$cbf_white" # username@host +# PS1+=":" +# PS1+="$crf_green\w" # working dir + + if [ -n "$git_branch" ]; then + PS1+=" " + PS1+="$cbf_blue[${cbf_white}$cbf_orange$git_branch$cbf_blue]" + fi + + if [ -n "$svn_rev" ]; then + PS1+=" " + PS1+="$cbf_blue[${cbf_white}$cbf_orange$svn_rev$cbf_blue]" + fi + + PS1+=">" + +# PS1+="$c_reset\n" + } + + # are we an interactive shell? +# if [ "$PS1" ]; then +# PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"' +# # Turn on checkwinsize +# shopt -s checkwinsize +# [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " +# fi + +fi + + # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # # User specific environment and startup programs diff --git a/config/.dir_colors b/config/.dir_colors new file mode 100644 index 0000000..8fb0fb4 --- /dev/null +++ b/config/.dir_colors @@ -0,0 +1,300 @@ +# Dark 256 color solarized theme for the color GNU ls utility. + # Used and tested with dircolors (GNU coreutils) 8.5 + # + # @author {@link http://sebastian.tramp.name Sebastian Tramp} + # @license http://sam.zoy.org/wtfpl/ Do What The Fuck You Want To Public License (WTFPL) + # + # More Information at + # https://github.com/seebi/dircolors-solarized + + # Term Section + TERM Eterm + TERM ansi + TERM color-xterm + TERM con132x25 + TERM con132x30 + TERM con132x43 + TERM con132x60 + TERM con80x25 + TERM con80x28 + TERM con80x30 + TERM con80x43 + TERM con80x50 + TERM con80x60 + TERM cons25 + TERM console + TERM cygwin + TERM dtterm + TERM dvtm + TERM dvtm-256color + TERM eterm-color + TERM fbterm + TERM gnome + TERM gnome-256color + TERM jfbterm + TERM konsole + TERM konsole-256color + TERM kterm + TERM linux + TERM linux-c + TERM mach-color + TERM mlterm + TERM putty + TERM putty-256color + TERM rxvt + TERM rxvt-256color + TERM rxvt-cygwin + TERM rxvt-cygwin-native + TERM rxvt-unicode + TERM rxvt-unicode256 + TERM rxvt-unicode-256color + TERM screen + TERM screen-16color + TERM screen-16color-bce + TERM screen-16color-s + TERM screen-16color-bce-s + TERM screen-256color + TERM screen-256color-bce + TERM screen-256color-s + TERM screen-256color-bce-s + TERM screen-256color-italic + TERM screen-bce + TERM screen-w + TERM screen.linux + TERM screen.xterm-256color + TERM st + TERM st-meta + TERM st-256color + TERM st-meta-256color + TERM tmux + TERM tmux-256color + TERM vt100 + TERM xterm + TERM xterm-16color + TERM xterm-256color + TERM xterm-256color-italic + TERM xterm-88color + TERM xterm-color + TERM xterm-debian + TERM xterm-termite + + ## Documentation + # + # standard colors + # + # Below are the color init strings for the basic file types. A color init + # string consists of one or more of the following numeric codes: + # Attribute codes: + # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed + # Text color codes: + # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white + # Background color codes: + # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white + # + # + # 256 color support + # see here: http://www.mail-archive.com/bug-coreutils@gnu.org/msg11030.html) + # + # Text 256 color coding: + # 38;5;COLOR_NUMBER + # Background 256 color coding: + # 48;5;COLOR_NUMBER + + ## Special files + + NORMAL 00;38;5;244 # no color code at all + #FILE 00 # regular file: use no color at all + RESET 0 # reset to "normal" color + DIR 00;38;5;33 # directory 01;34 + LINK 00;38;5;37 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) + MULTIHARDLINK 00 # regular file with more than one link + FIFO 48;5;230;38;5;136;01 # pipe + SOCK 48;5;230;38;5;136;01 # socket + DOOR 48;5;230;38;5;136;01 # door + BLK 48;5;230;38;5;244;01 # block device driver + CHR 48;5;230;38;5;244;01 # character device driver + ORPHAN 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file + SETUID 48;5;160;38;5;230 # file that is setuid (u+s) + SETGID 48;5;136;38;5;230 # file that is setgid (g+s) + CAPABILITY 30;41 # file with capability + STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w) + OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky + STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable + # This is for files with execute permission: + EXEC 00;38;5;64 + + ## Archives or compressed (violet + bold for compression) + .tar 00;38;5;61 + .tgz 00;38;5;61 + .arj 00;38;5;61 + .taz 00;38;5;61 + .lzh 00;38;5;61 + .lzma 00;38;5;61 + .tlz 00;38;5;61 + .txz 00;38;5;61 + .zip 00;38;5;61 + .z 00;38;5;61 + .Z 00;38;5;61 + .dz 00;38;5;61 + .gz 00;38;5;61 + .lz 00;38;5;61 + .xz 00;38;5;61 + .bz2 00;38;5;61 + .bz 00;38;5;61 + .tbz 00;38;5;61 + .tbz2 00;38;5;61 + .tz 00;38;5;61 + .deb 00;38;5;61 + .rpm 00;38;5;61 + .jar 00;38;5;61 + .rar 00;38;5;61 + .ace 00;38;5;61 + .zoo 00;38;5;61 + .cpio 00;38;5;61 + .7z 00;38;5;61 + .rz 00;38;5;61 + .apk 00;38;5;61 + .gem 00;38;5;61 + + # Image formats (yellow) + .jpg 00;38;5;136 + .JPG 00;38;5;136 #stupid but needed + .jpeg 00;38;5;136 + .gif 00;38;5;136 + .bmp 00;38;5;136 + .pbm 00;38;5;136 + .pgm 00;38;5;136 + .ppm 00;38;5;136 + .tga 00;38;5;136 + .xbm 00;38;5;136 + .xpm 00;38;5;136 + .tif 00;38;5;136 + .tiff 00;38;5;136 + .png 00;38;5;136 + .PNG 00;38;5;136 + .svg 00;38;5;136 + .svgz 00;38;5;136 + .mng 00;38;5;136 + .pcx 00;38;5;136 + .dl 00;38;5;136 + .xcf 00;38;5;136 + .xwd 00;38;5;136 + .yuv 00;38;5;136 + .cgm 00;38;5;136 + .emf 00;38;5;136 + .eps 00;38;5;136 + .CR2 00;38;5;136 + .ico 00;38;5;136 + + # Files of special interest (base1) + .tex 00;38;5;245 + .rdf 00;38;5;245 + .owl 00;38;5;245 + .n3 00;38;5;245 + .ttl 00;38;5;245 + .nt 00;38;5;245 + .torrent 00;38;5;245 + .xml 00;38;5;245 + *Makefile 00;38;5;245 + *Rakefile 00;38;5;245 + *Dockerfile 00;38;5;245 + *build.xml 00;38;5;245 + *rc 00;38;5;245 + *1 00;38;5;245 + .nfo 00;38;5;245 + *README 00;38;5;245 + *README.txt 00;38;5;245 + *readme.txt 00;38;5;245 + .md 00;38;5;245 + *README.markdown 00;38;5;245 + .ini 00;38;5;245 + .yml 00;38;5;245 + .cfg 00;38;5;245 + .conf 00;38;5;245 + .h 00;38;5;245 + .hpp 00;38;5;245 + .c 00;38;5;245 + .cpp 00;38;5;245 + .cxx 00;38;5;245 + .cc 00;38;5;245 + .objc 00;38;5;245 + .sqlite 00;38;5;245 + .go 00;38;5;245 + .sql 00;38;5;245 + .csv 00;38;5;245 + + # "unimportant" files as logs and backups (base01) + .log 00;38;5;240 + .bak 00;38;5;240 + .aux 00;38;5;240 + .lof 00;38;5;240 + .lol 00;38;5;240 + .lot 00;38;5;240 + .out 00;38;5;240 + .toc 00;38;5;240 + .bbl 00;38;5;240 + .blg 00;38;5;240 + *~ 00;38;5;240 + *# 00;38;5;240 + .part 00;38;5;240 + .incomplete 00;38;5;240 + .swp 00;38;5;240 + .tmp 00;38;5;240 + .temp 00;38;5;240 + .o 00;38;5;240 + .pyc 00;38;5;240 + .class 00;38;5;240 + .cache 00;38;5;240 + + # Audio formats (orange) + .aac 00;38;5;166 + .au 00;38;5;166 + .flac 00;38;5;166 + .mid 00;38;5;166 + .midi 00;38;5;166 + .mka 00;38;5;166 + .mp3 00;38;5;166 + .mpc 00;38;5;166 + .ogg 00;38;5;166 + .opus 00;38;5;166 + .ra 00;38;5;166 + .wav 00;38;5;166 + .m4a 00;38;5;166 + # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions + .axa 00;38;5;166 + .oga 00;38;5;166 + .spx 00;38;5;166 + .xspf 00;38;5;166 + + # Video formats (as audio + bold) + .mov 00;38;5;166 + .MOV 00;38;5;166 + .mpg 00;38;5;166 + .mpeg 00;38;5;166 + .m2v 00;38;5;166 + .mkv 00;38;5;166 + .ogm 00;38;5;166 + .mp4 00;38;5;166 + .m4v 00;38;5;166 + .mp4v 00;38;5;166 + .vob 00;38;5;166 + .qt 00;38;5;166 + .nuv 00;38;5;166 + .wmv 00;38;5;166 + .asf 00;38;5;166 + .rm 00;38;5;166 + .rmvb 00;38;5;166 + .flc 00;38;5;166 + .avi 00;38;5;166 + .fli 00;38;5;166 + .flv 00;38;5;166 + .gl 00;38;5;166 + .m2ts 00;38;5;166 + .divx 00;38;5;166 + .webm 00;38;5;166 + # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions + .axv 00;38;5;166 + .anx 00;38;5;166 + .ogv 00;38;5;166 + .ogx 00;38;5;166