#!/bin/sh
#
# Script de lancement des applications courantes façons HiTech et BOFH.


VERSION="0.3.0"


########################################################################
# Commande par défaut :
#
if [ "$HOSTNAME" = "exether" ]; then
    MODE=3
else
    MODE=2
fi


########################################################################
# Polices de caractères :
#
do_setfont () {
    if [ $BIGSCREEN = 1 ]; then
        # eterm    => 830x730
        # [xa]term => 824x724
        #
        FONT="-fn -*-neep-bold-r-normal-*-20-*-*-*-*-*-iso8859-15"
        CHARWIDTH=10
        FONTHEIGHT=20
    else
        # eterm    => 666x550
        # [xa]term => 660x544
        #
        FONT="-fn -*-neep-bold-r-normal-*-14-*-*-*-*-*-iso8859-15"
        CHARWIDTH=8
        FONTHEIGHT=15
    fi
}


do_setsmallfont () {
    if [ $BIGSCREEN = 1 ]; then
        FONT="-fn -*-neep-medium-r-normal-*-14-*-*-*-*-*-iso8859-15"
        CHARWIDTH=8
        FONTHEIGHT=15
    else
        FONT="-fn -*-neep-medium-r-normal-*-11-*-*-*-*-*-iso8859-15"
        CHARWIDTH=6
        FONTHEIGHT=11
    fi
}


########################################################################
# Initialisations communes :
#
do_init800 () {
    # Définition de la taille
    #
    BIGSCREEN=0

    # Couleur de texte par défaut :
    #
    TEXTCOLOR="lightcyan"

    # Taille du dock/wharf :
    #
    DOCKWIDTH=65
    DOCKHEIGHT=0
}


do_init1280 () {
    # Définition de la taille
    #
    BIGSCREEN=1

    # Couleur de texte par défaut :
    #
    TEXTCOLOR="PaleTurquoise1"

    # Taille du dock/wharf :
    #
    DOCKWIDTH=75
    DOCKHEIGHT=0
}


do_initxterm () {
    LAUNCH="xterm -sb"
    BORDER=4
}


do_initeterm () {
    LAUNCH="eterm -sb -ombre"
    BORDER=10
}


do_initaterm () {
    LAUNCH="aterm -sb -ombre"
    BORDER=4
}


do_initcommon () {
    # Taille par défaut de l'xterm :
    #
    APPWIDTH=82
    APPHEIGHT=36

    #COULEURS="none rouge none bleu none cyan none magenta none"
    POSITION=""

    # Récupération des dimensions de l'écran :
    #
    SCREENDIMS=`xdpyinfo | grep dimensions | awk '{print $2}'`
    SCREENWIDTH=`echo $SCREENDIMS | cut -d x -f 1`
    SCREENHEIGHT=`echo $SCREENDIMS | cut -d x -f 2`
    if [ "$SCREENWIDTH" = "800" ]; then
        do_init800
    else
        do_init1280
    fi
    do_setfont
    case $MODE in
        1) do_initxterm;;
        2) do_initeterm;;
        3) do_initaterm;;
    esac
    LAUNCH="$LAUNCH -fg $TEXTCOLOR"
}


########################################################################
# Mise en place des applications :
#
do_mail  () {
    COMMAND="-id Messagerie -e pine -i -d 0"
}


do_news  () {
    COMMAND="-id Newsgroups -e slrn"
}


do_edit  () {
    COMMAND="-id Édition -e vim $2"
}


do_icq   () {
    COMMAND="-id ICQ -e micq"
}


do_irc   () {
    COMMAND="-id IRC -e xchat-text"
}


do_web   () {
    if [ "$2" != "" ]; then
        URL="$2"
    else
        URL="http://google.fr"
    fi
    COMMAND="-id Web -e /opt/w3m/bin/w3m $URL"
}


do_sweb  () {
    do_setsmallfont
    APPWIDTH=120
    APPHEIGHT=50
    do_web $2
}


do_prog  () {
    COMMAND="-id Programmation -e vim $2"
    do_setsmallfont
    if [ $BIGSCREEN = 1 ]; then
        APPWIDTH=84
        APPHEIGHT=67
        POSITION="+4+4"
    else
        APPWIDTH=85
        APPHEIGHT=53
        POSITION="+2+2"
    fi
}


do_xprog () {
    do_prog
    COMMAND="-id Programmation -e xem -nw $2"
}


do_zprog () {
    COMMAND="-id Programmation -e vim $2"
    do_setsmallfont
    APPWIDTH=109
    APPHEIGHT=49
}


do_view  () {
    COMMAND="-id Viewer -e less $2"
}


do_other () {
    COMMAND="-id Shell"
    while [ "$1" != "" ]; do
        COMMAND="$COMMAND $1"
        shift
    done
}



########################################################################
# Traitement des arguments :
#
do_parseargs () {
    DEBUG=0
    if [ "$1" = "-d" ]; then
        DEBUG=1
        shift
    else
        LAUNCH="$LAUNCH"
    fi

    COMMAND=""
    case "$1" in
        "mail")  do_mail  $*;;
        "news")  do_news  $*;;
        "edit")  do_edit  $*;;
        "icq")   do_icq   $*;;
        "irc")   do_irc   $*;;
        "web")   do_web   $*;;
        "sweb")  do_sweb  $*;;
        "prog")  do_prog  $*;;
        "xprog") do_xprog $*;;
        "zprog") do_zprog $*;;
        "view")  do_view  $*;;
        *)       do_other $*;;
    esac
}


########################################################################
# Gestion de la couleurs de transparence :
#
do_color () {
    COLOR=""
    #COLORS="none rouge none bleu none cyan none magenta none"
    #COLOR="none"
    #COLNUM=`echo $RANDOM | cut -c 6`
    #if [ $COLNUM -gt 0 ]; then
    #    COLOR=`echo "$COLORS" | cut -d " " -f $COLNUM`
    #fi
}


########################################################################
# Géométrie de la fenêtre :

# Taille de la fenêtre :
#
do_size () {
    # Taille de la décoration des fenêtres :
    #
    WINDECOX=4
    WINDECOY=34

    WINWIDTH=`echo "($APPWIDTH * $CHARWIDTH) + $BORDER + $WINDECOX" | bc`
    WINHEIGHT=`echo "($APPHEIGHT * $FONTHEIGHT) + $BORDER + $WINDECOY" | bc`
    SIZE="${APPWIDTH}x${APPHEIGHT}"
    if [ $DEBUG = 1 ]; then
        echo "($APPWIDTH * $CHARWIDTH) + $BORDER + $WINDECOX"
        echo "($APPHEIGHT * $FONTHEIGHT) + $BORDER + $WINDECOY"
        echo "SIZE : cars => $SIZE --- pix => ${WINWIDTH}x${WINHEIGHT}"
    fi
}

# Positionnement de la fenêtre :
#
do_position () {
    if [ "$POSITION" = "" ]; then
        # Création de la position X/Y :
        #
        POSX=`echo "($SCREENWIDTH - $DOCKWIDTH - $WINWIDTH)/2" | bc`
        POSY=`echo "($SCREENHEIGHT - $DOCKHEIGHT - $WINHEIGHT)/2" | bc`
        if [ $POSX -ge 0 ]; then
            POSX="+$POSX"
        fi
        if [ $POSY -ge 0 ]; then
            POSY="+$POSY"
        fi
        POSITION="$POSX$POSY"
    fi
}

# Géométrie complète :
do_geometry () {
    do_size
    do_position
    GEOMETRY="-g $SIZE$POSITION"
}


########################################################################
# PARTIE PRINCIPALE DU SCRIPT :
#
do_initcommon
do_parseargs $*
do_color
do_geometry


########################################################################
# Lancement de la commande :
#
if [ $DEBUG = 1 ]; then
    echo "$LAUNCH $FONT $COLOR $GEOMETRY $COMMAND"
else
    FONTHEIGHT=15
    $LAUNCH $FONT $COLOR $GEOMETRY $COMMAND
fi
