Skip navigation.

火与冰--alva's blog

胸有激雷,面如平湖

修改fvwm的源代码,实现完美的中文显示

,

这可能是fvwm的一个bug,有人在2.5.12版本里就提出来了,但是现在到2.5.16还没有改,今天收到了fvwm-crystal开发者的邮件,他说他也因为fvwm的utf-8码问题头痛呢,在多语言的环境中应用fvwm-crystal就会有问题。我个人觉得应用fvwm-crystal是最舒服,最省内存的构建桌面环境的方法,非常合适机器配置不高的机器使用,并且fvwm-crystal的效果很cool,现在可以做到不修改fvwm-crystal的任何设置达到完美显示各个地方中文的效果,窗体标题,图标提示等等,所有问题,还剩下的一个问题就是我翻译了fvwm-crystal的菜单,并且用gettext生成了对应的mo文件,但是fvwm-crystal的默认设置还是不行的,默认菜单的字体是tohoma,不能显示中文,不知道fvwm-crystal的作者是否愿意把字体显示的字体修改成支持国际化字体的字体,这样就不要做任何的修改了。或者我在这边提供设置的过程,使大家知道该去改哪一个文件。要想菜单支持中文,除了需要我这里提供的mo文件,还需要改个地方,就是components/styles/Menu
修改fvwm-2.5.16的源代码过程:
在libs/FlocaleCharset.c的525行
FLCXOMCharsetList[0]改成下面这个样子
FLCXOMCharsetList[FLCXOMCharsetList_num -1];
然后重新编译就可以了。bug提交的内容见这里:
http://www.fvwm.org/cgi-bin/fvwm-bug/incoming?id=1647;page=12
另外说明一下gentoo用户的具体操作方法:
gentoo用户如果不做任何修改用的只是fvwm-crystal的2.x版本,2.x版本个人认为没有3.x版本好,为了用fvwm-crystal3.x版本,你必需在/etc/portage/package.keywords加入它,这样才可以被emerge,同时你也要加上fvwm,fvwm-crystal需要2.5.13以上的fvwm版本。
这是package.keywords的内容中加入下面两行:
      x11-wm/fvwm ~x86
      x11-themes/fvwm-crystal ~x86

为了使用portage来帮你编译你修改过的源代码,你可以这样来操作:
emerge --fetchonly fvwm #取得fvwm的源代码

从distfiles中fvwm-2.5.16.tar.bz2解压之后按照上面的方法修改第525行,然后重新打包成fvwm-2.5.16.tar.bz2,放回到distfiles,现在需要重新取得修改后的包的md5码
运行:md5sum fvwm-2.5.16.tar.bz2
复制它的md5码,修改
/usr/portage/x11-wm/fvwm/files/digest-fvwm-2.5.16,把其中的md5码改成刚刚生成的md5
码,还要改一个字段,就是fvwm-2.5.16.tar.bz2的大小变化了,你需要改变digest-fvwm-2.5.16最后一个字段。
ls -l fvwm-2.5.16.tar.bz2 #这个可以得到这个包的字节数。

由于你现在改动了digest-fvwm-2.5.16,所以在/usr/portage/x11-wm/fvwm/Manifest要做相应的修改。用同样的方法得到digest-fvwm-2.5.16的md5码和字节数,改变Manifest中对象的行。
最后就可以emerge fvwm了,你可以直接emerge fvwm-crystal,由于依赖性的关系fvwm会直接被装上。
这样在.xinitrc中加上fvwm-crystal &
就可以直接应用fvwm-crystal了,保证你不会失望,fvwm-crystal很漂亮哦

为这纯纯的爱,我流泪了今天升级了gcc到3.4.5了

Comments

cyfdecyf 10. March 2006, 17:32

一个小建议,不用自己来计算md5并编辑文件。

建一个portage overlay(可以在make.conf里面添加PORTAGE_OVERLAY=/usr/local/portage),然后把/usr/portage/x11-wm/fvwm下面的文件全部拷贝到自己建的overlay里面,修改过源代码以后直接在该目录下面运行:
ebuild fvwm-2.5.16.ebuild digest
然后就可以直接emerge了。

alva 11. March 2006, 02:16

哦,这样更好,不是你说我还不知道呢:smile:,你看我有多傻,我emerge sync的时候,都是把我修改的备份了,然后再拷回去。谢谢你的tips!

bbr322 31. March 2006, 08:55

gentoo的portage有很完善的包创建方式,除了楼上所说的可以建立本地portage之外,为某个包打补丁其实只需要建立一个patch文件,然后修改一下ebuild文件就行了。具体过程可以到linuxsir.org的gentoo版上翻一下精华区,如果你喜欢gentoo的话,那里有不少可以说是必读的文章。

http://www.linuxsir.org/bbs/forumdisplay.php?do=viewgoodnees&f=59

亚仑 5. April 2006, 00:44

不管怎么说,还是对alva兄能找到源码的错误很是佩服!

alva 5. April 2006, 04:52

不好意思,我想你误会了,源代码的错误不是通过我自己读源代码来找到的,我是通过找fvwm的bug report找到的,我对它的代码没有研究。详细情况可以参看文中的链接。这不值得佩服:smile:我跟开发者联系过,他们不认为这是一个错误,所以到现在的版本都没有改过来了。所以现在这个阶段,还需要自己改代码才行。

Write a comment

You must be logged in to write a comment. If you're not a registered member, please sign up.

December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31