QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15145|回复: 4

美观的中文Fluxbox环境配置不完全指南

[复制链接]
发表于 2007-8-9 21:22:38 | 显示全部楼层 |阅读模式
由于内存太低,最近连xfce也吃不消了,终于下定决心使用垂涎已久的fluxbox,想不到配置下来没我想象的那么难,在此把我个人配置的一些经验写下来,希望对新新手有所帮助,还请大家支持啊!

安装fluxbox
不用说,要用fluxbox第一步当然是安装了。你在fluxbox官方网站上下载各种安装包,当然,你可以更简单的apt-get install fluxbox(我只知道这个命令,如果在你的系统上不管用,那我就不知道了 )。不过,装好之后有一个很严重的问题,中文问题,中文全乱码,中文乱码怎么行呢,而且默认的好像没有将png格式的图标支持编译进去。于是,我果断下了一个决定,重新编译。如果想要达到最佳效果,推荐自行编译安装,把所有的特性都enable了。于是我就
  1. # apt-get source fluxbox
复制代码

搞到了它的源代码。网上搜了一下,发现中文乱码的原因是fluxbox源码目录里的/nls/zh_CN/generated-UTF-8.m这个文件的编码做坏了,修复的方法是用你最喜欢的文本编辑器t打开generated-ISO-8859-1.m文件,把里面第一行的编码改为UTF-8,然后另存为generated-UTF-8.m,再重新编译中文就ok了。刚才说过,默认的是不支持png格式图标的,所有我们还要加上png图标支持的选项,具体的可以查看 ./configure 命令的输出,把原先默认disable的都给enable掉,如果是编译deb包,可以把相应的选项加入 debian目录下的rules文件里,具体怎么加打开rules文件一看便一清二楚。对了,别忘了先build-dep

配置fluxbox
经过上面的折腾,现在的fluxbox应该已经凤凰涅磐了。现在再进入fluxbox看看,原本的外星文字应该都已经变成中文了。现在开始,请大家系好安全带,服好晕车药,下面可要开始颠簸的旅程了。

配置菜单
欢迎来到第一站,菜单配置。为什么要配置菜单呢?因为默认那个菜单实在太衰了,好多图标都没有,而且洋文颇多,看着不爽。我个人推荐大家纯手写菜单,因为fluxbox的菜单格式很简单的,而且手工配置的效果绝对是相当的好,无法抗拒的。
那么到底要怎么配置菜单呢?当然是编辑菜单配置文件了,这个太阳系的人都知道。 fluxbox菜单配置文件是你主目录下的 .fluxbox/menu 文件。用你最喜欢的编辑器打开它,编辑它。刚才已经说过了,fluxbox菜单配置很简单,你只需要知道一点点东西就可以随心所欲了。下面开始就要来代码了,大家别眼晕。
下面是一个最基本的菜单文件
  1. [begin]
  2. [exec] (term) {xterm} </usr/share/pixmaps/terminal.png>
  3. [reconfig] (Reload config)
  4. [exit] (Exit)
  5. [end]
复制代码

开头的"[begin]"和最后的"[end]"是固有的,这两个标签告诉fluxbox这是一个菜单文件,这样fluxbox才会把它当作菜单来处理。"[exec]"表示这个菜单项是一个应用程序,"()"里面的文字是应用程序的名称,就是在菜单里面显示的名称了,例如“终端”什么什么的。"{}"里是启动该程序的命令,例如"xterm"是启动xterm,"emacs"是启动emacs等等。"<>"里的就不用说了,是程序的图标,你可以在/usr/share/pixmaps/里找到N多程序的图标,当然,要支持png图标,你得按照我的建议重新编译了fluxbox并enable了所有选项。"[reconfig]"表示重新加载配置,这样你就可以无须重新启动fluxbox而直接看到更改配置的效果,这个特性是不是相当有用呢?事实上,fluxbox还有个"[restart]"标签,让你无须注销便可重新启动fluxbox。"[exit]"自然无须多说。
通过上面的内容,你已经可以写一个只有一级的菜单了,那么,我想要将菜单归类,例如“网络”是一类,“游戏”是一类,也就是多级菜单,要怎么弄呢?这就要用到"[submenu]",要注意如果你写了一个"[submenu]",那么在后面就一定要有个"[end]"标签与之对应,不然可是会出错的。所以,如果想在菜单中加入一个“网络”的分类的话,上面的菜单可以变为
  1. [begin]
  2. [exec] (term) {xterm} </usr/share/pixmaps/terminal.png>

  3. [color=Lime]
  4. [submenu] (网络)
  5. [end]
  6. [/color]

  7. [reconfig] (Reload config)
  8. [exit] (Exit)
  9. [end]
复制代码

你应该已经发现了,所有菜单项的类型都是用"[]"定义的,所有菜单项的名称都是用"()"定义的,所有的命令都是用"{}"定义的,所有的图标都是用"<>"定义的,事实上,基本上是这样的。如果要向“网络”这个子菜单里添加项目的话,只要在"[submenu]"和"[end]"之间加入无数的"[exec]"就行了,就像第二行的那个xterm一样。
现在你已经具备了写多级菜单的能力了,你一定迫不及待了吧,如果迫不及待,那就先写,写完再回来看。对了,写菜单的时候可以对着/usr/share/applications/目录里的桌面配置文件来些,这样方便些。
fluxbox的菜单类型还不止这些,下面是一些很有用的菜单类型:
  1. [include] (文件或目录名)
  2. # 这个表示插入一个外部的菜单文件,可以写就对路径,也可以 ~/ 来指代你的主目录。如果给出的是一个目录的话,那目录里所有的文件都会被包含。通过这种方法,你可以在自己的菜单里将自动生成的菜单包含进来,这样,你既不需要修改自动生成的菜单(自动生成的菜单开头都会有一句话,让你不要去修改它,因为你新装一个程序,它是会更新的),也不怕自己的菜单被破坏。
复制代码
  1. [nop] (label)
  2. # 这表示插入一个空白项目,如果在"()"中指定了名称,那么就会显示这个名称,显示效果和和普通菜单项是有区别的。如果没指定名称,那么就是一个空出来的位置,什么都没有。
复制代码
  1. [separator]
  2. # 这表示插入一条分界线,与上面的"[nop]"一样,有助于菜单的格式化。
复制代码
  1. [stylesdir] (label) {目录}
  2. # 该标签用于创建一个名为label的子菜单,并且在子菜单中插入目录中所有的样式,这样可以方便地切换样式,例如你可以把 ~/.fluxbox/styles 目录加进去。
复制代码
  1. [wallpapers] (目录)
  2. # 这个标签会将目录下的所有图片列出来,方便你切换壁纸。有一点要注意的是,目录里面的目录是被忽略的,也就是它不会递归的,所以你最好将壁纸全部放在一个目录下,别再在目录下分门别类地放:mrgreen: 。
复制代码
  1. [workspaces] (label)
  2. # 弹出一个工作区的菜单,和在桌面上单击鼠标中间弹出的菜单是一样的,如果你的鼠标只有两个键,那这个对你来说会比较有用。
复制代码
  1. [config] (label)
  2. # 弹出一个fluxbox的配置菜单,省却手工编辑的麻烦。
复制代码

基本上也就这样了,请你尽情的发挥想象力,创建你的个性菜单了。事实上,所有菜单项都可以通过"<>"标签来指定一个图标,包括"[nop]"。所以,你可以在菜单里插入你的头像,只要用"<>"标签指定你的头像位置就好了。

更换壁纸
搞到现在大家都累了吧,换张漂亮的壁纸养养眼吧。如果你在菜单里加入了"[wallpapers]"的话,那就直接在桌面单击右键选吧。如果你发现桌面没有什么变化,那么请你在终端中输入
  1. $ fbsetbg -i
复制代码

,如果出现类似
  1. display doesn't set the wallpaper properly. Transparency for fluxbox
  2. and apps like aterm and xchat won't work right with it. Consider
  3. installing feh, wmsetbg (from windowmaker) or Esetroot (from Eterm) and
  4. I'll use them instead.
复制代码

的错误信息,那么证明你没有安装设置壁纸的程序。fbsetbg本身不是设置壁纸的程序,它只是调用别的程序来设置壁纸,所以请安装feh、wmsetbg、esetroot中的任何一个,装完之后,上述命令的输出应该会变成类似
  1. Esetroot is a nice wallpapersetter. You won't have any problems.
复制代码

的样子。
如果想要下次启动fluxbox的时候壁纸仍然生效的话,你需要在你的主目录下的 .fluxbox/init 文件里面找到下面的一行,并确保"fbsetbg -l"写在后面。
  1. session.screen0.rootCommand:    fbsetbg -l
复制代码

顺便说一下,这个init文件就是fluxbox的主要配置文件了,多数选项在"[config]"菜单里都有,所以,如果你将"[config]"加入了菜单,那么配置是十分容易的。
个人认为这是设置壁纸的最好的方法,己不会被样式更改,有可以用右键方便地切换。所以,其他的方法就不玩了
 楼主| 发表于 2007-8-9 21:23:16 | 显示全部楼层
设置字体
这里的字体是指设置fluxbox的字体,也就是菜单的字体、工具栏(就是fluxbox下面的那一条东西 )的字体以及窗口标题栏的字体,外部应用程序的字体例如鹦鹉螺和征服者之类的是归它们相应的工具集管的(gtk,qt...)。设置字体请在你的主目录下的 .fluxbox/overlay 里面设置。这里我们又碰到了一个叫overlay的东西,这个overlay,是用来覆盖样式设置的,也就是所有你不希望用style来定义的东西都写到这里,包括刚才的壁纸,也可以写到这里,不过我不推荐这种方法。
字体设置的写法如下:

  1. menu.title.font: <fontname>
  2. # 这个是菜单标题的字体

  3. menu.frame.font: <fontname>
  4. # 这个是菜单项目的字体

  5. window.font: <fontname>
  6. # 这个是窗口标题栏的字体window (the font of the title of every window)

  7. toolbar.clock.font: <fontname>
  8. # 这个是fluxbox时钟的字体

  9. toolbar.workspace.font: <fontname>
  10. # 这个是工作区名称的字体,就是工具栏最左边的那个

  11. toolbar.iconbar.focused.font: <fontname>
  12. toolbar.iconbar.unfocused.font: <fontname>
  13. # 图标栏的字体,就是工具栏中间的用来切换程序的那个。focused就是聚焦窗口,unfocused就是非聚焦窗口
复制代码

这些字体不必全部都设,当然如果你愿意的话可以全部都设。通常把菜单的字体设置一下就好了,其他的留给style。例如,我就将菜单的字体设成了文泉驿,看得我真真切切。那么这个"<fontname>"怎么知道呢?这个我也不知道,不过我们可以通过其他程序知道。
  1. # apt-get install gtk-theme-switch
复制代码

再运行gtk-theme-switch2,会弹出一个gtk主题切换器,顺便在这里选一下gtk程序的主题。点击右边那个加号图标,还会出来一个字体选项,没的说,当然是选文泉驿了。呵呵,现在知道fontname叫什么了吧,字体选择框那里写着呢。赶紧把WenQuanYi Bitmap Song写进overlay里去。你还可以设置字号,甚至还可以加点阴影或光晕特效。完整地写应该是这样的:

  1. menu.title.font: WenQuanYi Bitmap Song
  2. menu.title.font.effect: shadow
  3. menu.title.font.shadow.color: #ffffff
  4. menu.title.font.shadow.x: 2
  5. menu.title.font.shadow.y: 5

  6. menu.frame.font: WenQuanYi Bitmap Song-12
  7. menu.frame.font.effect: halo
  8. menu.frame.font.halo.color: #ffffff

  9. toolbar.iconbar.focused.font: WenQuanYi Bitmap Song-12:bold
  10. toolbar.iconbar.unfocused.font: WenQuanYi Bitmap Song-12
复制代码

千万要注意,哪里有空格哪里没空格不要搞错了。

gtk程序的主题及字体
在没有设置的情况下,gtk程序的主题是很丑的,如果你经过了上面的字体设置,那么现在打开的gtk程序是没有问题的,应为已经用gtk-theme-switch2设置过了。至于qt程序,我就不知道了,貌似应该没有什么问题的。

进一步设置
现在你的fluxbox应该已经很舒服了,但是,我们要追求完美,离目的地已经不远了,请大家检查一下安全带有没有系好,坐稳,我们继续我们的旅程。为了缓解您的疲劳,先带来一则火星笑话,据说emacs是emacs makes a computer slow的递归缩写,所以,如果你的电脑不是很强的话,请慎用emacs
fluxbox默认的中文翻译不完全,而且有错误。例如我这里右键单击窗口标题栏出来的菜单就有个明显的错误,所以,我们要定制窗口菜单。
窗口菜单的写法和主菜单的写法几乎一样,就是多了几个特有的标签而已,所以,有了上面的知识,这里你可以轻松搞定。这些标签有:

  1. [shade] (label)
  2. # 这个表示卷起窗口

  3. [close] (label)
  4. # 这个自然是关闭

  5. [kill] (label)
  6. [killwindow] (label)
  7. # 如果它停止响应,就杀死它

  8. [stick] (label)
  9. # 粘住,就是在所有工作区都出现

  10. [maximize] (label)
  11. # 最大化

  12. [iconify] (label)
  13. # 最小化

  14. [raise] (label)
  15. #抬高,就是把窗口抬高一级,例如原来有窗口压在它上面,那么这样它就会跑上来

  16. [lower] (label)
  17. #降低,抬高和降低你试一下就全明白了

  18. [sendto] (label)
  19. # 弹出一个发送到的子菜单

  20. [layer] (label)
  21. # 弹出一个改变层次的子菜单

  22. [extramenus] (label)
  23. # 弹出一个记住的子菜单,让fluxbox记住窗口状态
复制代码

写完后把原先不是中文的加上中文label,原先是中文的就不用写label了。对了,还没说这个文件保存在哪呢,呵呵,把这个文件保存成windowmenu并放在你主目录下的 .fluxbox 目录下。此外,你还要告诉fluxbox你用了一个自定义的窗口菜单,你需要在上面所说的init文件里找到下面的行,并改成下面那样:
  1. session.screen0.windowMenu: ~/.fluxbox/windowmenu
复制代码

如今中文话已经做到最大的地步了,再想中文化就要自己翻译再重新编译了,这个就不是本文讨论的内容了。

[ 本帖最后由 yhlfh 于 2007-8-23 22:38 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2007-8-11 16:23:09 | 显示全部楼层
楼主真乃强人,曾配置过一段时间,但效果不是很好,楼主的文章收下,有空再试试。
期待后续!

[ 本帖最后由 windflying 于 2007-8-11 16:24 编辑 ]
回复

使用道具 举报

发表于 2007-8-11 20:44:52 | 显示全部楼层
推荐 openbox,文字的处理使用了 pango,中文显示就和gtk程序一致了
http://www.linuxsir.org/bbs/showthread.php?t=302931
回复

使用道具 举报

 楼主| 发表于 2007-8-23 22:36:33 | 显示全部楼层
美化Fluxbox
欢迎回来!首先带来一个好消息,在即将到来的Fluxbox 1.0里,中文问题将得到完美解决。
更换样式
Tenner的主页上有好多样式,此人专作Fluxbox的Style,并且经常作。下载一个你喜欢的,解压到 ~/.fluxbox/styles/ 目录下,如果你已将这个目录通过[stylesdir]标签写到了你的菜单配置里,那么你可以简单的通过右键菜单来选中刚才下载的样式。如果觉得效果不舒服,那就换一个,一直换到你喜欢为止。如果http://tenr.de/上的主题还不够,那么你可以在http://box-look.org/上找到更多。
现在,你应该有了一个喜欢的样式了。
秀色可餐
桌面上空空荡荡的,觉得不爽,那就来点小玩意点缀点缀。东西可多了,古董级的dockapps,各种各样的desklets,或许还可以来点桌面图标。这里向大家推荐一个轻量级的desklets-ADesklets。adesklets并不是一个desklets,他是一个desklets的运行环境,像gdesklets一样,你装完adesklets后,不要忘记安装desklets。
你可以像这样安装adesklets:
  1. # apt-get install adesklets
复制代码

完了之后,你的系统中应该多出了一个命令:adesklets_installer 。好吧,运行它,将会出现一个上下两个框的终端界面,上面的方框里显示的是desklets列表,desklets名称+安装状态的形式。选中的desklets会高亮显示,回车就会开始自动下载,要退出程序按q。具体的desklets是什么东西可以参看这里。下载自己喜欢的desklets吧!
觉得够了吗?现在试试在终端执行 adesklets 命令。是不是没反应?桌面上怎么一个desklets也没出来?对,当adesklets_installer替你下载好desklets后,你需要将desklets注册才能使用。注册的方法是,运行desklets目录下的以 .py 结尾的文件。你刚才下载的desklets都在~/.desklets目录下,假设要注册volume这个desklets,那就运行:
  1. $ python .desklets/volume-0.0.8/volume.py
复制代码

这样会出来一个提示,问你是要测试还是注册,按 r 选注册。这是在运行adesklets,你刚刚注册的desklets应该会出现在桌面上了。
要让adesklets随fluxbox启动而启动,你需要将adesklets加入startup文件。用你最喜欢的编辑器打开~/.fluxbox/startup ,找到

  1. # Applications you want to run with fluxbox.
  2. # MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.
  3. #
  4. # unclutter -idle 2 &
  5. # wmnd &
  6. # wmsmixer -w &
  7. # idesk &
  8. adesklets &
复制代码

想上面那样在后面加入"adesklets &"就好了,别忘记最后的"&"
你还可以在那里加入"gnome-settings-daemon &",这样gnome程序看上去会好些。任何你希望于fluxbox同时启动的东西都可以加进去。(事实上,fluxbox是在最后一刻才启动的,看看你就明白了 )
给Fluxbox加上splash和启动声音
呵呵,想不到吧,Fluxbox还可以有splash和启动声音,秘密全在startup文件里。用你最喜欢的编辑器打开~/.fluxbox/startup,大概第十四行的样子,你可以看到这么一段话:

  1. # This shows the fluxbox-splash-screen
  2. # fbsetbg -C /usr/share/fluxbox/splash.jpg
复制代码

原来fbsetbg不仅仅可以设置背景,还能用来显示splash。具体的写法,上面已经给出了,照着写就可以,就写在那个注释的下面,另起一行写,不过不要忘记修改splash图片路径 。(通常情况下,不要选择简单的将原来的注释去掉,而应该自己写一遍,以免搞不清那些是原来的那些是你自己设置的 )
既然都可以splash,为什么不能加上启动声音呢?我们完全可以如法炮制,用一个命令来播放一段声音,例如
  1. aplay /usr/share/sounds/login.wav
复制代码

如果你的系统中没有aplay命令,请安装sox。
splash加启动声音,又有toolbar,这Fluxbox哪里只是一个窗口管理器,简直就是一个DE啊。怪不得有人做了一张壁纸写着"Fluxbox Desktop Environment",当之无愧啊!真佩服Fluxbox的开发者,区区1M多的可执行文件居然可以做到这种地步。用Fluxbox,此生无憾也!
----
好了,我们的旅程到此结束,请大家下车,下车以后请走人行道,过马路请走人行横道,欢迎再次乘坐!

[ 本帖最后由 yhlfh 于 2007-8-25 07:52 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-25 22:54 , Processed in 0.106918 second(s), 17 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表