#!/bin/sh # # Functions for application launcher # Variables # TERMID="" TERMCOLOR="" TERMGEOM="" NOCOLORTERM=0 SWITCHFILE=~/.launch/.switch TERM_SWITCH="X" # E == Eterm, X == xterm if [ -f $SWITCHFILE ]; then TERM_SWITCH="E" fi if [ "$DISPLAY" != "" ]; then WORKSPACE=`getpwmws` fi if [ "$SHADE" = "" ]; then SHADE=18 fi MAXLN=10000 HOST=`cat /etc/hostname` # Geometry and fonts definitions # if [ "$DISPLAY" != "" ]; then SCREENDIMS=`xdpyinfo | grep dimensions | awk '{print $2}' | head -n 1` if [ "$SCREENDIMS" = "800x600" ]; then LFTTERM="80x59+0+0" RGHTERM="50x52+490+0" UPLTERM="80x29+0+0" DNLTERM="80x29+0+300" UPRTERM="50x29+490+0" DNRTERM="50x23+490+300" MAXTERM="131x59+2+0" UNITERM="92x51+120+6" FONT="-*-fixed-medium-r-normal-*-10-*-*-*-*-*-iso8859-15" ALTFONT="-*-neep-medium-r-normal-*-11-*-*-*-*-*-iso8859-15" elif [ "$SCREENDIMS" = "1152x900" ]; then LFTTERM="80x68+0+0" RGHTERM="80x63-0+0" UPLTERM="80x30+0+0" DNLTERM="80x37+0-0" UPRTERM="80x30-0+0" DNRTERM="80x32-0-65" MAXTERM="163x68+0+0" UNITERM="92x51+248+6" FONT="-*-fixed-medium-r-normal-*-13-*-*-*-*-*-iso8859-15" ALTFONT="-*-neep-medium-r-normal-*-15-*-*-*-*-*-iso8859-15" else LFTTERM="80x67+0+0" RGHTERM="80x62-0+0" UPLTERM="80x30+0+0" DNLTERM="80x36+0-0" UPRTERM="80x30-0+0" DNRTERM="80x31-0-73" MAXTERM="141x67+0+0" UNITERM="92x51+120+6" FONT="-*-fixed-medium-r-normal-*-15-*-*-*-*-*-iso8859-15" ALTFONT="-*-neep-medium-r-normal-*-15-*-*-*-*-*-iso8859-15" fi fi # Terminal emulators # if [ $debug = 1 ]; then echo "Host : $HOST" fi # Functions # do_setterm () { if [ "$HOST" = "julie" ]; then if [ "$TERM_SWITCH" = "E" ]; then LFTTERM="80x68" RGHTERM="80x63+582+0" UPLTERM="80x30" DNLTERM="80x37+0+409" UPRTERM="80x30+582+0" DNRTERM="80x32+582+409" MAXTERM="163x68" TERMCMD="Eterm" #TERMOPT="--select-line --login-shell off -c SpringGreen" TERMOPT="" TERMFNT="-F $FONT" else TERMCMD="xterm" TERMOPT="-bc" TERMFNT="-fn $FONT" fi else TERMCMD="Eterm" TERMOPT="--select-line --menubar off --login-shell off -c SpringGreen" TERMFNT="-F $FONT" fi } do_settermname () { WSINFOS="$WORKSPACE-$2" if [ "$1" != "" ]; then if [ "$TERMCMD" = "Eterm" ]; then TERMID="-T $1 --name $1 --icon-name $WSINFOS" elif [ "$TERMCMD" = "xterm" ]; then TERMID="-T $1 -name $1 -n $WSINFOS" else TERMID="" fi fi } do_get_usedspace () { grepexp="Command:.* [xE]term .* (-n|--icon-name) $WORKSPACE" sedexp="s/.*-n \([^ ]*\) .*/\1/;s/.*--icon-name \([^ ]*\) .*/\1/;s/$WORKSPACE-//" ul=0 ur=0 dl=0 dr=0 clients=`xlsclients -l | grep -E "$grepexp" | sed -e "$sedexp"` for pos in $clients ; do case $pos in left) ul=1; dl=1;; right) ur=1; dr=1;; upleft) ul=1;; downleft) dl=1;; upright) ur=1;; downright) dr=1;; max) ul=1; dl=1; ur=1; dr=1;; alone) ul=1; dl=1; ur=1; dr=1;; user) ;; *) ;; esac done if [ $debug = 1 ]; then echo "Clients : $clients" echo "Used spaces : ul=$ul dl=$dl ur=$ur dr=$dr" fi } do_set_geom () { parg=$1 case $parg in left) GEOM=$LFTTERM;; right) GEOM=$RGHTERM;; upleft) GEOM=$UPLTERM;; downleft) GEOM=$DNLTERM;; upright) GEOM=$UPRTERM;; downright) GEOM=$DNRTERM;; max) GEOM=$MAXTERM;; alone) GEOM=$UNITERM;; user) GEOM=$2;; *) GEOM="80x25";; esac } do_try_sides () { if [ $1 = 1 -o $2 = 1 ]; then if [ $3 = 0 -a $4 = 0 ]; then LGEO=$5 do_set_geom $LGEO elif [ $1 = 0 ]; then LGEO=$6 do_set_geom $LGEO elif [ $2 = 0 ]; then LGEO=$7 do_set_geom $LGEO elif [ $3 = 0 ]; then LGEO=$8 do_set_geom $LGEO elif [ $4 = 0 ]; then LGEO=$9 do_set_geom $LGEO fi fi } do_try_corners () { if [ $1 = 1 ]; then if [ $2 = 0 ]; then LGEO=$3 do_set_geom $LGEO elif [ $4 = 0 ]; then LGEO=$5 do_set_geom $LGEO elif [ $6 = 0 ]; then LGEO=$7 do_set_geom $LGEO fi fi } do_settermgeom () { garg=$1 do_get_usedspace do_set_geom $garg $2 if [ $FORCE = 0 ]; then case $garg in left) do_try_sides $ul $dl $ur $dr right upleft downleft upright downright;; right) do_try_sides $ur $dr $ul $dl left upright downright upleft downleft;; upleft) do_try_corners $ul $ur upright $dl downleft $dr downright;; downleft) do_try_corners $dl $dr downright $ul upleft $ur upright;; upright) do_try_corners $ur $ul upleft $dr downright $dl downleft;; downright) do_try_corners $dr $dl downleft $ur upright $ul upleft;; esac fi if [ "$TERMCMD" = "Eterm" ]; then TERMGEOM="--geometry $GEOM" elif [ "$TERMCMD" = "xterm" ]; then TERMGEOM="-geometry $GEOM" else TERMGEOM="" fi } do_settermcolor () { carg=$1 NC="grey92" case $carg in casio) FG="black"; BG="DeepSkyBlue2"; NOCOLORTERM=1;; lcd) FG="grey24"; BG="#7E9E69"; NOCOLORTERM=1;; normal) FG=$NC; BG="black";; vidinv) FG="black"; BG="white"; NOCOLORTERM=1;; mono) FG="green"; BG="black"; NOCOLORTERM=1;; dos) FG="white"; BG="blue"; NOCOLORTERM=1;; *) FG="";; esac TERMCOLOR="" if [ "$FG" != "" ]; then if [ "$TERMCMD" = "Eterm" ]; then TERMCOLOR="-f $FG -c $FG -b $BG" elif [ "$TERMCMD" = "xterm" ]; then TERMCOLOR="-fg $FG -cr $FG -bg $BG -bd $BG" fi else if [ "$TERMCMD" = "Eterm" ]; then TERMCOLOR="-f $NC -c $NC --trans --tint 0xffffff --shade $SHADE" fi fi } do_settermbar () { if [ $1 = 1 ]; then if [ "$TERMCMD" = "Eterm" ]; then TERMBAR="-L $MAXLN --scrollbar on" elif [ "$TERMCMD" = "xterm" ]; then TERMBAR="-sl $MAXLN -sb" else TERMBAR="" fi else if [ "$TERMCMD" = "Eterm" ]; then if [ "$2" = "" ]; then if [ "$HOST" != julie ]; then TERMBAR="-L $MAXLN --scrollbar off" else TERMBAR="-L 0 --scrollbar off" fi else TERMBAR="-L 0 --scrollbar off" fi elif [ "$TERMCMD" = "xterm" ]; then TERMBAR="-sl 0 +sb" else TERMBAR="" fi fi } do_help () { echo "terminal options :" echo " -h : this help" echo " -i string : set identity to 'string'" echo " -s style : set terminal preset geometry" echo " left : full length at left of screen" echo " right : full length at right of screen" echo " upleft : upper corner at left of screen" echo " downleft : lower corner at left of screen" echo " upright : upper corner at right of screen" echo " downright : lower corner at right of screen" echo " max : full screen" echo " alone : center of the screen" echo " -S style : does the same thing as -s but force the position" echo " -c color : set color style" echo " casio : casio style (black on bright blue)" echo " lcd : lcd style (black on green-grey)" echo " normal : normal (white on black)" echo " vidinv : video inverse (black on white)" echo " mono : oldstyle green on black" echo " dos : old dos style (white on blue)" echo " -g geometry : set terminal geometry (WxH+X+Y)" echo " -e command : launch command in terminal" echo " -b : set scrollbar" echo " -a : alternate font" exit } do_openterm () { LBAR=0 LCMD="" LNAM="" LGEO="left" LCOL="" UGEO="" FORCE=0 while [ "$1" != "" ]; do arg=$1 case $arg in -h) do_help;; -a) FONT=$ALTFONT;; -b) LBAR=1;; -i) LNAM="$2"; shift;; -s) LGEO="$2"; shift;; -S) LGEO="$2"; FORCE=1; shift;; -c) LCOL="$2"; shift;; -g) LGEO="user"; UGEO="$2"; shift;; -X) TERM_SWITCH="X";; -E) TERM_SWITCH="E";; -e) LCMD="$2" shift 2 while [ "$1" != "" ]; do LCMD="$LCMD $1" shift done;; esac shift done if [ "$DISPLAY" != "" ]; then do_setterm do_settermgeom $LGEO $UGEO do_settermname $LNAM $LGEO do_settermcolor $LCOL do_settermbar $LBAR "$LCMD" if [ $NOCOLORTERM = 1 ]; then export NOCOLORTERM fi if [ "$LCMD" != "" ]; then LCMD="-e $LCMD" fi if [ $debug = 1 ]; then echo $TERMCMD $TERMOPT $TERMBAR $TERMFNT $TERMID $TERMGEOM $TERMCOLOR $LCMD "&" else $TERMCMD $TERMOPT $TERMBAR $TERMFNT $TERMID $TERMGEOM $TERMCOLOR $LCMD & fi else if [ $debug = 1 ]; then echo "$LCMD" else $LCMD fi fi } if [ $debug = 1 ]; then echo "Functions loaded..." fi