#!/bin/sh
#
# Script de lancement de Eterm avec mes options préférées :)


# Constantes et débogage
#
VRAI=1
FAUX=0
DEBUG=$FAUX


# Commande par défaut :
#
ETERM="/usr/bin/Eterm"
ETERM_DEF_OPTS="--select-line --menubar off --login-shell off"

XTERM="/usr/X11R6/bin/xterm"
XTERM_DEF_OPTS=""


# Constantes des modes par défaut :
GEOM="80x24"
TYPE=`basename $0`

# Mode suivant la machine :
#
MODE=`xdpyinfo | grep dimensions | awk '{print $2}'`

# Options initiales par défaut :
#
BG=$FAUX
SB=$VRAI
LIGNESDEF=10000
TINTE="0xffffff"
POLICE="7x13" # 7x13 par défaut
LIGNES=$LIGNESDEF
OMBRE=""
COULEUR=""
FGC=""
BGC=""
TAILLE="default"
OPTIONS=""
TITLE=""
USRGEOM=""


# Traitement des paramètres
#
NEXT=0;
for arg in $*; do
  case "$arg" in
    "-debug")
      DEBUG=$VRAI;;
    "x")
      TYPE="xterm";;
    "rouge"|"vert"|"bleu"|"cyan"|"violet"|"magenta"|"jaune"|"none")
      COULEUR=$arg;;
    "minuscule"|"petit"|"normal"|"grand"|"géant")
      TAILLE=$arg;;
    "lcd")
      COULEUR="lcd"
      SB=$FAUX;;
    "casio")
      COULEUR="casio"
      SB=$FAUX;;
    "-id")
      NEXT=1;;
    "-ombre")
      OMBRE="--shade 30";;
    "fond"|"-f")
      BG=$VRAI;;
    "-g")
      NEXT=2;;
    "-fg")
      NEXT=3;;
    "-bg")
      NEXT=4;;
    "-fn")
      NEXT=5;;
    "-sl")
        if [ $LIGNES = 0 ]; then
            LIGNES=$LIGNESDEF
        else
            LIGNES=0
        fi;;
    "-sb")
      SB=$FAUX
      LIGNES=0;;
    "-aide"|"-help"|"-h")
      echo "Liste des options supplémentaires acceptées par eterm :"
      echo " 1. Couleurs"
      echo "    rien ou 'none'        : transparent simple"
      echo "    'rouge'               : fond transparent rouge"
      echo "    'vert'                : fond transparent vert"
      echo "    'bleu'                : fond transparent bleu"
      echo "    'cyan'                : fond transparent cyan"
      echo "    'violet' ou 'magenta' : fond transparent violet"
      echo "    'jaune'               : fond transparent jaune"
      echo " 2. Ombre"
      echo "    -ombre                : ombre le fond de 20%"
      echo " 3. Taille de police  (MODE : 800x600 | 1280x1024"
      echo "    'minuscule'           : 5x8       6x10"
      echo "    'petit'               : 6x10      6x13"
      echo "    'normal'              : 6x13      7x13"
      echo "    'grand'               : 7x13      9x15"
      echo "    'géant'               : 9x15      10x20"
      echo " 4. Divers"
      echo "    'fond' ou '-f'        : mode fond d'écran"
      echo "    'x'                   : xterm à la place"
      echo "    'lcd'                 : apparence écran lcd"
      echo "    'casio'               : apparence écran de montre casio rétroéclairé"
      echo "    -g                    : géométrie"
      echo "    -sb                   : pas de scrollbar"
      echo "    -fg et -bg            : changent les couleurs de texte et de fond"
      echo "    -fn                   : police à utiliser"
      echo "    -sl                   : lignes de buffer à garder"
      echo "    '-id'                 : titre à donner à la fenêtre"
      echo "    '-debug'              : mode débogage"
      echo " 5. Aide"
      echo "    -aide ou -help ou -h  : cette aide"
      echo
      exit;;
    *)
      case $NEXT in
        1) TITLE="$arg";;
        2) USRGEOM="$arg";;
        3) FGC="$arg";;
        4) BGC="$arg";;
        5) POLICE="$arg";;
        *) OPTIONS="$OPTIONS $arg"
      esac
      NEXT=0
  esac
  if [ $DEBUG = $VRAI ]; then
    echo "ARGUMENT : $arg"
  fi
done


# Traitement des dimensions de police et d'écran :
#
if [ $DEBUG = $VRAI ]; then
  echo "TRAITEMENT DES TAILLE DE POLICE ET DIMENSIONS D'ÉCRAN..."
fi
if [ "$POLICE" = "" ]; then
  case "$TAILLE" in
    "minuscule") POLICE="6x10";;
    "petit")     POLICE="6x13";;
    "normal")    POLICE="7x13";;
    "grand")     POLICE="9x15";;
    "géant")     POLICE="10x20";;
    "default")   POLICE="-*-neep-medium-r-normal-*-11-*-*-*-*-*-iso8859-15"
  esac

  if [ "$MODE" = "800x600" ]; then
    case "$TAILLE" in
      "minuscule") BGGEOM="120x59+0+0";;#BGGEOM="158x74+0+0";;
      "petit")     BGGEOM="120x45+2+2";;#BGGEOM="132x59+0+0";;
      "normal")    BGGEOM="103x45+2+2";;#BGGEOM="132x46+0+0";;
      "grand")     BGGEOM="80x39+2+2";;#BGGEOM="113x46+0+0";;
      "géant")     BGGEOM="79x29+0+0";;#BGGEOM="88x40+0+0";;
    esac
  else
    case "$TAILLE" in
      "minuscule") BGGEOM="212x102+0+0";;
      "petit")     BGGEOM="212x78+0+0";;
      "normal")    BGGEOM="181x78+0+0";;
      "grand")     BGGEOM="141x68+0+0";;
      "géant")     BGGEOM="127x51+0+0";;
    esac
  fi
fi


# Traitement de la couleur donnée en paramètre :
#
if [ $DEBUG = $VRAI ]; then
  echo "TRAITEMENT DE LA COULEUR..."
fi
case "$COULEUR" in
  "rouge"|"red")      TINTE=0xff8080;;
  "vert"|"green")     TINTE=0x80ff80;;
  "bleu"|"blue")      TINTE=0x8080ff;;
  "cyan")             TINTE=0x80ffff;;
  "violet"|"magenta") TINTE=0xff80ff;;
  "jaune"|"yellow")   TINTE=0xffff80;;
  "lcd")              TINTE=\#7E9E69; TEXTE="grey24"; XTERM_DEF_OPTS="";;
  "casio")            TINTE="DeepSkyBlue2"; TEXTE="black"; XTERM_DEF_OPTS="";;
  "none")             TINTE="0xffffff";;
  *)                  TINTE="0xffffff";;
esac


# Traitement du mode «mise en fond»
#
if [ $DEBUG = $VRAI ]; then
  echo "TRAITEMENT DU MODE « MISE EN FOND »..."
fi
if [ "$USRGEOM" != "" ]; then
  GEOM=$USRGEOM
fi
if [ $BG = $VRAI ]; then
  if [ "$TYPE" = "eterm" ]; then
    BACK="-x"
  else
    BACK=""
  fi
  SB=$FAUX
  GEOM="$BGGEOM"
else
  BACK=""
fi


# Création de la ligne de commande finale
#
if [ $DEBUG = $VRAI ]; then
  echo "CRÉATION DE LA LIGNE DE COMMANDE..."
fi
if [ "$TYPE" = "eterm" ]; then
  TERM="$ETERM"
  # Mise en forme des options pour inclusion :
  GEOM="--geometry $GEOM"
  POLICE="-F $POLICE"
  SCROLL="--scrollbar on"
  LIGNES=$LIGNESDEF
  if [ $SB = $FAUX ]; then
    SCROLL="--scrollbar off"
    #LIGNES=0 POURQUOI DONC ???
  fi
  LIGNES="-L $LIGNES"
  if [ "$COULEUR" = "lcd" -o "$COULEUR" = "casio" ]; then
    TEXTE="-f $TEXTE -c $TEXTE"
    TINTE="-b $TINTE"
  else
    if [ "$FGC" != "" ]; then
      TEXTE="-f $FGC -c $FGC"
    else
      TEXTE="--cursor-color SpringGreen"
    fi
    TINTE="--trans --tint $TINTE"
  fi
  if [ "$TITLE" != "" ]; then
    TOPT="-T $TITLE -n $TITLE --icon-name $TITLE"
  else
    TOPT=""
  fi
  TERM_OPTS="$ETERM_DEF_OPTS $GEOM $POLICE $TEXTE $TINTE"
  TERM_OPTS="$TERM_OPTS $LIGNES $BACK $OMBRE $SCROLL $TOPT"
else
  TERM="$XTERM"
  # Mise en forme des options pour inclusion :
  GEOM="-geometry $GEOM"
  POLICE="-fn $POLICE"
  if [ "$COULEUR" = "lcd" -o "$COULEUR" = "casio" ]; then
    TEXTE="-fg $TEXTE"
    TINTE="-bg $TINTE"
  else
    if [ "$FGC" != "" ]; then
      TEXTE="-fg $FGC -cr $FGC"
    else
      TEXTE="-fg white -cr SpringGreen"
    fi
    if [ "$BGC" != "" ]; then
      TINTE="-bg $BGC -bd $BGC"
    else
      TINTE="-bg black -bd SpringGreen"
    fi
  fi
  SCROLL="+sb"
  if [ $SB = $VRAI ]; then
    SCROLL="-rightbar -sb"
    # LIGNES=$LIGNESDEF NON : déjà réglé !
  fi
  LIGNES="-sl $LIGNES"
  if [ "$TITLE" != "" ]; then
    TOPT="-T $TITLE -n $TITLE -name $TITLE"
  else
    TOPT=""
  fi
  TERM_OPTS="$XTERM_DEF_OPTS $GEOM $POLICE $TEXTE $TINTE"
  TERM_OPTS="$TERM_OPTS $LIGNES $BACK $SCROLL $TOPT"
fi
CMD="$TERM $TERM_OPTS $OPTIONS"


# Lancement de l'émulateur de terminal
#
if [ $DEBUG = $VRAI ]; then
  echo $CMD
else
  $CMD &
fi
