#!/bin/sh
#
#  chinputterm/xcinterm 1.1 (2002-11-03)
#  a sh script for starting the chinput+crxvt or xcin+crxvt combo.
#
#  Copyright (C) 2000-2002  Anthony Fok <anthony@thizlinux.com>
#					<foka@debian.org>
#  GNU General Public License, version 2 or later
#
#  Special thanks to ThizLinux Laboratory Ltd. for generous support
#  in this work.
#
#  TODO: Make xcinterm more customizable, e.g. fontsize, colours, etc.

# Choose the distribution for special settings.  Debian uses rxvt-2.6.4;
# CLE and Thiz Linux uses rxvt-2.7.x.
distro=Debian
#distro="Thiz Linux"
#distro=CLE

if [ -x /usr/bin/basename ]; then
	# Debian GNU/Linux
	basename=`/usr/bin/basename $0`
else
	# Thiz Linux, CLE, Red Hat, etc.
	basename=`/bin/basename $0`
fi

server=`echo $basename | /bin/sed -e 's/term.*//;'`
progname=${server}term
suffix=`echo $basename | /bin/sed "s/^$progname-//"`
if [ "$suffix" = "chinputterm" ]; then suffix=gb2312; fi
if [ "$suffix" = "xcinterm" ]; then suffix=big5; fi

# Determine the proper font size for the terminal.

dimensions=`/usr/bin/X11/xdpyinfo | /bin/grep '^  dimensions:' \
	| /bin/sed 's/^  dimensions: \+\([0-9]\+x[0-9]\+\) pixels.*/\1/'`
width=`echo $dimensions | sed 's/x[0-9]\+//'`
height=`echo $dimensions | sed s/'[0-9]\+x//'`

if [ "$width" -ge "1280" -a "$height" -ge "960" ]; then
	size=24
else
	size=16
fi
fn="-sony-*-$size-*-iso8859-1"

case $suffix in
	big5)
		locale=zh_TW.Big5
		if [ "$distro" = "Debian" ]; then
			fm="-eten-fixed-medium-r-*--$size-*-*-*-c-*-big5-0"
		else
			fm="-taipei-fixed-medium-r-*--$size-*-*-*-c-*-big5-0"
		fi
		menu="/usr/lib/X11/zh_TW/rxvt/rxvt.menu"
	;;
	big5-hkscs|big5hkscs|hkscs)
		locale=zh_HK.Big5-HKSCS
		# Most intriguing!  Why can't I use 16x16 big5hkscs font
		# in rxvt-2.7.x?  Too large to fit or what?
		if [ "$distro" = "Debian" ]; then
			fm="-*-*-medium-r-*--$size-*-*-*-c-*-big5hkscs-0"
		else
			fm="-arphic-ar mingti light b5-medium-r-*--$size-*-*-*-c-*-big5hkscs-0"
		fi
		menu="/usr/lib/X11/zh_TW/rxvt/rxvt.menu"
	;;
	gb|gb2312)
		locale=zh_CN.GB2312
		case $size in
			16)  fm=hanzigb16fs ;;
			24)  fm=hanzigb24st ;;
		esac
		menu="/usr/lib/X11/zh_CN/rxvt/rxvt.menu"
	;;
	gbk)
		locale=zh_CN.GBK
		fm="-*-*-medium-r-*--$size-*-*-*-c-*-gbk-0"
		menu="/usr/lib/X11/zh_CN/rxvt/rxvt.menu"
	;;
	gb18030)
		locale=zh_CN.GB18030
		fm="-*-*-medium-r-*--$size-*-*-*-c-*-gb18030.2000-0"
		menu="/usr/lib/X11/zh_CN/rxvt/rxvt.menu"
	;;
esac

title="rxvt Chinese terminal ($server, $locale)"
kdecharset=$(grep ^Charset= ~/.kde/share/config/kdeglobals | sed -e 's/Charset=//')
case "$locale" in
	zh_CN*)
		case "$kdecharset" in
			gb2312*|gbk*|gb18030*)
				title="ն˻ ($server+rxvt, $locale)"
			;;
			big5*)
				title="²餤׺ݾ ($server+rxvt, $locale)"
			;;
			jis*)
				title="λü ($server+rxvt, $locale)"
			;;
		esac
	;;
	zh_HK*)
		case "$kdecharset" in
			gb2312*|gbk*|gb18030*)
				title="ն˻ ($server+rxvt, $locale)"
			;;
			big5*)
				title="c魻䤤׺ݾ ($server+rxvt, $locale)"
			;;
			jis*)
				title="λü ($server+rxvt, $locale)"
			;;
		esac
	;;
	zh_TW*)
		case "$kdecharset" in
			gb2312*|gbk*|gb18030*)
				title="ն˻ ($server+rxvt, $locale)"
			;;
			big5*)
				title="c餤׺ݾ ($server+rxvt, $locale)"
			;;
			jis*)
				title="λü ($server+rxvt,  $locale)"
			;;
		esac
	;;
esac

LANG=$locale
LC_CTYPE=$locale
if [ "$server" = "chinput" ]; then
	im=Chinput
elif [ "$server" = "xcin" ]; then
	if [ "$suffix" = "big5" ]; then
		im=xcin
	else
		im=xcin-$locale
	fi
	test -f ~/.xcin && rm -f ~/.xcin
	test -d ~/.xcin || mkdir -m 755 ~/.xcin		
fi
XMODIFIERS="@im=$im"
export LANG LC_CTYPE XMODIFIERS

[ -n "$LC_ALL" ] && export LC_ALL=$locale
[ "`echo $LC_MESSAGES | cut -c -2`" = "zh" ] && export LC_MESSAGES=$locale


# Finally, run chinput/xcin and crxvt.

/usr/bin/$server &

if [ "$distro" = "Debian" ]; then
	rxvt_cmd=$(eval echo '/usr/bin/crxvt -fm \"$fm\" -fn \"$fn\" \
		-im \"$im\" -bg black -fg white -sl 2048 \
		-T \"$title\" ')
else
	rxvt_cmd=$(eval echo '/usr/bin/X11/rxvt -fm \"$fm\" -fn \"$fn\" \
		-im \"$im\" -bg black -fg white -sl 2048 \
		-T \"$title\" -menu \"$menu\" ')
fi
export XCINTERM=1

sleep 1

echo $rxvt_cmd ${1+"$@"}
eval $rxvt_cmd ${1+"$@"} &
