2008年2月18日星期一

基于Fluxbox的轻量型桌面环境的配置

基于 Fluxbox的轻量型桌面环境的配置




如今"扣肉"横行,还有多少人在用着上 个世纪的老爷机?即使是扣肉一族,也许同样要求在既有的硬件配置下追求系统性能的最大化;或者是一个DIY的极端狂热分子;如果是这样,Gnome和 KDE这样的桌面环境肯定不是首选,你需要自己动手打造最实用的桌面环境了。(至于什么是桌面环境,什么是窗口管理器,它们之间的区别是什么,参看王垠的 文章《理解 Xwindow》

Fluxbox是众多窗口管理器之一,相对于 fvwm,Fluxbox的可定制性较低,但它不像fvwm那样所有的配置都需要自己写,因而比较容易上手。另外通过简单的设置,Fluxbox可以拥有 非常漂亮的外观主题,所以对于新手以及时间有限的人来说,这是个很好的选择。

一、最小化安装GNU\Linux系统

最小化安装的目的是避免安装系统默认的桌面环境,现在二三百种Linux的发行版中,大部分默认的桌面环境是KDE或Gnome。一个桌面环境包含 了很多组件,也许这些组件你并不需要,比如Gnome下的文本编辑器GEdit,它的功能肯定比不上Vim,所以没有必要把硬盘空间浪费到这上面。
至于最小化安装系统的方法,网上有很多文章,我这里不再多说,同时我自己也没有这么做过,因为我暂时还没有抛弃Gnome的理由。
最小化安装之后最基本的x-window-system-core、gdm等东西的安装参看那些文章。

二、编译安装最新版的Fluxbox

首先说一下我的系统环境:Ubuntu 6.10 Edgy Eft,以下所有配置均基于这个环境,KDE环境下是不是有差别我没有试验。
到Fluxbox主页下载最新的源码包,解压,在终端中cd进解压目录,输入以下命令:

    ./configure
make
sudo make install

安装完之后,设置GDM,即可以在GDM界面选择从Fluxbox还是Gnome等别的环境启动:

对于没有安装任何桌面环境的用户可以在自己主目录下创建.xsession 文件,填入下列内容:

    exec startfluxbox

或者创建.xinitrc 文件,填入如下内容:

    exec startfluxbox

对于需要在多个环境下切换的用户可以这样做:

    cd /usr/share/xsessions

然后:

    sudo vim fluxbox.desktop

填入以下内容:

    [Desktop Entry]
Encoding=UTF-8
Name=fluxbox
Name[zh_CN]=fluxbox
Name[zh_TW]=fluxbox
Comment=This session logs you into fluxbox
Comment[zh_CN]=此会话使您登录到 fluxbox
Comment[zh_TW]=選取這個作業階段後會進入 fluxbox 環境
Exec=fluxbox
TryExec=fluxbox
Icon=
Type=Application

保存后退出。

三、进入Fluxbox并编辑配置文件

在GDM的会话中选择从Fluxbox启动,输入用户名和密码进入Fluxbox的环境。

    cd ~/.fluxbox
ls

如果没有以下哪个文件,就建一个。
和Linux下大部分程序一样,Fluxbox的所有选项都保存在几个配置文件里面,最重要的是"init","apps","menu"和"keys" 这四个文件。
init文件是主设置文件,但是这里我们不作配置,其实主要的配置都在另外三个文件里面,init文件只是用来索引的。

3.1 配置apps文件

apps文件主要用来管理随系统启动的程序。我的apps文件内容如下:

    [startup] {gnome-settings-daemon}
[startup] {tilda}
[startup] {xbindkeys}
[startup] {basket -h}
[startup] {conky}
[startup] {fbsetbg -f /home/lans/.wp.jpg}
[startup] {xscreensaver -no-splash}
[startup] {klipper}
[app] (kwrite)
[Dimensions]    {817 614}
[end]

它的书写格式应该一眼就看出来了,也就是"[startup] {xscreensaver -no-splash}"的形式,方括号加startup即告诉系统在启动的时候加载后面大括号中的程序或命令。

由于窗口管理器只是用来管理窗口行为的工具,所以这里为了配置一个功能较为齐全的桌面环境,下面介绍一下随系统启动的这几个程序的作用,这些程序不 必都安装,你可以选择自己需要的安装,也可以加入别的工具,这就是Linux的好处之一───给用户最大的自由选择的权力。

gnome-settings-daemon:Gnome环境的参数设置后台,虽说用的不是Gnome环境,但是日常使用的程序不是Q4(KDE) 的就是GTK(Gnome)的,在使用GTK程序的时候如果没有启动这个服务,界面将会很难看,如果你的系统资源很紧张,或者不在意界面的话可以不设置这 一项。

tilda:一个基于GTK的终端机,特点是可以设置为无边框和菜单,支持透明和热键呼出,可以无缝嵌入桌面,用起来很方便且美观,可设置成启动时 隐藏,再在这里设置成开机启动,这样再用到终端机的时候只需按下热键就可调出。

xbindkeys:一个为Xwindow设计的热键定义工具,功能较为强大,一次设置之后可以在任何桌面环境下使用,对于经常在多个桌面环境切换 的用户来说很方便,我在另一篇文章《GUN/Linux下跨桌面环境 的热键工具xbindkeys》里面有较为详细的介绍。

basket:KDE下的笔记管理程序,功能非常强大,我主要用来作记事本。

conky:一个将系统当前信息呈现在桌面上的工具,便于实时监控系统。它在安装之后如果你建立了它的配置文件并作了配置的话有时候会出现总是闪个 不停的现象,解决办法见我另一篇文章《Conky闪烁问题的解决办 法》

fbsetbg:Fluxbox自带的桌面背景设置工具,你只需要把后面的"/home/lans/.wp.jpg"替换成自己的壁纸所在的路径即 可,支持PNG和JPG格式的图片。-f参数表示将图片放大到全屏,该程序详细的参数和功能可以使用"man fbsetbg"查看,这是Linux下学习的一个很重要的手段。

xscreensaver:一个Xwindow的屏幕保护程序,这里加载它主要是用它来锁屏,Linux下如果没有锁屏工具,尤其在公共场合,后果 非常严重。另外我发现如果启用xscreensaver的屏幕保护功能的话会出现Xwindow崩溃的情况,具体什么原因还不得而知,所幸我不需要屏保, 所以直接禁用了它的屏保功能。参数–no-splash是让它在启动的时候不显示闪屏。

klipper:KDE下的剪贴板工具,经常进行文字处理的人比较常用。

3.2 配置keys文件

keys文件主要是管理Fluxbox热键定义,Fluxbox热键功能非常强大,不但可以定义键盘快捷键,还可以定义鼠标快捷键、键盘和鼠标搭配 快捷键,完全可以用键盘操控计算机,这是在Windows下不可想象的。它的具体参数参看Fluxbox文档,网上有中英文版本。

我在每个桌面环境下面只定义和该环境息息相关的一些功能的热键,比如窗口的打开和关闭,最小化和最大化等,而常用程序的打开等热键交给 xbindkeys管理。以下是我的keys文件:

    #下面列出的只是我最常用的功能及按键,如果在设置的时候不知道哪个按键的名字,可以使用以下方法:
#查看某一键的名字:在终端中打开xev,然后按该键,显示一段文字,其中有这么一段:
#(keysym 0xffb5, KP_5),这是在按小键盘上的5之后的提示,其中KP_5即是键名。
#自定义快捷键
#特殊键名:
#Windows徽标键:Mod4;左右Control键:Control;左Alt键:Mod1。
Mod1 Left :PrevWorkspace
Mod1 Right :NextWorkspace
Mod1 q :Close
Mod1 z :Minimize
Mod1 x :MaximizeWindow
Mod4 d :ShowDesktop
Mod4 grave :RootMenu
Mod4 s :ShadeWindow
Control KP_1 :SendToWorkspace 1
Control KP_2 :SendToWorkspace 2
Control KP_3 :SendToWorkspace 3
Control KP_4 :SendToWorkspace 4
Mod1 KP_1 :Workspace 1
Mod1 KP_2 :Workspace 2
Mod1 KP_3 :Workspace 3
Mod1 KP_4 :Workspace 4
Control Mod4 Mod1 k :KillWindow
Control Mod4 Mod1 q :Quit
Control Mod4 Mod1 r :Reconfigure
Control Mod4 Mod1 s :Restart
#系统自带的快捷键
OnDesktop Mouse1 :HideMenus
OnDesktop Mouse2 :WorkspaceMenu
OnDesktop Mouse3 :RootMenu
OnDesktop Mouse4 :NextWorkspace
OnDesktop Mouse5 :PrevWorkspace
Mod1 Tab :NextWindow
Mod1 Shift Tab :PrevWindow

上面热键的格式一目了然,不多说了,冒号后面不要有空格,直接跟该热键所对应的功能,这些功能具体都是什么意思,相信只要有一点英语基础就能看懂, 如果不懂或者想定义更多的功能,参看Fluxbox文档。

3.3 配置menu文件

这是管理菜单的文件,Fluxbox在默认的状态下任务栏中不带有类似Gnome和KDE中那样的菜单按钮,在桌面上点右键会弹出这样的一个菜单, 但是我感觉用处不大,常用程序设置热键就行了,或者直接在"打开"对话框中输入名字,在菜单中选择效率太低。

在安装Fluxbox的时候应该已经生成一个菜单文件了,如果没有,可以使用以下命令来创建:

    fluxbox-generate_menu

以后新安装了程序也可以再次使用以加入该程序到菜单,但是自动生成的菜单会有两个问题:一,有些程序似乎没有被检测到,很多安装过的程序没有出现在 菜单上。二,顺序不合理,自动生成的菜单中各个程序的排列和归类不尽如人意。

这时候就需要自己设置了,由于我很少用菜单,另外各人使用的程序不同,所以这里就不贴出我的menu文件内容了。

menu中定义的格式如下:(摘自LinuxTOY上TOY的文章《Fluxbox 配置点滴》)
菜单是可以分级的,第一级菜单以 [begin] 和 [end] 配对,而第二级菜单则以 [submenu] 和 [end] 配对,如果在第二级菜单中包含同样的 [submenu] 和 [end],那么就属于第三级菜单,其他则依次类推。现在我们继续拆解,() 中的内容为菜单项目的名称,而 {} 的内容则为需要执行的命令,可以加上命令参数和选项,也可以带上路径,不过也有仅供显示用的情况。[exec] 表示执行一个命令。有时候,我们还可以看到菜单项目的前面包含图标,只要在执行的命令后面加上 <~/.icons/*.xpm> 即可。

四、桌面环境下各种程序的安装配置

每个人的习惯不同,用的程序也不一样,下面只是简要的介绍一下桌面环境里常用的一些种类的工具,以求尽快配置好一个较为完整的桌面环境,从而尽快可 以用来工作学习而不致等到用的时候才发现还没有配置。至于每个种类哪个程序最好,不是本文谈论的范围,事实上我一直认为没有最好的程序,只有最适合自己的 程序。

4.1 grun

类似于Gnome下的运行对话框,grun是一个具有相同功能的独立程序,我在各个桌面环境中都用它,因为它具有记忆的功能,你用得最多的程序的名 字都会优先显示,可以自动搜索匹配的程序,从而使你不必敲入程序的全名就可以启动该程序,别的桌面环境也都有运行对话框,但是没有比这个用起来顺手的。 Fluxbox自带的也有一个运行对话框,但是我还是用这个。安装后,在xbindkeys或系统中设置热键,以后使用热键即可调出grun。

4.2 ksnapshot

KDE下的桌面截图工具,使用"ksnapshot"命令截取全屏,使用"ksnapshot -c"命令截取当前窗口,更多选项可以使用"ksnapshot –help"查看。在xbindkeys或者系统中定义热键。

4.3 kfind

KDE下的图形界面搜索工具。功能比Gnome下的强大。

4.4 krusader && nautilus && rox-filer

前者是基于KDE的文件管理工具,非常像Windows下的Total Commander,在Windows下TC是最强大的文件管理工具了,krusader的功能自然也不差。另外我觉得这么强大的工具在Linux下的重 要性比在Windows下要弱一些,因为Linux的体系架构比Windows优秀很多,换句话说即使不用这种东西,在Linux下面工作效率也是非常之 高的,而在Windows下面没有TC这个东西的话我真难想象那个难受劲儿。

nautilus是Gnome默认的文件管理工具,用惯了,所以现在也经常用,不在Gnome环境下的时候注意启动时加"–no-desktop" 的参数,如果不加,它会自动接管桌面,并放置Gnome下定义的壁纸。

rox是一个轻量型的文件管理工具,它也可以接管桌面从而定义桌面壁纸(这个功能不是默认的),如果对这个感兴趣,可以查看网上相关文章。

上面三个给我的感觉是:krusader强大,nautilus顺手,rox速度快。

4.5 Htop && gnome-system-monitor

前者是命令行界面的系统进程管理器,可以方便地查看当前系统的进程信息和系统资源占用情况;可以设置热键指向"gnome-terminal -e htop",来调用;后者就不用说了,Gnome默认的系统监视器,类似于Windows下进程管理器的东西。

4.6 amixer && alsamixer

如果你使用的不是KDE、Gnome这样的桌面环境,可能会发现居然没有一个图形化的音量调节工具,这两个都是命令行界面的音量调节工具,前者完全 基于命令行,后者是伪图形界面;我选用前者,用热键绑定的形式来控制音量:每按一下热键增加3%的音量:"amixer sset Master 1+ unmute",减少:"amixer sset Master 1- unmute",静音:"amixer sset Master mute"。

4.7 打开光驱

直接绑定热键到"eject"命令。

4.8 锁屏

在xscreensaver打开的状态下使用命令"xscreensaver-command –lock",最好用热键绑定。

4.9 清空回收站

这些窗口管理器下大多也没有清空回收站的工具,我通过绑定热键到命令"rm -r ~/.Trash/*"来达到目的。

4.10 主题的安装

Fluxbox支持主题,而且很多主题都非常漂亮,可以到http://tenr.de下载,然后解压到主目录下的".fluxbox"目录下的 "styles"目录中,程序启动Fluxbox,在系统菜单的"fluxbox menu"下的"user styles"里面选择。

五、可以开始工作了

好了,至此一个非常节省资源的桌面环境就构建完成了。另外一些像网络浏览器、多媒体播放程序等这里就不再介绍了,安装自己喜欢就行了。上面说到的方 法、工具如果谁觉得有比我的更好的方案,比如还有我不知道的音量调整工具、回收站管理等,可以发邮件到我的邮箱(lenin.lee#gmail.com 将#换成@)交流,如果提问题的话最好先在网上搜一下,或者到论坛上发贴问,我平时比较忙,可能回答得非常慢。

没有评论: