#!/bin/bash # setime by Jun Nishii # Time-stamp: <2008-03-08 18:44:29 munepi> # # atok entry is by Takeshi Isobe . /usr/share/vine/functions ########## Messages ############################# ShowUsage_C() { cat <&1` [SCIM-Bridge] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${SCIMBRIDGERPM} 2>&1` [SCIM-Anthy] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${SCIMANTHYRPM} 2>&1` [SCIM-Wnn] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${SCIMWNNRPM} 2>&1` [Anthy] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${ANTHYRPM} 2>&1` [UIM] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${UIMRPM} 2>&1` [IBUS] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${IBUSRPM} 2>&1` [Wnn8 server] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${WNN8RPM_S} 2>&1` [Wnn8 client] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${WNN8RPM_C} 2>&1` [Wnn7 server] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${WNN7RPM_S} 2>&1` [Wnn7 client] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${WNN7RPM_C} 2>&1` [Wnn6] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${WNN6RPM} 2>&1` [Atokx] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${ATOKXRPM} 2>&1` [AtokX2] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${ATOKX2RPM} 2>&1` [AtokX3] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${ATOKX3RPM} 2>&1` [VJE-Delta] `LANG=${LOCALE} LC_ALL=${LOCALE} rpm -q ${VJERPM} 2>&1` ----------------------------------------- `eval EnvVarMsg_${LOCALE}` EMACS_IME=${EMACS_IME} XIM_PROG=${XIM_PROG} CANNA_SERVER=${CANNA_SERVER} JSERVER=${JSERVER} WNN8_FRONT_END=${WNN8_FRONT_END} WNN7_FRONT_END=${WNN7_FRONT_END} WNN8_SERVER=${WNN8_SERVER} WNN7_SERVER=${WNN7_SERVER} WNN6_FRONT_END=${WNN6_FRONT_END} WNN6_SERVER=${WNN6_SERVER} GTK_IM_MODULE=${GTK_IM_MODULE} QT_IM_MODULE=${QT_IM_MODULE} ----------------------------------------- EOF } isWnnAlive(){ if [ -n "`wnnstat 2>/dev/null| grep wnnstat`" ]; then eval WnnNotAliveMsg_$LOCALE return 1 fi return 0 } isAtokxAlive(){ if ! (/sbin/pidof -s atokmngdaemon >& /dev/null); then eval AtokxNotAliveMsg_$LOCALE return 1 fi return 0 } isAtokX2Alive(){ if ! (/sbin/pidof -s atokx2mngdaemon >& /dev/null); then eval AtokX2NotAliveMsg_$LOCALE return 1 fi return 0 } isVjeAlive(){ if ! (/sbin/pidof -s vjed >& /dev/null) ; then eval VjeNotAliveMsg_$LOCALE return 1 fi return 0 } Wnn8Exists(){ if [ -f /usr/lib/wnn8/ja_JP/wnnenvrc ] \ && [ -x /usr/sbin/jserver ]; then return 0 else return 1 fi } Wnn7Exists(){ if [ -f /usr/lib/wnn7/ja_JP/wnnenvrc ] \ && [ -x /usr/sbin/jserver ]; then return 0 else return 1 fi } Wnn6Exists(){ #if [ -n "`rpm -q wnn6 2>/dev/null`" ]; then if [ -f /etc/wnn6/ja_JP/wnnenvrc -o -f /usr/local/lib/wnn6/ja_JP/wnnenvrc ] \ && [ -x /usr/sbin/jserver -o -x /usr/local/bin/jserver \ -o -x /usr/local/bin/Wnn6/jserver ]; then return 0 else return 1 fi } AtokX3Exists(){ if [ -f "/opt/atokx3/lib/client/atokx3auxd" ] ; then return 0 else return 1 fi } AtokX2Exists(){ if [ -f "/opt/atokx2/sbin/atokx2mngdaemon" ] ; then return 0 else return 1 fi } AtokxExists(){ if [ -f "/usr/lib/locale/ja/atokserver/atokmngdaemon" ] ; then return 0 else return 1 fi } startUimXim(){ if [ -z "`pidofmyproc uim-xim`" ] ; then uim-xim >& /dev/null & fi TK_KCPROTO=xim } startScim(){ if [ -z "`pidofmyproc scim-launcher`" ] ; then scim -d >& /dev/null fi TK_KCPROTO=xim } startIbus(){ if [ -z "`pidofmyproc ibus-daemon`" ] ; then ibus-daemon -d -x >& /dev/null fi TK_KCPROTO=xim } setSKK(){ XMODIFIERS="@im=skkinput" TK_KCPROTO=kinput2 checkStart skkinput return 0 } setUIM(){ startUimXim XMODIFIERS="@im=uim" GTK_IM_MODULE=uim QT_IM_MODULE=uim rpm -q --quiet uim-qt-immodule || QT_IM_MODULE=xim checkStart uim-xim return 0 } setSCIM() { XMODIFIERS="@im=SCIM" GTK_IM_MODULE=scim QT_IM_MODULE=xim rpm -q --quiet scim-bridge-gtk && GTK_IM_MODULE=scim-bridge rpm -q --quiet scim-qtimm && QT_IM_MODULE=scim rpm -q --quiet scim-bridge-qt && QT_IM_MODULE=scim-bridge rpm -q --quiet scim-bridge-qt4 && QT_IM_MODULE=scim-bridge export XMODIFIERS GTK_IM_MODULE QT_IM_MODULE startScim return 0 } setIBUS() { XMODIFIERS="@im=ibus" GTK_IM_MODULE=ibus QT_IM_MODULE=xim rpm -q --quiet ibus-el && EMACS_IME=ibus-el rpm -q --quiet ibus-qt && QT_IM_MODULE=ibus export XMODIFIERS GTK_IM_MODULE QT_IM_MODULE EMACS_IME startIbus return 0 } killXwnmo(){ if [ ! -z `pidofmyproc xwnmo` ]; then if [ -x /usr/local/bin/Wnn6/killxwnmo ] ; then /usr/local/bin/Wnn6/killxwnmo else killall xwnmo fi fi } killWnn8le(){ killall WnnPaletteAux >/dev/null 2>&1 killall httx >/dev/null 2>&1 killall WnnMsgDspAux >/dev/null 2>&1 } setWnn8(){ isWnnAlive || return 1 echo "WNN8_FRONT_END: " $WNN8_FRONT_END case "$WNN8_FRONT_END" in le) isXRunning && \ (if [ -f ${HOME}/.Xdefaults ]; then xrdb -merge ${HOME}/.Xdefaults elif [ -f ${HOME}/.Xresources ]; then xrdb -merge ${HOME}/.Xresources fi) \ && \ export XMODIFIERS=@im=htt; export HTT_DISABLE_STATUS_WINDOW=t; \ /usr/lib/im/httx -if Wnn8LE -lc_basiclocale ja_JP -xim htt_xbe & XMODIFIERS="@im=htt" HTT_DISABLE_STATUS_WINDOW=t GTK_IM_MODULE=xim QT_IM_MODULE=xim TK_KCPROTO=htt ;; scim) # ## check scim-wnn package # if ! [ -f "/usr/share/scim/icons/scim-wnn.png" ]; then # fi ## kill other frontends killXwnmo && killWnn8le ## start SCIM setSCIM ## generate basic user dictionaries for the first time ## Note: need wnn8-le if test ! -d /var/lib/wnn8/dic/usr/`whoami`/; then Wnn8scimCreateDic_$LOCALE /usr/lib/im/httx -if Wnn8LE -lc_basiclocale ja_JP -xim htt_xbe & while test ! -d /var/lib/wnn8/dic/usr/`whoami`/; do sleep 3 done killWnn8le fi ;; esac return 0 } setWnn7(){ isWnnAlive || return 1 echo "WNN7_FRONT_END: " $WNN7_FRONT_END case "$WNN7_FRONT_END" in xwnmo) XWNMO_PROG=/usr/X11R6/bin/xwnmo XWNMO_RPM=`rpm -q wnn7-xclients` case "$XWNMO_RPM" in wnn7-xclients-1.01-*) # 1.00 doesn't have --gtk_expose_patch option # 1.01 needs --gtk_expose_patch option for Vine's gtk+ # after 1.02 doesn't need --gtk_expose_patch option XWNMO_OPT=--gtk_expose_patch ;; wnn7-xclients-1.03-*) # 1.03 needs -map option for nautilus on Gnome2 # after 1.03(1.04 or 1.1?), unknown this requirements. XWNMO_OPT=-map ;; esac XWNMO_GEOM=1x1-0-48 isXRunning && (checkStart $XWNMO_PROG $XWNMO_OPT -D ${WNN7_SERVER:=localhost} -g $XWNMO_GEOM) && sleep 2 XMODIFIERS="@im=_XWNMO" GTK_IM_MODULE=xim QT_IM_MODULE=xim TK_KCPROTO=xim ;; esac return 0 } setWnn6(){ isWnnAlive || return 1 echo "WNN6_FRONT_END: " $WNN6_FRONT_END case "$WNN6_FRONT_END" in xwnmo) isXRunning || eval xwnmoWarning_$LOCALE if [ -x /usr/local/bin/Wnn6/xwnmo ] ; then XWNMO_PROG=/usr/local/bin/Wnn6/xwnmo else XWNMO_PROG=xwnmo fi isXRunning && (checkStart $XWNMO_PROG -D ${WNN6_SERVER:=localhost} &) XMODIFIERS="@im=_XWNMO" # XMODIFIERS="@im=kinput2" # needed for emacs GTK_IM_MODULE=xim QT_IM_MODULE=xim TK_KCPROTO=xim ;; esac return 0 } setAtokx(){ isAtokxAlive || return 1 export XMODIFIERS="@im=htt" export TK_KCPROTO=htt export HTT_DISABLE_STATUS_WINDOW=t export HTT_GENERATES_KANAKEY=t export HTT_USES_LINUX_XKEYSYM=t if [ -z "`ps xc | grep httx`" -a -n "$DISPLAY" ]; then if [ -f ${HOME}/.Xdefaults ]; then xrdb -merge ${HOME}/.Xdefaults fi if [ -f "/usr/lib/im/locale/ja/atokserver/shift_space" ]; then echo "*conversionOnKeys: Kanji Zenkaku_Hankaku space" | /usr/X11R6/bin/xrdb -m else echo "*conversionOnKeys: Kanji Zenkaku_Hankaku space" | /usr/X11R6/bin/xrdb -m fi LD_PRELOAD=/usr/X11R6/lib/libXi.so.6 /usr/lib/im/httx -if atok12 -lc_basiclocale ja_JP -xim htt_xbe & times=0 while : do if [ -n "`ps xc | grep LookupAux`" ]; then # sleep 1 break fi usleep 100000 times=$[$times+1] if [ $times -ge "30" ]; then break fi done fi return 0 } setAtokX2(){ isAtokX2Alive || return 1 export XMODIFIERS="@im=htt" export TK_KCPROTO=htt export HTT_DISABLE_STATUS_WINDOW=t export HTT_GENERATES_KANAKEY=t export HTT_USES_LINUX_XKEYSYM=t export GTK_IM_MODULE=iiim export QT_IM_MODULE=xim if [ -z "`ps xc | grep httx`" -a -n "$DISPLAY" ]; then if [ -f ${HOME}/.Xdefaults ]; then xrdb -merge ${HOME}/.Xdefaults fi /usr/lib/im/httx -if atokx2 -xim htt_xbe & fi return 0 } setAtokX3(){ export XMODIFIERS="@im=iiimx" export HTT_DISABLE_STATUS_WINDOW=t export HTT_GENERATES_KANAKEY=t export HTT_USES_LINUX_XKEYSYM=t export HTT_IGNORES_LOCK_MASK=t export JS_FEEDBACK_CONVERT=t export GTK_IM_MODULE=iiim export QT_IM_MODULE=xim if [ -z "`ps xc | grep iiimx`" -a -n "$DISPLAY" ]; then if [ -f ${HOME}/.Xdefaults ]; then xrdb -merge ${HOME}/.Xdefaults fi /usr/bin/iiimx -iiimd fi return 0 } setVje(){ isVjeAlive || return 1 XMODIFIERS="@im=vje" GTK_IM_MODULE=xim QAT_IM_MODULE=xim echo "Emacs*useXim: true" | /usr/X11R6/bin/xrdb -m echo "Emacs*useXIM: true" | /usr/X11R6/bin/xrdb -m times=0 ( while : do if [ $(ps xc | grep nautilus | wc -l) -ge "2" ]; then sleep 2 break fi sleep 1 times=$[$times+1] if [ $times -ge "10" ]; then break fi done && PATH=$PATH:/usr/sbin vje ) & return 0 } setNone(){ return 0 } setIME(){ SYSIME=/etc/sysconfig/ime USERIMEDIR=$HOME/.vine/system/ USERIME=${USERIMEDIR}/ime source ${SYSIME} [ -f ${USERIME} ] && source ${USERIME} #echo ${XIM_PROG} if [ "$1" = "default" ]; then TARGET=${XIM_PROG:-ibus} FE=${WNN6_FRONT_END} else TARGET=$1 fi case "$TARGET" in wnn8) eval SettingIMMsg_$LOCALE wnn8 WNNTAG=wnn8 EMACS_IME=wnn8 XIM_PROG=wnn8 WNN8_FRONT_END=${FE:=le} setWnn8 ;; wnn7) eval SettingIMMsg_$LOCALE wnn7 WNNTAG=wnn7 EMACS_IME=wnn7 XIM_PROG=wnn7 WNN7_FRONT_END=${FE:=xwnmo} setWnn7 ;; wnn6) eval SettingIMMsg_$LOCALE wnn6 WNNTAG=wnn6 EMACS_IME=wnn6 XIM_PROG=wnn6 WNN6_FRONT_END=${FE:=kinput2} setWnn6 ;; wnn) XIM_PROG=wnn WNN6_FRONT_END=kinput2 WNN7_FRONT_END=xwnmo WNN8_FRONT_END=le if Wnn8Exists ; then eval SettingIMMsg_$LOCALE wnn8 WNNTAG=wnn8 EMACS_IME=wnn8 elif Wnn7Exists ; then eval SettingIMMsg_$LOCALE wnn7 WNNTAG=wnn7 EMACS_IME=wnn7 elif Wnn6Exists ; then eval SettingIMMsg_$LOCALE wnn6 WNNTAG=wnn6 EMACS_IME=wnn6 else eval NoIMMsg_$LOCALE wnn return 1 fi case "$WNNTAG" in wnn8) setWnn8 ;; wnn7) setWnn7 ;; wnn6) setWnn6 ;; esac ;; atokx) eval SettingIMMsg_$LOCALE atokx EMACS_IME=atokx XIM_PROG=atokx setAtokx ;; atokx2) eval SettingIMMsg_$LOCALE atokx2 EMACS_IME=atokx2 XIM_PROG=atokx2 setAtokX2 ;; atokx3) eval SettingIMMsg_$LOCALE atokx3 EMACS_IME=atokx3 XIM_PROG=atokx3 setAtokX3 ;; vje) eval SettingIMMsg_$LOCALE vje EMACS_IME=vje XIM_PROG=vje setVje ;; uim) eval SettingIMMsg_$LOCALE uim EMACS_IME=uim XIM_PROG=uim setUIM ;; scim) eval SettingIMMsg_$LOCALE scim EMACS_IME=scim XIM_PROG=scim setSCIM ;; ibus) eval SettingIMMsg_$LOCALE ibus EMACS_IME=ibus-el XIM_PROG=ibus setIBUS ;; skk) eval SettingIMMsg_$LOCALE skk EMACS_IME=skk XIM_PROG=skk setSKK ;; none|No_IM) eval SettingIMMsg_$LOCALE No_IM EMACS_IME=No_IM XIM_PROG=No_IM setNone ;; esac [ -d ${USERIMEDIR} ] || mkdir -p ${USERIMEDIR} CANNA_SERVER=${CANNA_SERVER:=unix} cat <${USERIME} EMACS_IME=${EMACS_IME} XIM_PROG=${XIM_PROG} JSERVER=${JSERVER:=localhost} WNN8_FRONT_END=${FE:=le} WNN7_FRONT_END=${FE:=xwnmo} WNN6_FRONT_END=${FE:=kinput2} WNN8_SERVER=${WNN8_SERVER:=localhost} WNN7_SERVER=${WNN7_SERVER:=localhost} WNN6_SERVER=${WNN6_SERVER:=localhost} CANNA_SERVER=${CANNA_SERVER/localhost/unix} GTK_IM_MODULE=${GTK_IM_MODULE} QT_IM_MODULE=${QT_IM_MODULE} XMODIFIERS=${XMODIFIERS} EOF return 0 } unsetImeFuncs(){ unset -f ShowUsage_C ShowUsage_ja IMEMsg_C IMEMsg_ja unset -f CurIMEMsg_ja CurIMEMsg_C PackageStatMsg_ja PackageStatMsg_C unset -f EnvVarMsg_ja EnvVarMsg_C SettingIMMsg_ja SettingIMMsg_C unset -f WnnNotAliveMsg_ja WnnNotAliveMsg_C unset -f AtokxNotAliveMsg_ja AtokxNotAliveMsg_C unset -f AtokX2NotAliveMsg_ja AtokX2NotAliveMsg_C unset -f VjeNotAliveMsg_ja VjeNotAliveMsg_C unset -f NoIMMsg_ja NoIMMsg_C ExitMsg_ja ExitMsg_C xwnmoWarning_ja xwnmoWarning_C unset -f Wnn8scimCreateDic_C Wnn8scimCreateDic_ja unset -f setLocale CheckOption CheckXIMStatus ShowIMEStatus isWnnAlive unset -f isAtokxAlive AtokxExists setAtokx unset -f isAtokX2Alive AtokX2Exists setAtokX2 unset -f AtokX3Exists setAtokX3 unset -f isVjeAlive setVje unset -f Wnn8Exists Wnn7Exists Wnn6Exists killXwnmo unset -f setWnn8 setWnn7 setWnn6 setFreeWnn setIME setNone unsetImeFuncs unset -f setSKK unset -f setUIM startUimXim unset -f setSCIM startScim unset -f setIBUS startIbus }