2011-02-22 11:49:50

  看到这个标题,很多人一定认为桌面环境和窗口管理器是一回事,但严格来说窗口管理器和桌面环境是有区别的。桌面环境(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+q
dwm 运行的界面如下:

 
 
平铺式窗口管理器——Awesome
首先科普一下 Tiling window manager,直译就是“瓦片式窗口管理器”;意译为“平铺式窗口管理器”。
假设你需要同时监视多个程序的状态并进行操作(这种情况非常之普遍),你就需要不停的按Alt+Tab切换,但是这会加速Alt尤其是Tab的磨损(手的磨损忽略了,因为它是可再生的)。
聪明的人就会想出这一招,见图1:

但是要先调整窗口布局,而且总是不太合适,有点缝隙啥的,分散注意力。
而在Tiling window manager 中,无论有多少个窗口,都会把屏幕占满,见图2:

它的窗口没有标题栏(标题在状态栏上),边框尽可能的窄(可再设置为0),以最大程度的节约桌面空间。
awesome还有超低的资源占用率。
完全的键盘控制(在普通的窗口管理器中,完全键盘控制是不现实的,因为调整窗口位置无论如何要用鼠标。而Tiling WM中则不需要调整窗口位置)
首先把修饰键设置为WIN键,这样不会和其它的快捷键冲突。附件里有配置文件,可以直接使用。
WIN+数字键 切换工作区
WIN+Space 切换窗口布局比如水平布局下,新开窗口与原窗口水平分割桌面。
 
布局有下面几种:
水平布局与垂直布局各两种,区别在于新开窗口的位置。它们是最常用的布局
全屏布局。这个不实用,可以用WIN+m最大化/还原当前窗口
螺旋布局。似乎也不太实用,反正我很少用
逐渐减小布局。和上面的那个差不多
浮动布局。类似传统窗口管理器的布局
对于不规则的窗口,像Gimp、mplayer等,无论在任何布局下窗口都是浮动的。可以在配置文件里设定哪些程序使用浮动窗口。调整浮动窗口的位置时,按下WIN键,用鼠标拖动就可以了。
WIN+ENTER 开启预设的终端
WIN+SHIFT+C 关闭当前窗口
WIN+SHIFT+数字键 把当前窗口发送到其它工作区
WIN+j WIN+k 切换到其它窗口
WIN+h WIN+l 调整当前窗口大小这一组快捷键是VI风格的。
WIN+F2 运行程序
默认的不好用,我安装了一个dmenu。这东东真不赖。
 

看图 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试遍了。把它们的特点/缺点汇报一下:
DWM 窗口布局较少,标题栏中文乱码(不过有中文补丁可以解决这个问题),使用鼠标操作窗口极易造成混乱
WMII 调整窗口大小要用鼠标,每个窗口顶部有微型标题栏,标题栏乱码
上面两个WM和dmenu配合最完美。
 
以下是第一时间删除的,还有一些记不起名字了:
xmonad 要安装体积超大的Haskell
ION3 标题栏中文,风格不喜欢,窗口间有缝
larswm 同上

Linux桌面“彩”起来:桌面环境及窗口管理器大盘点的更多相关文章

  1. Linux Shell处理文本最常用的工具大盘点

    导读 本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实 ...

  2. 【Linux】Linux中在mate桌面和gnome桌面root自动登录设置

    [Linux]Linux中在mate桌面和gnome桌面root自动登录设置 GLL_ 2020-03-05 11:41:40  762  收藏 1 分类专栏: Linux 文章标签: linux 版 ...

  3. Window系统远程连接Linux服务器(非桌面系统)

    Window系统远程连接Linux服务器(非桌面系统) Window系统远程连接Linux服务器(非桌面系统),步骤: 第一步:下载Xshell远程登录软件:第二步:设置Linux服务器的IP.端口. ...

  4. Linux远程连接Windows桌面

    Ubuntu对初始用户的界面友好是有目共睹的:Fedora一向以创新.傲慢的姿态示人.其实,对于两者,我虽然更倾向于选择Fedora,但不可避免地会两者比较,发现Ubuntu更加人性化,这点是经过很多 ...

  5. ubuntu(linux)虚拟主机部署桌面,使用window链接

    买的ubuntu只有命令行,想安装一个桌面,远程操控 网上教程很多,我主要遇到一个问题,百思不得其解 之间安装的不是连接超时,就是拒绝连接 又重新参考这篇博客安装后才解决 说一下大致流程,详细的见这位 ...

  6. 阿里云服务器linux系统上 安装node环境

    今天将阿里云服务器重windows系统重置成了linux系统, 点击上面的实例名称,进入到 点击  更换系统盘   选择linux 的centos版本(操作前需要  停止实例) 弄好后,启动实例 下面 ...

  7. 基于Tcp穿越的Windows远程桌面(远程桌面管理工具)

    基于Tcp穿越的Windows远程桌面(远程桌面管理工具) 1.<C# WinForm 跨线程访问控件(实用简洁写法)>            2.<基于.NET环境,C#语言 实现 ...

  8. Linux下配置PHP开发环境

    转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件 ...

  9. linux驱动系列之调试环境搭建一

    2014年刚开始学习linux时,搭建环境花了很多时间.当时最熟悉的是单片机如Mag16和stm32,依据以往学习单片机的经验肯定要用下载器下载程序,但是我找了很久没有比较好的IDE,不像Mag16有 ...

随机推荐

  1. TCP UDP Socket 即时通讯 API 示例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. Intent 常用场景 FileProvider 拍照 裁剪 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. winrar5.50去广告教程(仅供学习使用)

    https://blog.csdn.net/EnigmCode/article/details/78328873 第一步:到WinRAR官网www.rarlab.com下载自己需要的版本,我这里选择C ...

  4. THINKPHP 错误:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

    最近公司同事将我之前使用Thinkphp开发的一个项目从香港迁移到国内阿里云服务器上去,结果网站所有地址打开全部一片空白 跟同事确认了PHP版本,Mysql版本等都是跟迁移前的配置一样的,最终经过我查 ...

  5. Git 以分支的方式同时管理多个项目

    你是否遇到过这样的问题: 你的客户在你们这边做了N个项目,而项目之间又存在着某些业务关联(数据库访问等) 之前你可能是这样处理的,为客户的每个项目创建单独的Git版本 PC项目 手机项目 微信项目 其 ...

  6. Java集合遍历时删除

    public static void main(String[] args){ List<Integer> list = new ArrayList<Integer>(); l ...

  7. [Docker] Building a Node.js Image

    Create a Dockerfile: FROM node:latest MAINTAINER Zhentian Wan ENV NODE_ENV=production ENV PORT= COPY ...

  8. Spatis service单元测试: 使用mock mapper的方式

    转载:https://blog.csdn.net/atec2000/article/details/54346242 @RunWith(MockitoJUnitRunner.class)public ...

  9. android中使用WebView请求本地网页

    使用WebView的方式请参考我的上一篇文章:android中使用WebView请求网页 这里说一下请求本地网页的方法: 本地网页应该把网页保存在src/main/assets目录下: webView ...

  10. You have version null and I want version 8

    删除hdfs上的/hbasehadoop fs -rm -r /hbase 删除zookeeper上的/hbasezookeeper-client -server 192.168.1.2:2181 r ...