Monday, December 25, 2006

Nautilus挂载Windows分区后部分中文乱码的解决办法

最近因为Beryl的吸引,放下了使用已久的fvwm投入了gnome的阵营 :) 看我下边的一篇文章:

发信人: Jun (无语话凄凉), 信区: Linux
标  题: beryl还是搭配gnome工作好些
发信站: BBS 科苑星空站 (Wed Dec 20 12:23:46 2006), 站内

3d桌面出来后就开始抛弃了fvwm跟风了。觉得gnome是个臃肿的庞然大物,
所以一直裸用beryl的,但是发觉它独立工作还有不少缺憾,比如fx卷屏的
时候X占用CPU很高,并且时常有崩溃的情况,休眠后恢复常常X挂掉。

最近编译了gnome-light,然后搭配beryl-0.1.2,发觉使用流畅多了,并且
挺稳定。对于边角(decoration)的修饰很漂亮,避免视觉的厌烦。一系列的
工具很好用,最赞的是eog, evince,nautilus和rhythmbox快速稳定,非常
适合桌面应用。以前 gqview处理中文路径有问题,acroread很臃肿,卷屏
迟钝,rox虽然小巧精悍,细节上,比如缩略图和指定mine-type总有些不如
nautilus顺畅,xmms的中文绝对考rp,audacious类似winmap的古老的两截
窗口使用上远比不上rhythmbox的foobar 样式方便直接,并且无法
minimize into systray bar。

决定还是转入gnome-light+beryl的桌面应用了,稳定/流畅/易用/类似
MACOSX的操作方式就是王道哇,非常棒。

--

※ 来源:·BBS 科苑星空站 kyxk.net·[FROM: 210.77.27.*]

接下来是正题,由于fm换成了nautilus,输入法换成了scim,所以遇到了不少问题。比如令人头疼的是nautilus显示从windows的fat32挂载上来分区中的中文文件名有一部分是正常的,然而有一部分却是乱码,google一下,网络上有不少人遇到过这样的问题,却最后没有合适的解答,我折腾了许久才发觉原来是变量G_FILENAME_ENCODING设置的问题,在.gnomrc里边被设置为GBK了,而我是UTF-8的locale,所以导致了这样的恶心问题。

一个题外话是,中国之所以linux桌面推广比较成问题,我觉得单这些混乱的locale设置、中文字体配置就够人头大了。从4、5年前接触使用linux到现在,一直面临着这种问题,Emacs中文配置、输入法配置,等等。比如FreeBSD下到现在还是只能用LC_CTYPE=zh_CN.eucCN,用UTF-8的话,总会有程序在中文上让你恶心,Linux下已经可以全面采用UTF-8了。下边贴一下我的一些关键配置文件,包括.xprofile, gnome-start.sh:

.xprofile

关于X的个人配置可以放到这里边,至于为什么,可以读一下类似/etc/X11/gdm/Xsession这个文件,用gdm启动的X环境的启动脚本。当然你可以把配置放到/etc/X11/xinit/xinitrc.d诸如此类地方,不过那需要有root权限并且是影响所有登录用户的,我觉得不利于备份,不喜欢 :)

#!/bin/sh

export LANG=en_US.UTF-8
export LC_CTYPE=zh_CN.UTF-8

export XIM_PROGRAM="scim"
export XIM="scim"
export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"

export G_FILENAME_ENCODING=UTF-8
export G_BROKEN_FILENAMES=1
export GDK_USE_XFT=1

export OOO_FORCE_DESKTOP=gnome

gnome-start.sh

在gnome的session中可以加入gnome-start.sh这个脚本,然后把你所想要启动的程序放到这个脚本里边:

#!/bin/sh

# exec fcitx &
exec xmodmap ~/.Xmodmap &

# exec gkrellm2 &

exec tpb -d &

scim -d

dbus-launch beryl-manager
exec beryl --indirect-rendering --strict-binding --replace dbus settings

这里我把thinkpad的热键程序tpb、输入法scim和beryl的启动脚本都写进入了。

.gtkrc-2.0

这里可以放置对于gtk2的个性设置,比如图标、字体之类

include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"

style "user-font" {
font_name = "Sans 12"
}

widget_class "*" style "user-font"

gtk-font-name="Sans 12"

include "/home/nini/.gtkrc.mine"

.gtkrc.mine

个性化图标设置
gtk-icon-theme-name = "nuoveXT-1.6"

其实这个变量对nautilus是没有效果的,对rox有用。

No comments: