看到这个标题,很多人一定认为桌面环境和窗口管理器是一回事,但严格来说窗口管理器和桌面环境是有区别的。桌面环境(Desktop Environments)是最近发展起来的桌面图形环境,它的主要目标是为Linux/Unix操作系统提供一个更加完善的界面以及大量各类整合工具和 应用程序,其简单易用性吸引着大量的新用户,Linux世界最常见的桌面环境就是GNOME和KDE。窗口管理器(Window Manager)是一个可以控制X窗口环境中窗口属性的软件。简单地说窗口管理器管理窗口的外观形式、桌面菜单、图标、虚拟桌面以及按钮样式等一切显示在 屏幕上的样式。如果非要用一个词来包括它们,就用“图形环境”吧。
说到最出彩的桌面环境,肯定是 GNOME 和Kde两个了。
GNOME 即GNU网络对象模型环境 (The GNU Network Object Model Environment),GNU计划的一部分,开放源码运动的一个重要组成部分。 是一种让使用者容易操作和设定电脑环境的工具。目标是基于自由软件,为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环 境,他是GNU计划的正式桌面。
KDE,K桌面环境(K Desktop Environment)的缩写。一种著名的运行于Linux、Unix以及FreeBSD等操作系统上面自由图形工作环境,整个系统采用的都是 TrollTech公司所开发的Qt程序库。KDE和Gnome都是Linux操作系统上最流行的桌面环境系统。
再说说其他图形环境,Xfce是一个运行在各类Unix下的轻量级桌面环境,暂且提它一提,它类似于商业图形环境CDE。它的作者是Olivier Fourdan。两年以前,Olivier Fourdan试图寻找一个快速、友好、高效的Linux桌面,于是XFce就这样诞生了。XFce最先是基于 XForms三维图形库,随后又开发了一些后续版本。去年Olivier Fourdan将其工作转移到GNOME的核心工具GTK+上。XFce最主要的特色是容易配置,整个过程都可以使用鼠标来完成,而不需要修改配置文件的 代码。最新版本的XFce还支持鼠标拖放、系统任务管理、多字节在内的多国语言以及其它特征。
Fluxbox是一个基于GNU/Linux的轻量级图形操作界面,它虽然没有GNOME和KDE那样精美,但由于它的运行对系统资源和配置要求极低,所 以它被安装到很多较旧的或是对性能要求较高的机器上,其菜单和相关配置被保存于用户根目录下的.fluxbox目录里,这样使得它的配置极为便利。
Openbox项目是一套完全遵循标准的快速、轻型、可扩展性强的窗口管理器。Openbox 3系列是一套全新的窗口管理器,没有继承以前任何一款同类软件的代码,尽管外观上还是很像Blackbox(Openbox 2系列的代码是基于Blackbox 0.65.0)。Openbox可以作为一个独立的运行环境,同时也可以仅仅作为窗口管理器来替代像KDE、Gnome等桌面环境的默认窗口管理器。
IceWM是一个超小型的轻量级窗口管理器,其主要特点是小和高速,设计之初就考虑了速度、可用性和与系统结合的稳定性;并且也不失灵活配置的特点。 优点: 1、体积小(安装文件仅仅1M多,占用空间6M左右) 2、启动快,原始界面类似windows(win95) 缺点: 1、界面单一, 对于喜欢华丽界面的使用者来说,没有必要使用(但是最近发布的几个版本已经大为改观了,配合xloadimage、rox-filer等软件还可以美化到 媲美Gnome桌面的水平)。 2、大部分应用程序必须依赖于Gnome或者是KDE桌面的库文件。
再说说FVWM,并不是任何人都会喜欢 FVWM。使用 FVWM 显然不像用 KDE,Gnome 的桌面那么简单,你需要自己对它进行配置。它是一个老牌的,长久不衰的窗口管理器,它永远以一个忠实的 Xwindow 窗口管理器的方式工作。使用 FVWM,你可以学到很多有关 Xwindow 的东西,你会很快的明白 Xwindow 的工作原理,见识到 Xwindow 的强大和灵活。如果你喜欢随意的控制自己窗口,让它们都乖乖听话,而不是老是跳出来挡在你面前。你喜欢随意定制自己窗口样式,喜欢快速高效的控制窗口,喜 欢节省资源,…… 总之,你是一个挑剔的人。那么 FVWM 就是你最终的选择。
Enlightenment是一个功能强大的窗口管理器,它的目标是使用户轻而易举地配置所见即所得的桌面图形界面。现在Enlightenment的界 面已经相当豪华,它拥有像AfterStep一样的可视化时钟以及其它浮华的界面效果,用户不仅可以任意选择边框和动感的声音效果,最有吸引力的是由于它 开放的设计思想,每一个用户可以根据自己的爱好,任意地配置窗口的边框、菜单以及屏幕上其它各个部分,而不需要接触源代码,也不需要编译任何程序。
Window Maker是一个计划为GNUStep应用软件提供额外综合支持的X11窗口管理器。它尽力模拟一流的NeXTSTEP图形用户界面,相对 NeXTSTEP图形用户界面,Window Maker运行速度更快、拥有更多的功能以及易于配置和使用。
AfterStep是一个基于NEXT操作系统的NeXTSTEP而开发的窗口管理器,最初起源于由BoYang所创的BowMan窗口管理 器,AfterStep开发者们由最初简单的模仿到力图改进、完善它的功能,决定改变BowMan的名称,于是AfterStep计划诞生了。 AfterStep的界面和NEXTSTEP由很多相似之处,但是值得注意的是,AfterStep为了满足不同的用户的需要,而做了大量的改 进,NEXTSTEP的界面没有给人一种非常舒适的感觉,所以AfterStep吸取了NEXTSTEP界面的优点,增加了很多有用的特征。
mwm(Motif Window Manager)遵循OSF(Open Source Foundation,开放源代码基金会)制定的Motif窗口管理标准,由于Motif采用OS/2操作系统的程序管理器作为其模板,所以所有的窗口特 性及快捷键都和OS/2和Windows完全相同。(OS/2本是由IBM和Microsoft共同研制开发的,但Microsoft中途退出了合作,自 己搞出了Windows,但Windows里的很多东西仍沿用了OS/2的思想)。Motif需要付费才能使用的,在许多商业Unix操作系统中已经提供 了mwm。
Blackbox是一个用C++开发的新颖窗口管理器,它没有共享其它窗口管理器的任何代码,设置是图片处理技术的实现都是重新开发的。和其它窗口管理器 相比,Blackbox最主要的特色是代码少,运行速度快,Blackbox所有的代码都是由 Brad Hughes (blackbox@alug.org) 和Jeff Raven (jraven@psu.edu)两个人开发和维护。由于其紧凑的结构、精练的代码使得Blackbox占有很少的系统资源。
Sawfish是一个基于Lisp脚本语言开发的可扩展窗口管理器,它并不是构架在twm之上,整个采用了全新的体系结构。用户可以通过修改个人配置文 件.sawfishrc中的Lisp代码,或者通过整合的用户定制系统来修改用户配置信息、更改组件和控制用户界面。
超轻量级窗口管理器:dwm
作者:vpsee
如 果把 X 窗口管理按照重量来划分的话,GNOME/KDE 是两大重量级桌面系统,XFCE 是中型桌面,FVWM, Fluxbox, Blackbox, IceWM 等可以看作轻量级的桌面/窗口管理器。更轻量级的窗口管理器就要数 dwm, xmonad, awesome, ratpoison 等了,这类管理器也叫做平铺窗口管理器(Tiling window manager),它们的特点是:占用资源很少,可以完全的键盘控制,窗口布局一般不叠加并且能平铺整个屏幕、不浪费屏幕像素尽量增加可视范围等,非常适 合服务器或者资源有限的机器使用。VPSee 就在一台古董级 Thinkpad上使用 DWM,一个工作区可以平铺6个窗口用来监视6个 Linksys WRT54GL 无线路由器的连接状况。
因 为大部分的工作和时间都锁定在 terminal, vim, firefox,mutt,没有理由为了这4个工具就安装几百兆臃肿的桌面环境,一个轻量的桌面环境能让我更好的把注意力集中在工作上。dwm 就是一款我需要的平铺窗口管理器,用 C 语言写的,全部代码不到2000行,不需要依赖其他库就可以编译,与其他几款平铺窗口管理器不同的是它没有可配置文件供修改,要修改它的配置只能通过修改 它的源代码,也就是说每次都需要通过修改 dwm 的源代码(其实就是一个头文件而已,config.def.h)、编译然后安装来配置 dwm. 也有一些平铺窗口管理器是从 dwm 分出来的,比如 awesome, xmonad 等。LinuxToy 介绍了平铺式窗口管理器:awesome 和另一个平铺式窗口管理器:ion,感兴趣的话可以比较一下。
使用技巧
启动 terminal:Shift+Alt+Enter
启动 dmenu:Alt+p
移动一个窗口到另一个 tag:Shift+Alt+2
转移到另一个 tag:Alt+2
关闭一个窗口:Shift+Alt+c
移动和重设窗口大小:Alt+mouse button
退出 dwm:Shift+Alt+qdwm 运行的界面如下:
平铺式窗口管理器——Awesome
首先科普一下 Tiling window manager,直译就是“瓦片式窗口管理器”;意译为“平铺式窗口管理器”。
假设你需要同时监视多个程序的状态并进行操作(这种情况非常之普遍),你就需要不停的按Alt+Tab切换,但是这会加速Alt尤其是Tab的磨损(手的磨损忽略了,因为它是可再生的)。
聪明的人就会想出这一招,见图1:
但是要先调整窗口布局,而且总是不太合适,有点缝隙啥的,分散注意力。
而在Tiling window manager 中,无论有多少个窗口,都会把屏幕占满,见图2:
它的窗口没有标题栏(标题在状态栏上),边框尽可能的窄(可再设置为0),以最大程度的节约桌面空间。
awesome还有超低的资源占用率。
完全的键盘控制(在普通的窗口管理器中,完全键盘控制是不现实的,因为调整窗口位置无论如何要用鼠标。而Tiling WM中则不需要调整窗口位置)
首先把修饰键设置为WIN键,这样不会和其它的快捷键冲突。附件里有配置文件,可以直接使用。
默认的不好用,我安装了一个dmenu。这东东真不赖。
- WIN+数字键 切换工作区
- WIN+Space 切换窗口布局比如水平布局下,新开窗口与原窗口水平分割桌面。
布局有下面几种:
对于不规则的窗口,像Gimp、mplayer等,无论在任何布局下窗口都是浮动的。可以在配置文件里设定哪些程序使用浮动窗口。调整浮动窗口的位置时,按下WIN键,用鼠标拖动就可以了。
- 水平布局与垂直布局各两种,区别在于新开窗口的位置。它们是最常用的布局
- 全屏布局。这个不实用,可以用WIN+m最大化/还原当前窗口
- 螺旋布局。似乎也不太实用,反正我很少用
- 逐渐减小布局。和上面的那个差不多
- 浮动布局。类似传统窗口管理器的布局
- WIN+ENTER 开启预设的终端
- WIN+SHIFT+C 关闭当前窗口
- WIN+SHIFT+数字键 把当前窗口发送到其它工作区
- WIN+j WIN+k 切换到其它窗口
- WIN+h WIN+l 调整当前窗口大小这一组快捷键是VI风格的。
- WIN+F2 运行程序
看图 4 顶部的状态栏就是dmenu的菜单 根据你的输入动态的显示匹配选项 用方向键进行选项
对于窗口管理器的选择,我们需要考虑的无非以下几点:
下面我们以辩证唯物马克思列宁毛爷爷主义的思想来分析一下:
- 配置 简单OR复杂
- 功能 强大OR实用
- 视觉 华丽OR朴素
——下面是我的结论,虽然看起来和上面的论述没什么逻辑关系——
- 配置除了FVWM这种矫揉造作的WM,配置起来严重麻烦;其它WM的配置方式虽然不同,但是配置的难度基本在同一量级。
- 功能这一方面,我想大多数人被忽悠了。别家有的功能,咱一定要有;别家没有的功能……那就是卖点。这 种无序竞争导致了WM中的大部分功能用户根本用不到,却占用了很多的系统资源。所以FVWM的卖点就来了——自由配置,想要什么功能自己加,用不着的功能 嘛……除非有病,不然谁费老鼻子的力气配置自己根本不需要的功能。
- 华丽的视觉效果养眼,不过效果不好。我用过一段时间的compiz,视力并没有好转。向别人炫耀,尤其是对华丽敏感的别人,比如说MM。占用更多的系统资源。
在长期使用的情况下,配置和视觉效果是可以忽略的,而最重要的是功能。那我们需要什么样的功能呢?大家应该注意到了:
为什么会这样?
- 重量级窗口管理器,如metacity(GNOME)、Kwin(KDE)等,它们的功能五花八门,差别也很大
- 而羽量级窗口管理,如Fluxbox、IceWM等等等等,它们的功能都差不多
上面说了,以功能强大为卖点的WM,它们之间比拼的是功能多少,所以功能多多益善。而以短小精悍为卖点的WM,则是越苗条越好,这是一种寻底竞争,最终结果就是保留最少的有用功能。而真正有用的功能,也就那么几个,没啥不一样的。
羽量级窗口管理都有什么功能呢?
所以,最终的结论就是,Tiling WM是高手、准高手、半高手、伪高手的最佳选择。
- 调整窗口位置,层次…… Tiling WM中的方式更有效率
- 桌面背景 Tiling WM中不需要
- 开始菜单、右键菜单 Tiling WM中不需要
- 键盘控制 Tiling WM中被强化
- 工作区
- 状态栏
- 运行对话框 Tiling WM中被强化
- 启动终端快捷键
另:我花了很长时间,差不多把能找到的Tiling WM试遍了。把它们的特点/缺点汇报一下:
上面两个WM和dmenu配合最完美。
- DWM 窗口布局较少,标题栏中文乱码(不过有中文补丁可以解决这个问题),使用鼠标操作窗口极易造成混乱
- WMII 调整窗口大小要用鼠标,每个窗口顶部有微型标题栏,标题栏乱码
以下是第一时间删除的,还有一些记不起名字了:
- xmonad 要安装体积超大的Haskell
- ION3 标题栏中文,风格不喜欢,窗口间有缝
- larswm 同上