|
发表于 2003-6-21 13:28:52
|
显示全部楼层
一,我用的是2.4.20-8的内核,但是我的紫光引擎在chmod +s之后确实无法启动
二,我没有做脚本,只是综合luochong和llc的脚本,加以修改
三,方法如下,高手看了不要笑:
安装的是最刚开始的时候的包,没有进行chmod +s
然后用luochong的 demon
#!/bin/sh
#
# unispim 紫光拼音输入法
#
# chkconfig: 5 90 10
# description: 紫光拼音输入法
# Start upimd demon
# Current Author: gf <[email protected]>,llc<www.linuxfans.org>做了一些修改
# source function library
. /etc/rc.d/init.d/functions
RETVAL=0
prog="upimd"
start () {
# Check if /tmp/upimd.lock existed, then delete it.
if [ -f /tmp/upimd.lock ]; then
rm -f /tmp/upimd.lock > /dev/null 2>&1
fi
# Check if upimd existed, then stop it.
if [ -f /usr/local/unispim/upimd ]; then
#Backup first
if [ -f /usr/local/unispim/usrwl.dat.bak ]; then
rm -f /usr/local/unispim/usrwl.dat.bak
cp /usr/local/unispim/usrwl.dat /usr/local/unispim/usrwl.dat.bak
fi
/usr/local/unispim/upimd -stop > /dev/null 2>&1
action $"Starting $prog: " /bin/true
else
action $"Starting $prog: " /bin/false
fi
touch /var/lock/subsys/upimd
}
stop () {
if [ -f /usr/local/unispim/upimd ]; then
/usr/local/unispim/upimd -stop > /dev/null 2>&1
action $"Stopping $prog: " /bin/true
else
action $"Stopping $prog: " /bin/false
fi
#rm -f /usr/local/unispim/usrwl.dat.bak
#cp /usr/local/unispim/usrwl.dat /usr/local/unispim/usrwl.dat.bak
# Check if /tmp/upimd.lock existed, then delete it.
if [ -f /tmp/upimd.lock ]; then
rm -f /tmp/upimd.lock > /dev/null 2>&1
fi
rm -f /var/lock/subsys/upimd
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo "Usage:$0 {start|stop|restart|reload}"
exit 1
;;
esac
exit $RETVAL
主要目的是不让引擎启动,还有我没有搞明白reboot重启的时候系统的动作,没有测试,因此保留了这个脚本在init里面,保证正常杀死引擎
然后就是llc兄弟编写的在X启动的时候的脚本还是叫cbnrfinput
#!/bin/sh
if ! [ -f ~/.rfinput ];then
mkdir ~/.rfinput
fi
if ! [ -f /tmp/upimd.lock ];then
/usr/local/unispim/upimd -start > /dev/null 2>&1
fi
rfinput
放在/usr/local/bin里面chmod +755
还有一个脚本是修改自llc的stopupim这个demon,
#!/bin/sh
if [ -f /usr/local/unispim/upimd ]; then
/usr/local/unispim/upimd -stop > /dev/null 2>&1
fi
#rm -f /usr/local/unispim/usrwl.dat.bak
#cp /usr/local/unispim/usrwl.dat /usr/local/unispim/usrwl.dat.bak
# Check if /tmp/upimd.lock existed, then delete it.
if [ -f /tmp/upimd.lock ]; then
rm -f /tmp/upimd.lock > /dev/null 2>&1
fi
rm -f /var/lock/subsys/upimd
我对这个输入法还不大了解,所以没有多大的修改,只是删掉了几个提示
也放在/usr/loacl/bin
里面 chmod 755
然后就是改动autostart的那个rfinput.desktop
不贴了
然后就是修改
/etc/X11/gdm/PostSession/Default
#!/bin/sh
PATH=/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin:$PATH
if command -v sessreg > /dev/null 2>&1; then
sessreg -d -w /var/log/wtmp -u /var/run/utmp -x "$X_SERVERS" -h "$REMOTE_HOST" -l $DISPLAY $USER
fi
stopupim
exit 0
只加了一个命令,就是在session会话结束时启动lstopupim由当前用户的权限关闭紫光引擎,重新启动会话的时候由autostart来重新加载引擎,就这么点是我自己的思想,见笑这样从启动引擎到关闭引擎,rfinput和引擎都是同一个用户,保存自定义词库没有问题。
按理来说这个应该是gnome的会话管理,但是似乎KDE的会话管理也由它代劳了
这个我不知道请高手指教。但是redhat确实非常倾向gnonme,会话启动时候
输入用户名等界面都是类似gnonme |
|