Avoir la plus belle console
Le 5 avril 2006 à 02:48, 3ième version du billet (Lien mort).

La console est un élément central sous *nix. Pas par plus nostalgie que par l'extraordinaire puissance des commandes disponibles par ce biais. Les interface graphique montrent leur force pour toutes ces tâches courantes ou très visuelles (ex. traitement de texte) mais la ligne de commande reste la plus efficace pour traiter les milliers de besoins uniques ou particuliers.

Donc cette console, on l'utilise souvent alors autant la bichonner. Ce qui suit n'a au fond rien de spécifique au Zaurus. Il s'agit de paramétrage propre à X11 connus de tout utilisateur de ce système. Sauf que ce sont ces choses là que je passait mon temps à rechercher et qu'il me paraissait donc intéressant de regrouper.

Historique (tout afficher)
  • v3 - Lien mort (2008-10-01 13:06)
  • v2 - Suppression de liens morts (2008-10-01 00:37)

Paramétrage des application par défaut

Une manière simple de prédéfinir l'aspect de certaines application X11 est de modifier le fichier ~/.Xdefaults. Ainsi pour avoir une belle console aterm transparente, on ajouteras :

aterm*loginShell:true
aterm*transparent:true
aterm*shading:50
aterm*background:Black
aterm*foreground:White
aterm*scrollBar:true
aterm*scrollBar_right:true
aterm*transpscrollbar:true
aterm*saveLines:32767
aterm*font:*-*-fixed-medium-r-normal--*-140-*-*-*-*-iso8859-1
aterm*boldFont:*-*-fixed-bold-r-normal--*-*-140-*-*-*-*-iso8859-1
aterm*geometry: 60x20+20+20

Ces lignes ne change pas que le fond (transparent:true) mais aussi les couleurs, le nombre de lignes du buffer arrière (32767 !! Wink et surtout, vital pour un Zaurus, la position d'affichage (60 lignes x 20 colonnes en coordonnées 20-20), et la taille des fontes. En effet, celles par défaut sont à peu prés illisible avec des yeux humains standards.

Un meilleure console

aterm/xterm ont le mérite d'exister mais il nous manque vite une console plus agréable, gérant par exemple les onglets. C'est ce que fait mrxvt. Attention cependant, cette console est beaucoup plus gourmande en mémoire ! Mais elle propose des onglets, une meilleur gestion des raccourcis clavier et les fontes TTF lissées. Pour ce dernier point, il est important d'installer les fontes bitstream-vera disponibles dans les feeds standards. Pour avoir un bon rendu visuel de mrxvt nous pouvons, comme pour aterm intégrer dans ~/.Xdefaults les valeurs par défaut suivantes (je ne l'ai pas inventé, c'est volé quelque part Smiling :

mrxvt*vt0*saveLines:   1000
mrxvt*initTermNumber:   1
mrxvt*protectSecondary:   true
mrxvt*loginShell:   true
mrxvt*scrollBar: false
mrxvt*transparent:   true
mrxvt*transparentScrollbar: true
mrxvt*transparentTabbar:    true
mrxvt*transparentMenubar:   true
mrxvt*foreground:   white
mrxvt*background:   darkblue
mrxvt*backgroundFade:   90
mrxvt*fading:      0
mrxvt*textShadow:   black
mrxvt*textShadowMode:   botright
mrxvt*tabForeground:   white
mrxvt*tabBackground:   darkblue
mrxvt*itabForeground:   white
mrxvt*itabBackground:   darkblue
mrxvt*tabPixmap:   false
mrxvt*syncTabTitle:   true
mrxvt*hideTabbar:   false
mrxvt*bottomTabbar:   true
mrxvt*windowsSwitch:   false
mrxvt*showMenu:      false
mrxvt*hideButtons: true
mrxvt*xft:      true
mrxvt*xftFont:      Bitstream Vera Sans Mono
mrxvt*xftmFont:      Bitstream Vera Sans Mono
mrxvt*xftAntialias:   true
mrxvt*xftWeight:   normal
mrxvt*xftSlant:      roman
mrxvt*xftHinting:   true
mrxvt*xftAutoHint:   true
mrxvt*xftGlobalAdvance:   true
mrxvt*xftWidth:      normal
mrxvt*xftRGBA:      rgb
mrxvt*xftSize:      14
mrxvt*cursorBlink:   false
mrxvt*geometry:      60x15+20+20
mrxvt*multichar_encoding:noenc
mrxvt*inputMethod:   SCIM
mrxvt*cursorColor:   lightblue
mrxvt*color0:      black
mrxvt*color1:      #40e0d0
mrxvt*color2:      #87cefa
mrxvt*color3:      #ffff00
mrxvt*color4:      #d1eeee
mrxvt*color5:      #eed8ae
mrxvt*color6:      #b4eeb4
mrxvt*color7:      gray
mrxvt*color8:      gray40
mrxvt*color9:      #ee6363
mrxvt*color10:      #c5f779
mrxvt*color11:      #fff796
mrxvt*color12:      #00b2ee
mrxvt*color13:      #cf9ebe
mrxvt*color14:      #71bebe
mrxvt*color15:      white

Avec ce paramétrage, mrxvt devrait beaucoup plus agréable à utiliser.

Installation de VIM

Pour les gens normaux il y a les éditeurs de texte graphique comme celui intégré (Scise) dans pdaXrom. Mais pour les fous, il y a vi. Vi est un éditeur de texte à mis chemin entre le TOC, la drogue et la masochisme. Il permet d'exécuter des opération très complexes sur du texte si l'on peut mémoriser les séquences de touches qui vont avec. Mais une fois que l'on est rentré dedans, c'est inscrit directement dans l'ADN et il est à peu alors impossible de s'en passer. On est condamné à taper des ESC :q! dans les traitements textes jusqu'à la fin de sa vie...

Maintenant que les gens normaux sont passé au chapitre suivant, nous allons remplacer le minable petit vi intégré à busybox par notre irremplaçable vim. Certes ce dernier est "un peu plus lourd" mais tellement plus stable et esthétique. Cette version est disponible ici. Pensez à installer aussi le paquet de syntaxe. Ensuite, comme me l'a gentiment expliqué dab, il suffira d'ajouter un fichier ~/.vimrc et d'y écrire syntax on pour avoir un vi avec coloration syntaxique !!! Pour terminer l'installation, vous pouvez remplacer l'ancien vi en tapant :

mv /bin/vi /bin/vi.old
ln -s /usr/bin/vim /bin/vi

Un prompt plus sympathique

Le prompt c'est le petit indicateur, $ ou # qui précède la ligne de commande. Son apparence est contrôlé par la variable PS1. Au début, c'est moche et tout gris, mais comme les consoles sont toutes compatibles ANSI, il est possible d'ajouter un peu de couleur et rendre ainsi ce prompt vraiment utile. Pour mieux visualiser les couleurs disponibles et leur code ANSI respectives, le petit script suivant est bien utile :

#!/bin/bash
#
#   This file echoes a bunch of color codes to the
#   terminal to demonstrate what's available.  Each
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a
#   test use of that color on all nine background
#   colors (default + 8 escapes).
#

T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m"
;

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done

Une séquence ANSI s'écrit en SH comme cela : \033[xx;yyy;zzz..m. \033 correspond au code ESCAPE, d'où le nom de "code d'échappement". xxx;yyy sont des chiffres séparés en paramètre de la séquence d'échappement. Le tout est terminé par m. Ainsi, le rouge s'écrit \033[0;31m.

Maintenant il fait juste savoir une chose pour ne pas "perdre" la console avec des codes qui ne sont pas "réellement" affichés. Il faut toujours encadrer un séquence d'échappement comme cela :\[SEQUENCE\]. Ce qui nous donne pour notre rouge \[\033[0;31m\].

Mettons cela en musique pour avoir un prompt, rouge...

export PS1="\[\033[0;31m\]C'est rouge\[\033[0m\] \$ "

Nous remarquons deux chose, tout d'abord une séquence \033[0m qui va terminer de jouer avec les couleurs en faisant un "reset" pour revenir aux couleurs par défaut (généralement, blanc...). Sinon, tout ce que l'on taperait serait aussi rouge que le prompt. Ensuite le \$ qui affiche simple.. le $ à la fin du prompt Wink.

Nous pouvons insérer des choses plus dynamiques qu'un simple texte dans le prompt, par exemple \@ pour l'heure, \h pour le nom de l'ordinateur, \w pour le chemin courant, \u pour l'utilisateur courant. Ainsi pour afficher l'heure en couleur, cela donne :

export PS1="\[\033[0;31m\]heure:\[\033[0;33m\]\@\[\033[0m\] \$ "

Maintenant pour que tout cela soit fait au démarrage d'une nouvelle session, il faut soit mettre notre code dans ~/.bashrc, soit plus simplement, en tant que root pour que tout le monde en profite à la fin du fichier /etc/profile (ou encore mieux, dans un fichier prompt.sh dans le dossier /etc/profile.d si votre système en a un. A titre d'exemple, ce qui suit est le code de mon prompt :

function prompt
{
        local RED="\[\033[0;31m\]"
        local WHITE="\[\033[1;39m\]"
        local GREEN="\[\033[0;32m\]"
        local YELLOW="\[\033[0;33m\]"
        local GRAY="\[\033[1;30m\]"
        local LIGHT_GRAY="\[\033[0;37m\]"
        local CYAN="\[\033[0;36m\]"
        local LIGHT_CYAN="\[\033[1;36m\]"
        local STOP="\[\033[0m\]"

        if [ $USER == "root" ] ; then
        export PS1="${RED}\u${WHITE}@$YELLOW\h$WHITE [$GREEN\W$WHITE] # ${STOP}"
        else
        export PS1="${YELLOW}\u${WHITE}@${YELLOW}\h${WHITE} [${GREEN}\w${WHITE}] \$ ${STOP}"
        fi
}

prompt

Commentaires

Dab, le 5 April, 2006 - 16:42

Mais tu ne t'arrête donc jamais ? Smiling)
le 5 Avril, 2006 - 00:48 doit en fait correspondre à 2h48, il me semble qu'il y a 2h de décalage dans les heures.

Ulhume, le 5 April, 2006 - 16:57

Euhh, si si je m'arrête, lorsque je n'ai plus rien trouvé de neuf Wink)) Ceci dit pour être honnête c'est une mise en forme de choses que je sauve ainsi pour ne plus avoir moi-même à retrouver. Je suis finalement le 1ier utilisateur de ma base de connaissance Smiling)

Pour le décalage faut que je vois cela. C'est peut-être un paramètre de Drupal qui m'a (encore) échappé Wink

Poster un nouveau commentaire

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Les derniers bavardages...