平铺式窗口管理器——Awesome
[撰文/Kardinal]
首先科普一下 Tiling window manager,直译就是“瓦片式窗口管理器”;意译为“平铺式窗口管理器”。
假设你需要同时监视多个程序的状态并进行操作(这种情况非常之普遍),你就需要不停的按Alt+Tab切换,但是这会加速Alt尤其是Tab的磨损(手的磨损忽略了,因为它是可再生的)。
聪明的人就会想出这一招,见图1:
但是要先调整窗口布局,而且总是不太合适,有点缝隙啥的,分散注意力。
而在Tiling window manager 中,无论有多少个窗口,都会把屏幕占满,见图2:
它的窗口没有标题栏(标题在状态栏上),边框尽可能的窄(可再设置为0),以最大程度的节约桌面空间。
awesome还有超低的资源占用率。
完全的键盘控制(在普通的窗口管理器中,完全键盘控制是不现实的,因为调整窗口位置无论如何要用鼠标。而Tiling WM中则不需要调整窗口位置)
首先把修饰键设置为WIN键,这样不会和其它的快捷键冲突。附件里有配置文件,可以直接使用。
- WIN+数字键 切换工作区
- WIN+Space 切换窗口布局比如水平布局下,新开窗口与原窗口水平分割桌面。
布局有下面几种:
- 水平布局与垂直布局各两种,区别在于新开窗口的位置。它们是最常用的布局
- 全屏布局。这个不实用,可以用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试遍了。把它们的特点/缺点汇报一下:
- DWM 窗口布局较少,标题栏中文乱码(不过有中文补丁可以解决这个问题),使用鼠标操作窗口极易造成混乱
- WMII 调整窗口大小要用鼠标,每个窗口顶部有微型标题栏,标题栏乱码
以下是第一时间删除的,还有一些记不起名字了:
- xmonad 要安装体积超大的Haskell
- ION3 标题栏中文,风格不喜欢,窗口间有缝
- larswm 同上
Read More:
最近强文不断。好啊。awesome很有潜力。而且一直在进步,我很看好啊
汗阿,我正在埋头写一个ion的文档,没想到撞车了。看起来awesome也不错,有时间尝试一下。我干脆提供imb上面一个ion文章地址。http://www.ibm.com/developerworks/cn/linux/l-cpion.html
顺便把我刚才打的草稿贴上。
Ion 是一种平铺(tiling)窗口管理器。 最好地实现了速度、特色、扩展性和可配置性的平衡。Ion 的大小只有160k。它适合以工作为中心的Linux用户,不适合追求超炫特效和主题的用户。不过Ion很另类。
Ion最大的特色就是平铺,就是窗口没用重叠,最大,最小这些特性。你一定会奇怪,没用这些功能那还怎么干活?实际上这正是Ion的优点,回忆一下,你平时花费了多少时间在窗口的切换,最大最小化上面。
Ion支持Tab,你可以把Ion想像成一个Firefox,而Ion里面不同的窗口就是Firefox里面不同的页面。你可以用鼠标切换这些页面,也可以用键盘切换。你还可以给这些页面打上一个书签来标记它。
Ion里面的主要概念包括frame,tab,desktop. desktop和其他窗口管理器一样,就是虚拟桌面。在Ion里面按F9可以新建一个桌面,你可以不限制的建立桌面。用左Alt+(左右箭头)可以切换桌面。frame你可以看成是一种分割屏幕的方式。默认启动Ion只有一个空的frame,你可以用Alt+s或者Alt+k+s来切割屏幕,Alt+n来调整frame的大小。这样你可以把屏幕按你的要求随意分割。然后你可以按F2来运行一个xterm,或者是F3来运行特定的程序。当你在一个frame里面运行了多个程序,那么这些程序之间就用Tab来区分。
Ion里面的另一个特色,键盘化的窗口切换。 在desktop之间切换,可以用alt+数字在不同的desktop切换。也可以用alt+左右箭头来切换。 在frame的切换,alt+tab切换到右边frame,alt+k+tab,切换到左边的frame,alt+N,切换到下面的frame,alt+P切换到上面的frame tab之间的切换,alt+k+p 切换到上一个tab, alt+k+n切换到下一个tab 全局的切换,alt+k+k 切换到前一个活动的tab,这样可以方便的在两个不同的tab之间来回切换。 这都是常用的快捷键,详细的可以参考man page, 如果你觉得麻烦,你可以自己定制更简单的绑定。配置语言是用的lua.
您可以查看 Ion 主页上(http://modeemi.fi/~tuomov/ion/)关于 Ion 的平铺方式和标签的屏幕截图。那些屏幕截图看起来并不吸引人,因为 Ion 本身并不很吸引人 —— 但它确实(难以置信地)实用。它的惟一目标是完成工作,自始至终没有使用任何华而不实的东西,比如主题。在使用 Ion 之前,我使用过 Enlightenment,我必须承认,因为缺乏主题,Ion 在开始时一点都不吸引人,但是最后,Ion 让我全神贯注于窗口 内部的内容,而不是它们的装饰品。所以我建议,如果您要尝试 Ion,那么至少给它一天时间。第一印象是如此不好,使得您可能会厌恶 Ion,而您厌恶的理由恰恰是它成为优秀的窗口管理器的原因:它的简单。
ls,这篇是老帖了`
我的ion2 http://farm4.static.flickr.com/3011/2734155608871ea9cc31b.jpg
@hmy: 虽然是草稿,但也很有价值,我给放在 http://linuxtoy.org/archives/ion-2.html 了。谢谢!
回2楼,最后一段是从ibm那个文章里面选的,不过其余的都是自己一个字一个字敲的。
不好意思,我Thinkpad T43没有Win键怎么办?
Gnome 和 KDE 不是窗口管理器,而是桌面环境。而 XFCE 是一个轻量级的桌面环境。Gnome 环境下默认的窗口管理器为 Metacity,KDE 为 KWin,XFCE 为 XFWM。三种桌面环境的窗口管理器一般都可以随意替换。因此用户可以搭配使用 Gnome + Openbox,KDE + Compiz 等等……
本文的截图堪称丑陋……建议去 Archlinux 的论坛里面浏览下截图月经帖……有很多极漂亮的 Tiling WM 配置,并不是说用 Tiling WM 就要放弃“养眼”的。(当然这个“养眼”的定义和 Compiz 截然不同。)
就 Archlinux 社区来说,比较流行的 Tiling WM 有下面几种。楼主有兴趣的话不妨对比试用一下: (按大略的流行程度排序) awesome dwm xmonad ratpoison 其余(ion3、wmii 等等)
顺便列下非 Tiling WM: openbox pekwm compiz fluxbox e17 (desktop shell) 其余(evilwm、fvwm 等等)
to:k 窗口管理器的概念我还不至于不明白的^_^!! 但是我介绍的重点的不是那些,所以为了简化概念和字数,就不掰着手指头数了……
awesome我认为的缺点只有一个,窗口布局不够灵活,不过问题也不太大
嗯,只不过把 Gnome 和 KDE 直接列在窗口管理器里面还是让人觉得有些……
awesome 最近比较流行的。3.0 的进步貌似比较大。(好久没关注了,道听途说而已。)xmonad 刚出的时候比较受追捧,现在 Archlinux 论坛里基本已经看不到用这个的了……其他用的人都很少。其实我发觉最近很多Arch用户都从平铺WM换回了 Openbox 或 Pekwm。返璞归真?天知道。反正我自己还是觉得 Openbox 清爽。Pekwm 主题要更漂亮些,但中文的窗口标题显示之类貌似还有些小缺陷,渲染效果比 Openbox 差一个级别。至少两个月前是这样~
忘了 PS:看到 Gnome 和 KDE 的地方就开始回复了,没看到后面的总结,不好意思。 ;D
另外,我听说很多用户抛弃 ion 是因为作者对待用户的态度的问题……八卦而已,如不属实,纯属正常。
ion3似乎被作者放弃,作者又要去搞另一个东东。导致debain etch里面都有不提供ion3的包。不过最近似乎又在继续开发了。 不过就我个人观点,ion2已经最够日常使用了,而且非常好。就算不发展也无所谓:) ,标题栏的中文支持没去管,遇到中文就显示问号,其实压根不影响使用。用了大概3年ion,没遇到过崩溃的情况。最久一次连续开机时间是1年半,也没崩溃过。
to:k 他的态度我也听说了,不过我不太介意,牛人一般都比较有个性,随他去,又妨碍不到我…… 关键是ion的标题栏怪怪的,感觉没什么用……很久前用的,记不清楚了,反正感觉很怪异
感觉在两种窗口管理器里他们是挺接近的,选awesome的人通常会选openbox,反之亦然
我的Fvwm已经被我配得跟tiling wm差不多了……
大汗,再补一帖:
“桌面背景 Tiling WM中不需要”
就我自己所见,其实 Tiling WM 的用户大部分都倾向于使用命令行程序,并且喜欢将终端(95% 以上是 urxvt)设为透明,配合桌面背景会有比较好的养眼效果。
还有一些BT拿着 Tiling WM 当普通 WM 用的,全部桌面都设为 Floating,纯粹只是看上好玩的状态栏 widget……说到这个,awesome 的一个大优势应该是自带的状态栏设置 widget 比较方便(配合使用 amazing)。不需要像 dwm、xmonad 一样麻烦地设置 conky-cli、dzen 之类。
awesome 的配置也很方便吧?使用 .awesomerc 文件这样方式对一般的 Linux 用户来说再熟悉不过了。不像 dwm、wmii 需要重新编译(虽然听说也不麻烦),而 xmonad 的配置甚至需要懂 LUA 语法(虽然曾鼓捣过 WOW 的插件,对这个仍然一窍不通……)。其他的我自己其实没用过,不发表意见,嘿嘿。
FVWM 强大归强大,实在太不友好,没法适应……悲哀呀。用户群似乎也过于单薄了,导致交流共享缺乏?
看来,我不用写关于Tiling WM的文章了,今天一下子好几篇。其实,以上提到的关于汉字的问题其实都不是问题,只要正确设置字体就好了。用xfontsel选WenQuanYi之类的就可以。只不过,中文字体中的英文字都很难看,所以不美观。Wmii和dwm等都只能选一种字体,所以就很丑了。
其实,这些Tiling WMs大同小异,只是各自有自己的特点。 ion3没用过,因为它有奇怪的版权要求。 wmii的设计参照了Plan 9系统,所有的窗口状态都是一个文件系统。而且,它特有column的概念。wmii特别适合那些喜欢自己编程的人,因为plan 9文件系统的操纵真的是太棒了。成功的例子有,ruby-wmii(http://eigenclass.org/hiki.rb?wmii+ruby),还有rumai。 dwm非常简单,就是每次设置都要重新编译。这个在archlinux,gentoo这样的平台上不成问题。我不喜欢dwm的地方在于它的扩展性很差,没有什么更多的功能。
awesome是很新的一个WM,其实是一个dwm的扩展,增加了很多功能,比如xft的支持、多显示器的支持、widgets等。我建议初学者用用awesome (2.3)。awesome(2系列)的配置比较像CSS,很好理解。awesome的wiki和maillist也很好。awesome很快就要有awesome 3 系列了,开始使用xcb,大大提高速度和效率。不过,由于awesome太新了,配置方法每天都在变。awesome3开始用lua了。不想天天折腾人使用前还是要多多考虑。
我现在在用xmonad,文中提到haskell的包很大。这一点没用错。但是,作者可能不知道的是,其实haskell的类库不是必需的,在你“编译”完xmonad.hs之后,你其实可以去除所有的haskell包,因为你已经有了一个独立的可执行二进制文件了。只不过,你一但更改了某些设置后就没有办法在重新“编译”了。
我选择xmonad主要有两个原因: 1.xmonad对于多显示器的支持是最棒的!它有独特的workplace的概念。比如说,xmonad可以把一个窗口从一个显示器送到另一个,没有一个其他的WM可以做到(ion3可能可以;wmii/awesome可能可以实现,但是要自己进行很复杂的编程)。 2.xmonad是最具有可扩展性的,有成百上千的extension。
我现在有时间会学一点haskell,真正明白了以后会详细介绍haskell。
多显示器支持一般是由xorg或者x11那层就完成了(普遍用xinerama)。ion2也能很好的支持多显示器。可以方面的设置多个显示器组成一个screen,还是每个显示器一个screen. 说到多显示器,有个软件不错,xdmx,不知道linuxtoy是否已经介绍过了。可以把多个x server 组成一个xserver来用,适合多显示器用户。
to:phabulosa
文泉驿的字体似乎不能用在wmii上,因为它要求字体的编码是unicode 文泉驿点阵宋体肯定不行,其它的没有试过(只用点阵宋体和雅黑,其它的不装:)
关于xmonad: 没有多个显示器,所以不太关心这方面的应用 xmonad看起来挺复杂的样子,老兄有空写个教程学习下:D
看起来这个比dwm好啊,回头一定要试试
xmonad看起来挺不错
我是用wmii的,因为工作语言是ruby,wmii可以很方便的用ruby来扩展,就是对中文支持不太好,貌似不是wmii本身的原因而是字体的问题。邮件列表里面有日本用户是可以正常显示日文的。
我用过一段时间wmii,操作很简单。 如果metacity有平铺的功能就好了
Windows也有平铺窗口功能的。。
看大家都谈WM,我也说两句。楼上兄弟们提到的这些平铺WM,我几乎都试过,开始受hmy指引,放弃了icewm,使用的ion2、ion3 1年多,大部分时间用的ion3多,发现过一两次异常,原因未知(估计是ion3的bug),后来用了三个月的wmii,有几次发现资源占用大、keyboard无效的情况,google知道是wmii设计问题;转向dwm,很小,没有什么依赖包,可是配置编译麻烦,升级还要重来,后面试过ratpoison,aewm++,echinus,dwm-lua,xmonad,awesome等各种类似的WM,xmonad看起来很好,但是要学习haskell麻烦,echinus也不错,但是没有awesome有新颖,开发进展也不如awesome。最后选择了awesome,没有发现异常。正准备准备尝试3.0版本。谢谢hmy的指导,也谢谢楼上Kardinal、K、phabulosa等各位的精彩介绍
Xmonad也不错的哦!
附件的config 一登录就出错
有什么设置么
楼上的可以用awesome -k configfile 检查一下配置文件
这种东西不是一般人能用的
汗,我既不是高手,也不是准高手,半高手,伪高手。
受教了,以前还不知道,下个用用看看
很喜欢平铺的理念,只是我的显示器太小,铺不开。。。
昨晚试用了,把所有的Mod4改成Mod1 , Thinkpad的win键组合不好按 任务图标提示的东西不知道在哪里,比如eva有消息来了一直闪的提示
托盘栏是一个浮动的小窗口,可以按住MOD1键,用鼠标把它拖到标题栏的位置,这样就不挡视线了
用sawfish做窗口管理器也可以实现这种平铺功能.
平铺确实很方便的.
有点说下: gnome, KDE 不是 窗口管理器. 不要把庞大的桌面环境和窗口管理器混淆了. gnome默认的窗口管理器metacity也不过3M.
几个都试了下,现在把xmonad弄到kde里面了, 感觉还不错
有什么合适的panel可以方便地在使用awesome时提供systray功能么?
@yegle: awesome3中有systray的widget,可以直接创建systray。 mysystray = widget({ type = "systray", name = "mysystray", align = "right" })
@dkeehl: 平铺和显示器大小没关系,我一般每个屏幕(awesome中对应的是tag)都只放一个窗口,直接占全屏,通过换tag来切换到不同的程序。一般可能也就是把IM软件和其它软件放在一起,其它软件都是单独使用的
平铺流的,好像都没有完全兼容EWMH/NetWM的。
[...] 平铺式窗口管理器——Awesome [...]
最近迷上emacs,打算把wm也emacs化。发现除了sawfish这个用可以emacs lisp定制的wm外,还有
ratpoison:用c写的,很小很高效,快捷键和哲学都像gnu screen stumpwm:整个把ratpoison用lisp重写,超级强大超级bt,有一个screencast演示http://www.archive.org/details/TheStumpWMExperience,囧
@najja 貌似另外两个(除了sawfish)都是tiling window的?
@pythonikkat 是的,不过俺昨天试了试sawfish和ratpoison,最终还是乖乖地回到xfce下了
看到那么多人也用xmonad,好激动啊!
"WMII 调整窗口大小要用鼠标,每个窗口顶部有微型标题栏,标题栏乱码"
可以用键盘调整窗口大小,需要编译最新的版本 乱码纯粹是你字体配置有问题
单显示器下xmonad和wmii从key binding到可扩展性各方面都差不多,多显示器环境xmonad的确无敌。。。另外haskell编译出来的东西比plan9+ruby运行快一点
汗~我用apt安装了,怎么使用?
http://hyperrate.com/topic-files-dir/40/6140-qJtcP3Odzi/awesome.html 一个繁体中文版的 awesome 教程
lxde + awesome 的組合應該會讓格主更滿意才是 :D
err ... 發現剛剛一時腦殘回錯 ... 當我上一個留言沒回吧 Orz
不過有空格主可以去把玩一下 LXDE :)
弱弱问一句,dmenu是什么东西,哪去下?ubuntu里面好像只有个pdmenu
Ubuntu里面,dmenu应该是dwm这个包的一部分
上学时用过两年多 enlightenment R16,蛮喜欢的,配置不复杂,功能够强,也算轻便,相当华丽了
awesome 到底有啥好的?
我只用fluxbox +dmenu, 试过awesome, 只觉得不方便, 正准备学习学习如何配置和组织窗口, 突然发现awesome的资源占用率比fluxbox还高, 同志们... 那我何苦来捏?
其实大多数情况下我们只需要tile俩个窗口来对比内容什么的, awesome一下子把所有窗口都tile了, 搞的我什么都看不清... 在fluxbox里我只需要按住alt, 然后用右键可以调整任何窗口的大小, 或者用左键移动窗口, 比一个个调整awesome里的无数tile窗口要效率高多了吧? 更不用说大家要花多少额外的时间来配置awesome来适应自己的习惯? 太无聊了... 我还是用好一个fluxbox比什么都强!
配置不复杂,功能够强,也算轻便
ubuntu里面好像只有个pdmenu
还是觉得FVWM不错,尽管配置有点复杂