[couleur terminal] Support couleurs du terminal? (résolu)

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
djipey
Chu Ko Nu
Messages : 437
Inscription : sam. 04 juin 2011, 10:13

[couleur terminal] Support couleurs du terminal? (résolu)

Message par djipey »

Bonjour.

Je viens juste de passer de debian à Archlinux. Comme gestionnaire de fenêtres, j'ai choisi openbox en standalone.
Pour ne pas être trop dépaysé, j'installe gnome-terminal comme terminal.

Sauf que là, un problème: pas de couleur, le prompt est en noir et blanc. J'essaie de voir ce que donne Vim, et là ça va, j'ai de la couleur. Je pense qu'il doit y avoir des différences au niveau du bashrc entre Debian et Arch.

Est ce que vous pourriez m'aider?

Je vous mets mon .bashrc:

Code : Tout sélectionner

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
#très bon tuto: http://www.bordel-de-nerd.net/2010/08/configurer-son-terminal-bash/#content
#sur le site du zéro: http://www.siteduzero.com/tutoriel-3-38192-personnalisez-votre-shell-en-couleur.html

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

#export PATH=$PATH:/home/djipey/SOFT/amber9 #on ajoute ce répertoire au PATH
#export 'AMBERHOME=/home/djipey/SOFT/amber9'
#export PATH=$PATH:/home/djipey/SOFT/gamess

############################################################################################################################################################
#			VARIABLES
###############################################################################################################################################

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
export HISTSIZE=10000 # taille de l'historique 
export HISTFILESIZE=${HISTSIZE}
export HISTIGNORE="ls:cd:[bf]g:exit" # ignorer les lignes w/ ls, cd, ...
export HISTCONTROL="ignoreboth" # ignorer les doublons et les commandes qui commencent par un espace
export HISTTIMEFORMAT="[ %d/%m/%Y %H:%M:%S ]" # donne la date des commandes dans l'historique. Dans .bash_history, la date est donnée en seconde depuis 01/01/1970
# append to the history file, don't overwrite it


############################################################################################################################################################
#			SHOPTS
############################################################################################################################################################

shopt -s cdspell # Pour que bash corrige automatiquement les fautes de frappes ex: cd ~/fiml sera remplacé par cd ~/film
shopt -s checkwinsize # Pour que bash vérifie la taille de la fenêtre après chaque commande
shopt -s cmdhist # Pour que bash sauve dans l'historique les commandes qui prennent plusieurs lignes sur une seule ligne.
shopt -s dotglob # Pour que bash montre les fichiers qui commencent par un .
shopt -s expand_aliases # # Pour que bash montre la commande complete au lieu de l'alias
shopt -s extglob # Pour que bash, interprète les expressions génériques
shopt -s histappend # Pour que bash ajoute au lieu d'écraser dans l'histo
shopt -s hostcomplete # Pour que bash tente de résoudre le nom pour les ip suivis d'un @
shopt -s nocaseglob # Pour que bash ne soit pas sensible a la casse
shopt -s cdable_vars # utilisé pour la fonction bookmarks pour que bash n'ai pas besoin de $ pour sourcer le fichier .dirs
shopt -s nocasematch
shopt -s shift_verbose




######################################################################################################################################################
###### COMMAND PROMPT & CLI ###### COMMAND PROMPT & CLI ###### COMMAND PROMPT & CLI ###### COMMAND PROMPT & CLI ###### COMMAND PROMPT & CLI ######
######################################################################################################################################################


# 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


# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac

# 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


#txtrst='\e[0m'    # Text Reset
#txtbluj="\[\e[01;34m\]" # Bleu prompt
#txtarobasc="\[\e[05;33m\]" # Orange clignote prompt
#txtarobas="\[\e[02;33m\]" # Orange prompt
#txtvertj="\[\e[01;32m\]" # Vert fluo prompt
#txtjaunj="\[\e[01;33m\]" # Jaune prompt
#txtbleucj="\[\033[1;36m\]" # Bleu clair prompt
#txtheure="\[\e[02;36m\]" # turquoise, heure prompt
#txtgrisj="\[\e[30;1m\]" # gris prompt


function truncate_pwd # Fonction pour remplacer PWD par {...} si > 1/3 de l'écran
{
  newPWD="${PWD/#$HOME/~}"
  local pwdmaxlen=$((${COLUMNS:-20}/3))
  if [ ${#newPWD} -gt $pwdmaxlen ]
  then
    newPWD=" {...} ${newPWD: -$pwdmaxlen}"
  fi
}
 

 
#pour changer les couleurs du prompt, penser à mettre un antislah devant chaque bloc couleur. Tuto à l'adresse: http://www.siteduzero.com/tutoriel-3-38192-personnalisez-votre-shell-en-couleur.html
PROMPT_COMMAND=truncate_pwd # Executé avant chaque commande

if [ "$color_prompt" = yes ]; then
    export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u\[\033[00m\]\[\033[01;31m\]@\[\033[00m\]\[\033[00m\]\[\033[01;34m\]\h\[\033[00m\]:\[\033[01;32m\]\t\[\033[00m\]:\[\033[01;45m\]\w\[\033[00m\]\$ '
else
    export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt


# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac




############################################################################################################################################################
#			ALIAS
############################################################################################################################################################

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    eval "`dircolors -b`"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    #alias fgrep='fgrep --color=auto'
    #alias egrep='egrep --color=auto'
fi

alias cp="cp -i"  # Confirmer avant d'écraser un fichier existant
alias g='nohup gedit > /dev/null'
alias v='vim'
alias ll='ls -lh'
alias killa='killall'

if type -P htop >/dev/null; then
  alias top='htop' # toujours utiliser htop si installé
fi


alias corbeille='rm -rvf ~/.local/share/Trash/*'
alias caps='caps -n 12 -j -H 200'
alias conka='conky -c ~/conky/conkyrc &'
alias redshift='nohup gtk-redshift -l 43.7:7.26 -t 6000:4100'
alias up='plowup -a djipey:stupta'
alias ports="lsof -i -n -P" # Voir les process qui utilisent une connection internet


alias install='sudo apt-get install --no-install-recommends' 
alias remove='sudo apt-get autoremove'
alias search='apt-cache search'
alias update='sudo apt-get update'
alias upgrade='sudo apt-get dist-upgrade'
alias syn='sudo synaptic'

alias protect='sudo chmod -r "double des torrents" save_prog torrent incomplete videos/.OK infotorrent completed_downloads/ completed_downloads/.OK /media/disk-2/.SystemSave /media/base-2/.SystemSave /media/disk-2/.Trash-1000 /media/base-2/.Trash-1000'
alias disprotect='sudo chmod +r "double des torrents" save_prog torrent incomplete videos/.OK infotorrent completed_downloads/ completed_downloads/.OK /media/disk-2/.SystemSave /media/base-2/.SystemSave /media/disk-2/.Trash-1000 /media/base-2/.Trash-1000'


alias starswars='telnet towel.blinkenlights.nl'
alias matrix='cmatrix'
alias train='sl'
alias flow='~/SOFT/flow/./flow'

############################################################################################################################################################
#			FONCTIONS
###############################################################################################################################################

gms () { rm -v ~/scr/*; /home/djipey/SOFT/gamess/rungms $1 | tee $2 & \; ;} # vide ~/scr, lance Gamess avec son script de lancement rungms, et lit le log dans la console

#place un lien physique des fichiers modifiés depuis $1 jours dans le dossier recent/
recent () { rm -r recent/ ; mkdir recent/ ; find -mtime -$1 -exec ln {} recent/ \; ;}

# myip - Obtenir IP publique
# usage: myip
myip(){ wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//';}

# clock - Affiche une horloge simple
# usage: clock
clock() { while true;do clear;echo -e "\e[30;1m===========\e[0m\e[01;33m";date +"%r";echo -e "\e[0m\e[30;1m===========\e[0m";sleep 1;done; }

# télecharger un site complet avec Wget
# Les pages seront mise en html (E), les liens seront transformés (k) et c'est récursif (r) sur 5 niveaux maxi (l5)
# Usage wdl <URL>
# tip : utiliser servethis pour servir les pages télechargées
wdl(){ wget -r -l5 -k -E ${1} && cd $_;}

# Renomme en minuscules
# usage tolowercase <*.txt>
toLowercase() { for i in "$@"; do mv -f "$i" "`echo $i| tr [A-Z] [a-z]`" &>/dev/null; done }
 
# Renomme en majuscules
# usage toupercase <*.txt>
toUpercase() { for i in "$@"; do mv -f "$i" "`echo $i| tr [a-z] [A-Z]`" &>/dev/null; done }

# remplacer les espaces par des _
# usage underscorespace <*.txt>
underscorespace() { for i in "$@"; do mv "$i" "`echo $i| tr ' ' '_'`" &>/dev/null; done }


# extract - Extraire une archive
# usage: ex <fichier>
extract ()
{
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2)   tar xjvf $1   ;;
      *.tar.gz)    tar xzvf $1   ;;
      *.bz2)       bunzip2 $1   ;;
      *.rar)       unrar x $1     ;;
      *.gz)        gunzip $1    ;;
      *.tar)       tar xvf $1    ;;
      *.tbz2)      tar xjvf $1   ;;
      *.tgz)       tar xzvf $1   ;;
      *.zip)       unzip $1     ;;
      *.Z)         uncompress $1;;
      *.7z)        7z x $1      ;;
      *)           echo -e "${bldred}'$1' ne peut pas etre decompresse avec ex()" ;;
    esac
  else
    echo -e "\n${bldred}'$1' n'est pas un fichier valide"
  fi
}


###### magic square generator (odd-order squares only!)
#En mathématiques, un carré magique d'ordre n est composé de n2 nombres entiers généralement distincts, écrits sous la forme d'un tableau carré. 
#Ces nombres sont disposés de manière à ce que leurs sommes sur chaque rangée, sur chaque colonne et sur chaque diagonale principale soient égales.
msquare  ()
{
# Author: mendel cooper
EVEN=2
MAXSIZE=31   # 31 rows x 31 cols.
E_usage=90   # Invocation error.
dimension=
declare -i square
function usage_message()
{
  echo "Usage: $0 square-size"
  echo "   ... where \"square-size\" is an ODD integer"
  echo "       in the range 3 - 31."  #  Works for squares up to order 159
}
function calculate()       # Here's where the actual work gets done.
{
  local row col index dimadj j k cell_val=1
  dimension=$1
  let "dimadj = $dimension * 3"; let "dimadj /= 2"   # x 1.5, then truncate.
  for ((j=0; j < dimension; j++))
  do
    for ((k=0; k < dimension; k++))
    do  # Calculate indices, then convert to 1-dim. array index.
        # Bash doesn't support multidimensional arrays. Pity.
      let "col = $k - $j + $dimadj"; let "col %= $dimension"
      let "row = $j * 2 - $k + $dimension"; let "row %= $dimension"
      let "index = $row*($dimension) + $col"
      square[$index]=cell_val; ((cell_val++))
    done
  done
}     # Plain math, no visualization required.
function print_square()               # Output square, one row at a time.
{
  local row col idx d1
  let "d1 = $dimension - 1"   # Adjust for zero-indexed array.
  for row in $(seq 0 $d1)
  do
    for col in $(seq 0 $d1)
    do
      let "idx = $row * $dimension + $col"
      printf "%3d " "${square[idx]}"; echo -n "  "
    done   # Displays up to 13-order neatly in 80-column term window.
    echo   # Newline after each row.
  done
}
if [[ -z "$1" ]] || [[ "$1" -gt $MAXSIZE ]]
then
  usage_message
fi
let "test_even = $1 % $EVEN"
if [ $test_even -eq 0 ]
then           # Can't handle even-order squares.
  usage_message
fi
calculate $1
print_square   # echo "${square[@]}"   # DEBUG
}



###### generate prime numbers, without using arrays.
primes ()
{
LIMIT=1000                    # Primes, 2 ... 1000.
Primes()
{
 (( n = $1 + 1 ))             # Bump to next integer.
 shift                        # Next parameter in list.
#  echo "_n=$n i=$i_"
 if (( n == LIMIT ))
 then echo $*
 return
 fi
 for i; do                    # "i" set to "@", previous values of $n.
#   echo "-n=$n i=$i-"
   (( i * i > n )) && break   # Optimization.
   (( n % i )) && continue    # Sift out non-primes using modulo operator.
   Primes $n $@               # Recursion inside loop.
   return
   done
   Primes $n $@ $n            #  Recursion outside loop.
                              #  Successively accumulate
			      #+ positional parameters.
                              #  "$@" is the accumulating list of primes.
}
Primes 1
}

#affiche des stats sur les commandes
function statsh ()
{
    cut -f1 -d" " .bash_history | sort | uniq -c | sort -nr | head -n 30
}


######recherche la définition d'un mot
function define() {
  local LNG=$(echo $LANG | cut -d '_' -f 1)
  local CHARSET=$(echo $LANG | cut -d '.' -f 2)
  lynx -accept_all_cookies -dump -hiddenlinks=ignore -nonumbers -assume_charset="$CHARSET" -display_charset="$CHARSET" "http://www.google.com/search?hl=${LNG}&q=define%3A+${1}&btnG=Google+Search" | grep -m 5 -C 2 -A 5 -w "*" > /tmp/define
  if [ ! -s /tmp/define ]; then
    echo "Sorry, google doesn't know this one..."
    rm -f /tmp/define
    return 1
  else
    cat /tmp/define | grep -v Search
    echo ""
  fi
  rm -f /tmp/define
  return 0
}



###### convert seconds to minutes, hours, days, and etc.
# inputs a number of seconds, outputs a string like "2 minutes, 1 second"
# $1: number of seconds
seconds-convert-part ()
{
    local unit=$1
    local name=$2
    if [ $unit -ge 2 ]; then
        echo " ${unit} ${name}s"
    elif [ $unit -ge 1 ]; then
        echo " ${unit} ${name}"
    else
        echo ""
    fi
}
sec2all ()
{
    local millennia=$((0))
    local centuries=$((0))
    local years=$((0))
    local days=$((0))
    local hour=$((0))
    local mins=$((0))
    local secs=$1
    local text=""
    # convert seconds to days, hours, etc
    millennia=$((secs / 31536000000))
    secs=$((secs % 31536000000))
    centuries=$((secs / 3153600000))
    secs=$((secs % 3153600000))
    years=$((secs / 31536000))
    secs=$((secs % 31536000))
    days=$((secs / 86400))
    secs=$((secs % 86400))
    hour=$((secs / 3600))
    secs=$((secs % 3600))
    mins=$((secs / 60))
    secs=$((secs % 60))
    # build full string from unit strings
    text="$text$(seconds-convert-part $millennia "millennia")"
    text="$text$(seconds-convert-part $centuries "century")"
    text="$text$(seconds-convert-part $years "year")"
    text="$text$(seconds-convert-part $days "day")"
    text="$text$(seconds-convert-part $hour "hour")"
    text="$text$(seconds-convert-part $mins "minute")"
    text="$text$(seconds-convert-part $secs "second")"
    # trim leading and trailing whitespace
    text=${text## }
    text=${text%% }
    # special case for zero seconds
    if [ "$text" == "" ]; then
        text="0 seconds"
    fi
    # echo output for the caller
    echo ${text}
}




# Cut last n lines in file, 10 by default	 #
function cuttail()
{
    nlines=${2:-10}
    sed -n -e :a -e "1,${nlines}!{P;N;D;};N;ba" $1
}



###### generate a random password
#   $1 = number of characters; defaults to 32
#   $2 = include special characters; 1 = yes, 0 = no; defaults to 1
# copyright 2007 - 2010 Christopher Bratusek
function randompw() {
	if [[ $2 == "!" ]]; then
		echo $(cat /dev/urandom | tr -cd '[:graph:]' | head -c ${1:-32})
	else	echo $(cat /dev/urandom | tr -cd '[:alnum:]' | head -c ${1:-32})
	fi
}



###### ... with pattern $1 in name and Execute $2 on it
function fe() { find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \;  ; }



############################################################################################################################################################
#			AUTO-COMPLETION
############################################################################################################################################################

#copier  "set completion-ignore-case on" dans ~/.inputrc pour rendre l'autocomplétion insensible à la casse
#

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

#complétion en sudo
complete -cf sudo

#complétion des domaines ssh
if [ -f ~/.ssh/known_hosts ]; then
  SSH_COMPLETE=( $(cat ~/.ssh/known_hosts | \
  cut -f 1 -d ' ' | \
  sed -e s/,.*//g | \
  uniq | \
  egrep -v [0123456789]) )
  complete -o default -W "${SSH_COMPLETE[*]}" ssh
fi



Dernière modification par djipey le sam. 18 juin 2011, 19:57, modifié 2 fois.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [couleur terminal] Support couleurs du terminal? (en co

Message par tuxce »

arch configure à peu près rien du tout :)
Si tu veux de la couleur dans le prompt, il faut définir la var PS1 avec de la couleur, par exemple:

Code : Tout sélectionner

PS1="\[\e[0;36m\]\\w\[\e[1;32m\] \\\$\[\e[0m\]"
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [couleur terminal] Support couleurs du terminal?

Message par oktoberfest »

J'aime beaucoup les fonctions de carré magique et de nombre premier, c'est vrai qu'on en a souvent besoin :humour:
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
djipey
Chu Ko Nu
Messages : 437
Inscription : sam. 04 juin 2011, 10:13

Re: [couleur terminal] Support couleurs du terminal?

Message par djipey »

Je les trouve sympas ces fonctions :)

Mais je la définis la variable PS1 (ligne 110):

Code : Tout sélectionner

export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u\[\033[00m\]\[\033[01;31m\]@\[\033[00m\]\[\033[00m\]\[\033[01;34m\]\h\[\033[00m\]:\[\033[01;32m\]\t\[\033[00m\]:\[\033[01;45m\]\w\[\033[00m\]\$ '
Bon maintenant que tu le dis, il y a un debian chroot au milieu, je ne sais pas si ça va..
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [couleur terminal] Support couleurs du terminal?

Message par tuxce »

Tu vois bien que la déclaration est à l'intérieur d'un "if" (dont le test dépend de $TERM) :)
Il faut pas se trimbaler avec un .bashrc de ~400 lignes surtout si on a perdu sa logique : KISS
djipey
Chu Ko Nu
Messages : 437
Inscription : sam. 04 juin 2011, 10:13

Re: [couleur terminal] Support couleurs du terminal?

Message par djipey »

Vrai. Mais il y a des morceaux de ce bashrc qui datent d'il y a très longtemps, je le modifiais au fur et à mesure sans regarder l'ensemble. J'ai récupéré ma couleur en mettant mon morceau de PS1 en dehors des tests (et j'ai viré les tests, vu qu'ils ne me servaient pas).
Répondre