免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4549 | 回复: 8
打印 上一主题 下一主题

[FreeBSD] [已解决]FreeBSD利用startx和kdm启动kde究竟有什么不同 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-24 23:42 |只看该作者 |倒序浏览
系统环境:

     使用csh这个shell,

     在普通用户的.cshrc中定义了LANG(zh_CN.UTF-8或zh_CN.eucCN等等),

     系统安装了中文字体simsun,

     fonts.conf为默认的配置,

     安装了kde中文包,并且设置了中文区域和中文语言

     kde的字体设置为sans serif。

     使用普通用户登录,

     root没有设置具体的LANG等环境变量



问题所在:

     1、startx启动kde,fc-match的结果是simsun,启动kde后,中文汉字显示正常

     2、kdm启动kde,fc-match的结果是simsun,启动kde后,中文汉字显示为方框。

注:

     1、当shell选择为sh时,不存在这个问题

     2、利用kdm启动kde,如果kde的字体设置为simsun,可以正常显示汉字,但部分是???

     3、当root的.cshrc 设置 LANG zh_CN.UTF-8,现象依旧。

[ 本帖最后由 杜比环绕声 于 2007-5-26 00:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-05-25 14:38 |只看该作者
还没验证其可行性(只有一个ssh帐号,手头没有FreeBSD的机器)
1、先建立/usr/local/etc/kdm目录:
mkdir -p /usr/local/etc/kdm
2、产生默认的kdm config文件:
genkdmconf --in /usr/local/etc/kdm
3、建立/etc/xprofile,其内容为:

  1. export GDM_LANG="zh_CN.UTF-8"
  2. export XMODIFIERS="@im=SCIM"
  3. export GTK_IM_MODULE=scim
  4. export QT_IM_MODULE=scim
  5. scim -d
复制代码


对于kdm而言,好像需要在这里设定LC_LANG才可以让kdm有中文界面?

[ 本帖最后由 哈蜜瓜 于 2007-5-25 16:00 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2007-05-25 14:57 |只看该作者
读的配置的文件不同

论坛徽章:
0
4 [报告]
发表于 2007-05-25 15:35 |只看该作者
事实证明是可以的。我只用文泉字体,字体方面没任何问题。

另外,kdm除了需要产生config文件外,kdm与gdm都可以用到/etc/xprofile这个文件,这个在gdm或kdm启动过程中会被预读取到。

[ 本帖最后由 哈蜜瓜 于 2007-5-25 15:56 编辑 ]

评分

参与人数 1可用积分 +2 收起 理由
大大狗 + 2 我很赞同

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2007-05-25 15:53 |只看该作者
原帖由 杜比环绕声 于 2007-5-24 23:42 发表
系统环境:

     使用csh这个shell,

     在普通用户的.cshrc中定义了LANG(zh_CN.UTF-8或zh_CN.eucCN等等),

     系统安装了中文字体simsun,

     fonts.conf为默认的配置,

     安装了kde ...


我这边无论用startkde还是用kdm启动kde,都没有你所说找不到中文字体的问题,也不知该如何重现你所说的问题。

应该说,用kdm启动的kde不会去读取$HOME/下的预设文件(比如$HOME/.cshrc),所以进入kde后其locale并没有按$HOME/.cshrc设定。当然如果你设定了/etc/csh.cshrc,那又是另外一种情况了。
如果按你所说用sh 可以正常登录,说明sh与csh的环境是不一样的,请检查你的/etc/profile及/etc/csh.cshrc、/etc/csh.login

如果还是有问题,请参考用genkdmconf工具产生的/usr/local/etc/kdm/*

[ 本帖最后由 哈蜜瓜 于 2007-5-25 16:02 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-05-25 16:57 |只看该作者
我做了一个简单的测试,但不确定是否正确

我在 home/user/.cshrc 中定义了一些变量,然后用KDM启动KDE

在KDE的虚拟终端中,确实看到了LANG和我自定义的变量的设定值,这是否意味着KDM在加载配置文件的时候,加载了.cshrc,还是KDE的虚拟终端在运行时,加载了.cshrc


关于KDM的配置文件,有读到xprofile的设置,但不曾试过

KDM的配置文件在第一次运行KDM的时候,已经生成到 /usr/local/share/config/kdm 目录下,在Xsession这个执行脚本中,我注意到下面的代码:



  1. case $SHELL in
  2.   */bash)
  3.     [ -z "$BASH" ] && exec $SHELL $0 "$@"
  4.     set +o posix
  5.     [ -f /etc/profile ] && . /etc/profile
  6.     if [ -f $HOME/.bash_profile ]; then
  7.       . $HOME/.bash_profile
  8.     elif [ -f $HOME/.bash_login ]; then
  9.       . $HOME/.bash_login
  10.     elif [ -f $HOME/.profile ]; then
  11.       . $HOME/.profile
  12.     fi
  13.     ;;
  14.   */zsh)
  15.     [ -z "$ZSH_NAME" ] && exec $SHELL $0 "$@"
  16.     emulate -R zsh
  17.     [ -d /etc/zsh ] && zdir=/etc/zsh || zdir=/etc
  18.     zhome=${ZDOTDIR:-$HOME}
  19.     # zshenv is always sourced automatically.
  20.     [ -f $zdir/zprofile ] && . $zdir/zprofile
  21.     [ -f $zhome/.zprofile ] && . $zhome/.zprofile
  22.     [ -f $zdir/zlogin ] && . $zdir/zlogin
  23.     [ -f $zhome/.zlogin ] && . $zhome/.zlogin
  24.     ;;
  25. [b]  */csh|*/tcsh)
  26.     # [t]cshrc is always sourced automatically.
  27.     # Note that sourcing csh.login after .cshrc is non-standard.
  28.     xsess_tmp=`mktemp /tmp/xsess-env-XXXXXX`
  29.     $SHELL -c "if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c export > $xsess_tmp"
  30.     . $xsess_tmp
  31.     rm -f $xsess_tmp
  32.     ;;[/b]
  33.   *) # Plain sh, ksh, and anything we don't know.
  34.     [ -f /etc/profile ] && . /etc/profile
  35.     [ -f $HOME/.profile ] && . $HOME/.profile
  36.     ;;
  37. esac

  38. [ -f /etc/xprofile ] && . /etc/xprofile
  39. [ -f $HOME/.xprofile ] && . $HOME/.xprofile
复制代码


关于case   csh 那块,哈密瓜兄可否指点一二

$HOME/.xprofile 晚上试试

论坛徽章:
0
7 [报告]
发表于 2007-05-26 00:32 |只看该作者
多谢“哈密瓜”兄,哈哈哈!困扰我好一阵子的问题终于解决了!

我按照“哈密瓜”兄提供的思路,建立了 $HOME/.xprofile 文件,加入了以下内容:

export LANG=zh_CN.UTF-8

并且给了.xprofile可执行权限(不给执行权限也可,测试通过)



利用KDM启动KDE,汉字显示正常

注:测试中发现,在.xprofile文件中用

setenv LANG zh_CN.UTF-8

设置环境变量无效,利用 ./.xprofile 执行这个文件,提示setenv : not found

论坛徽章:
0
8 [报告]
发表于 2007-05-26 01:07 |只看该作者
回“哈密瓜”

sh 和 csh 的确是存在区别

如果用户的shell环境是sh,按照kdm的Xsession的代码,KDM会读取$HOME/.profile文件

而用户的shell环境设置成csh时,不读取$HOME/.cshrc

正如哈密瓜兄提供的解决办法,建立 /etc/xprofile 是系统级的解决办法,不需要修改.profile或.cshrc

回想自己曾经用KDE的模拟终端进行测试,着实汗颜,不得不承认,我让KDE的模拟终端给忽悠了!哈哈哈!归根结底还是对KDE了解不深!!!

[ 本帖最后由 杜比环绕声 于 2007-5-26 01:11 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-05-26 18:48 |只看该作者
这个问题应该可以这样解释:kdm及gdm所读取的所有预设脚本都是基于sh的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP