Awesome

来自Ubuntu中文
没头苍蝇留言 | 贡献2008年10月21日 (二) 11:03的版本 (错别字)
跳到导航跳到搜索

Awesome

Awesome是一个可高度自定义的平铺式窗口管理程序。它的程序体积非常小,运行速度飞快,并且可以自定义运行界面显示逻辑等等。

[email protected]

什么是平铺式窗口管理?

简单来说,所谓的平铺就是之所有的窗口都不会相互重叠,而是自动的被调整大小使得它们能够刚好占满整个屏幕。这和传统的桌面环境的概念相差很大,也许你会疑问这样的环境下如何工作?

事实上对于Linux这种需要大量使用命令行的操作系统来说平铺式窗口管理在很多情况下能够极大的提升你的工作效率。举个例子,很多时候你都需要打开好几个命令行。在gnome底下这就意味着好几个会相互遮挡命令行窗口,大多数时候如果你想要同时看到这些窗口上面的内容就得费神费力的调整它们的位置和大小。而在平铺是窗口下面你完全不需要为这些事情烦心。

另外一个可能会促使你使用平铺的理由就是,用它来调整、切换窗口几乎可以不使用鼠标。这对于硬派的linux狂热者以及痛恨使用笔记本触控板的人来说也是一个不错的选择。

为什么是Awesome

Awesome体积小巧反应迅速,而且在3.0版本下可以通过自己编写Lua配置文件来控制窗口逻辑和界面,灵活性非常好。通过lua相关的库再结合shell脚本可以做出很多很酷的东西。

老版本的Awesome2配置文件和编译方法差异很大,这里讨论的Awesome指的是Awesome3。 官方网站: http://awesome.naquadah.org/

编译 & 安装

官方wiki中的编译指南地址:http://awesome.naquadah.org/wiki/index.php?title=Awesome-3-Ubuntu-git

  • 升级系统
$ sudo apt-get install build-essential autoconf automake libtool gperf 
$ sudo apt-get install dpatch fakeroot git git-core
  • 安装编译所需的包
$ sudo apt-get install libx11-dev libxinerama-dev 
$ sudo apt-get install libxrandr-dev libpango1.0-dev 
$ sudo apt-get install libimlib2-dev libgtk2.0-dev
$ sudo apt-get install libxcb-shm0-dev libxcb-render0-dev 
$ sudo apt-get install libxcb-randr0-dev libxcb-shape0-dev
$ sudo apt-get install libcairo2-dev libxcb-xinerama0-dev
$ sudo apt-get install liblua5.1-filesystem0 liblua5.1-logging
$ sudo apt-get install libdirectfb-dev libxt-dev
  • 安装asciidoc(可选, 如果你不需要创建文档的话可以跳过这步)
$ sudo apt-get install asciidoc
  • 安装lua相关的包
$ sudo apt-get install lua5.1 liblua5.1-0-dev
  • 安装CMake

从如下地址下载:

http://packages.ubuntu.com/intrepid/i386/cmake/download

并且安装

$ sudo dpkg -i cmake*.deb
  • 安装libev

从如下地址下载:

http://packages.ubuntu.com/intrepid/i386/libev3/download

http://packages.ubuntu.com/intrepid/i386/libev-dev/download

并且安装:

$ sudo dpkg -i libev*.deb
  • 安装luadoc

http://packages.ubuntu.com/intrepid/all/luadoc/download

http://packages.ubuntu.com/intrepid/all/liblua5.1-doc0/download

并且安装

$ sudo dpkg -i *lua*doc*.deb
  • 编译依赖项

获取xcb-util:

$ git clone git://anongit.freedesktop.org/git/xcb/util
$ cd util && ./autogen.sh && make && sudo make install
$ apt-get source libcairo2-dev
$ cd cairo-1.6.0

编辑debian/rules文件,并且把其中的 "--disable-xcb" 都改成 "--enable-xcb", 并且把文件中的"dh_shlibdeps"都注释掉,并且保存

$ sudo dpkg-buildpackage -rfakeroot
$ sudo dpkg -i ../libcairo2_1.6.0-0ubuntu2_i386.deb ../libcairo2-dev_1.6.0-0ubuntu2_i386.deb

注意: 不要让包管理器把libcairo2和libcairo2-dev更新掉,否则会把他们改为老板本 导致awesome无法运行

  • 下载awesome并且编译安装
$ git clone git://git.naquadah.org/awesome.git
$ make && sudo make install

如果cmake报错说缺少某样软件包,用apt-cache search XXX命令搜索,并且像从源安装其它deb 包一样把它装上

注意: 如果编译过程终止并且显示错误信息 'error stating path', 只需要手工创建如下目录并且重新开始编译:

/usr/bin/lua5.1: /usr/share/lua/5.1/luadoc/taglet/standard.lua:447: error stating path `/path/to/awesome/.build-bill-i486-linux-gnu-4.2.3/luadoc' stack traceback:

$ mkdir /path/to/awesome/.build-bill-i486-linux-gnu-4.2.3/luadoc
$ make

如果这个无法解决问题的话可以试试如下命令:

$ rm -rf /path/to/awesome/.build-bill-i486-linux-gnu-4.2.3/luadoc
$ mkdir /path/to/awesome/.build-bill-i486-linux-gnu-4.2.3/luadoc
$ make
  • 创建 ~/.xinitrc 并且链接到 ~/.Xsession

~/.xinitrc中内容如下:

#!/usr/bin/env bash
xsetroot -solid black & 
exec /usr/local/bin/awesome 

创建一个从.xinitrc到.Xsession的软链接

ln -s ~/.xinitrc ~/.Xsession 
  • 大功告成。你只需要在登录界面选择'Sessions',并且在列表中选择'Xsession'。照常登录就能运行.xinitrc中的内容进入awesome了。

使用入门

相关概念

默认键位

如果你是一个和我一样懒的人,不介意自己的手指头被默认键位扭曲得像麻花的话,那么完全可以参照我这里给出的部分默认键位的介绍:)

当然你可以通过修改配置文件来更改这些键位。这里的Mod4可以在配置文件中定义,默认是Windows键。

Mod4 \+ Return
打开一个终端
Mod4 \+ F1
运行命令
Mod4 \+ Shift \+ c
关掉当前窗口
Mod4 \+ Control \+ r
重启awesome
Mod4 \+ Shift \+ q
退出awesome

Mod4 \+ j
切换到下一个窗口
Mod4 \+ k
切换到前一个窗口
Mod4 \+ Left
查看前一个tag
Mod4 \+ Right
查看后一个tag
Mod4 \+ 1-9
切换到tag 1-9
Mod4 \+ Control \+ j
切换到下一个屏幕
Mod4 \+ Control \+ k
切换到前一个屏幕

Mod4 \+ Shift \+ j
当前窗口和前一个窗口互换位置
Mod4 \+ Shift \+ k
当前窗口和后一个窗口互换位置
Mod4 \+ h
把主区域(master width)的宽度增大5%
Mod4 \+ l
把主区域(master width)的宽度减少5%
Mod4 \+ Shift \+ h
增加主区域窗口的数量
Mod4 \+ Shift \+ l
减少主区域窗口的数量
Mod4 \+ Control \+ h
增加非主区域窗口的数量
Mod4 \+ Control \+ l
减少非主区域窗口的数量
Mod4 \+ space
把当前tag更换为下一种布局
Mod4 \+ Shift \+ space
把当前tag更换为前一种布局
Mod4 \+ Control \+ space
切换当前窗口是否为浮动的

Mod4 \+ Shift \+ i
显示当前窗口的class和instance。这在写脚本的时候尤其有用

Mod4 \+ Shift \+ r
重绘当前窗口

配置

你已经按照之前的步骤安装上了Awesome。但是你会发现进去以后几乎什么都没有,gnome程序的界面没有了主题变得极其丑陋,屏保也不会自动运行了。其实只需要一些设置你就能让它变得很顺手。

首先我们来修改.xinitrc中的内容。

#!/usr/bin/env bash
sleep 100
xsetroot -solid black &
#启动屏保程序
gnome-screensaver &
#启用gnome的主题,否则你的awesome下的gnome程序会非常难看
gnome-settings-daemon &    
#电源管理程序
gnome-power-manager &      
#网络管理程序
nm-applet &                           
#自动更新程序
update-notifier &                    
exec /usr/local/bin/awesome

从3.0开始awesome转而使用lua作为配置文件的格式,配置文件位于~/.config/awesome/rc.lua。这一改变极大的增加了awesome的灵活性,但是也让配置文件变的庞大而复杂。

自动启动

每次开机都重复打开一些程序并且把它们移动到特定的Tag上面是一件很乏味的事情。Awesome并没有提供一个类似gnome的session管理之类的东西,但是我们可以通过修改配置文件来达到开机自动启动程序的目的。

在rc.lua中添加如下代码:

-- Autorun programs
autorun = "true"
autorunApps = 
{ 
    "firefox",
    "thunderbird",
    "amarok",
    "linux-fetion",
    "amule",
}

if autorun then
    for app = 1, #autorun do
        awful.util.spawn(autorunApps[app])
    end
end

其中把autorunApps中的内容替换为你想要运行的程序就可以了。 注意:X下的程序需要在Awesome启动完毕之后再运行,因而不能放在.xinirc中自动启动。另外在rc.lua中也只能通过awful.util.spawn("cmd")的方式来运行程序,其他的方式比如os.execute或者io.popen都会使awesome失去响应,原因还不清楚。

社区

很遗憾,国内用这个的人似乎还是很少。Awesome的官方网站上页只有一个邮件列表,没有论坛之类的东西。能找到国人讨论的地方有irc.oftc.net的#awesome-cn频道(不过通常都没什么人 Orz)


<待续>