[编辑] 使用入门

[编辑] 相关概念

[编辑] 标签 Tag

你可以把窗口放在不同的标签中从而实现对大量窗口的管理。每个窗口可以被放到多个标签中,每个标签有它自己的布局(layout)。 标签类似于gnome中的虚拟桌面,但却更为强大--你可以合并标签,或者同时显示多个标签中的内容,然后再回到单个标签的显示中去。

 

[编辑] 布局 Layout

布局是根据屏幕上的可用空间来调整窗口位置、尺寸的方式。Awesome支持多种布局

[编辑] 平铺 Tiled

平铺模式下屏幕被分为master和stacking两个区域。master中的窗口包含了需要最多关注的窗口(通常这表示master中的窗口会占据更大的屏幕空间),而stacking区域中包含了其它窗口。如果你想的话master区域可以被划分为多行和多列

[编辑] 最大化 Max

每个窗口都是全屏显示

[编辑] 放大 Magnifier

当前窗口(也就是被鼠标点选中,正在操作的窗口)会显示在屏幕中间,占据大部分屏幕空间。剩下的窗口都处在stacking区域,并放到当前窗口的后面。

[编辑] 浮动 Floating

每个窗口都可以自由的移动和调整大小,就好像普通的窗口管理器一样。无论当前是什么布局,对话框窗口总是处在浮动状态

[编辑] 状态栏

状态栏可以显示在屏幕边缘,它可以包含多个widget

[编辑] 标题栏 Titlebar

类似状态栏,但是它可以显示在每个窗口的四个边缘

[编辑] Widget

Widget可以包含文本、图像、进度条、函数图像等等,你可以把它放在状态栏或者标题栏里面

 

[编辑] 默认键位

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

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

Mod4 + Enter
打开一个终端
Mod4 + r
运行命令
Mod4 + Shift + c
关掉当前窗口
Mod4 + m
最大化当前窗口
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
重绘当前窗口
Mod4 + t
标记窗口(可标记多个)
Mod4 + Shift + F1~F9
把标记的窗口移动到第一~第九桌面上
Ctrl + Mod4 + 1~9
把当前桌面和1~9桌面同时显示
Mod4 + 1~9
恢复
Mod4 + Esc
快速切换到上一个桌面

[编辑] 配置

[编辑] 修改xinitrc

你已经按照之前的步骤安装上了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

[编辑] 编写rc.lua 让我们来点花样

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

还好lua不是一门很复杂的语言,所以基本上用不着多少关于lua的专门介绍就可以看明白这个配置文件

注意1:以下的讨论仅适用于awesome3.x版本。8.04源里面的2.4版本用的是完全不同配置文件格式,不能和3.0的通用

注意2:Awesome3的配置文件的格式、lua库函数一直都在变动当中,所以以下说的方法可能只适用于一个特定的git仓库中的版本。等到它稳定以后我会重新更新的:)

因为rc.lua实在是很庞大,没办法每一行都介绍它的意思,所以下面只是介绍一下默认的配置文件中的一些比较有用的部分:

[编辑] 杂项

-- 下面这一行指明了当前配置文件使用的主题文件。awesome的主题非常简单,只需要指明几个颜色就可以了
theme_path = "/usr/local/share/awesome/themes/default"

-- 这里设置默认的终端程序。默认的xterm显示中文有问题,我用的是urxvt
terminal = "urxvt"

-- 还记得之前提到的Mod4键么?你可以在这里重新设置它为其他任意一个键
modkey = "Mod4"

[编辑] 浮动窗口

你下载文件时Firefox打开了一个下载窗口,结果它却可怕的占据了屏幕的一半大小,把其他窗口挤得大小便失禁。英明神武的你当然不想这样。解决方法就是把这样的窗口设置为浮动, 在它们启动的时候就自动把他们设置为浮动窗口,这样就不会让你的屏幕天下大乱了.

-- 需要自动设置为浮动的程序
-- 只需要把你想要设置为浮动窗口的程序的Instance或者class按照下面的格式写进去就行
-- 了。在awesome下用Mod4 + Ctr + i就可以看到当前程序的instance和class名字
-- {{{ Rules

awful.rules.rules = {

   -- All clients will match this rule.
   {rule = {},
    properties = {border_width = beautiful.border_width,
                  border_color = beautiful.border_normal,
                  focus = true,
                  keys = clientkeys,
                  buttons = clientbuttons}},
   {rule = {class = "MPlayer"},
    properties = {floating = true}},
   {rule = {class = "Smplayer"},
    properties = {floating = true, tag = tags[1][6]}},
   { rule = { class = "pinentry" },
     properties = { floating = true } },
   { rule = { class = "gimp" },
     properties = { floating = true } },
   {rule = {class = "Firefox"},
     properties = {tag = tags[1][1]}},
   {rule = {class = "Firefox", name = "Download"},
     properties = {floating = true}},
   {rule = {class = "VirtualBox"},
     properties = {floating = true, tag = tags[1][2]}},
   -- Set Firefox to always map on tags number 2 of screen 1.
   -- { rule = { class = "Firefox" },
   --   properties = { tag = tags[1][2] } },

} -- }}}

[编辑] 我要我的tags

如果你觉得默认的9个tag太多或者是太少,或者是觉得不想用1-9这样的数字来作为Tag 的名字的话,往下看:

-- 下面这个循环创建了默认的9个tag
tags = {}
for s = 1, screen.count() do
    -- 每个屏幕都有一个tag的table(这里所说的table指的是lua中的概念,大致等价于数组)
    tags[s] = {}

    -- 每个屏幕创建9个tag,把9改为其他数字就能改变tag的数目
    for tagnumber = 1, 9 do
        tags[s][tagnumber] = tag({ name = tagnumber, layout = layouts[1] })
        tags[s][tagnumber].screen = s
    end
    -- 另最后一个屏幕的第一个tag处于选中状态
    tags[s][1].selected = true
end

-- 默认的tag名字是数字1-9,对于鼠标点击来说有点太小。
-- 你可以通过如下的方法设置自己的tag名称
tags[1][1].name = "Internet"
tags[1][2].name = "Term"
tags[1][3].name = "IRC"
tags[1][4].name = "Tag1"
tags[1][5].name = "Tag2"
tags[1][6].name = "Tag3"
tags[1][7].name = "Email"
tags[1][8].name = "Music"
tags[1][9].name = "Virtual"

[编辑] 时间

第一次用awesome的人肯定会很奇怪屏幕右上角不断增长的数字是什么?我第一次看到它的时候花了很长时间才反应过来它不是CPI。

-- 显示时间
-- 默认显示的是从1970年1月1日到现在经过了多少秒。话说应该没人喜欢这样的时间显示
-- 难道awesome的作者觉得有人可以心算这个数字得到当前的时间? 囧
-- 查找awful.hooks.timer.register这一行,改为如下的设置就可以显示正常的时间了
awful.hooks.timer.register(1, function ()
    mytextbox.text = " " .. os.date() .. " "
end)

[编辑] 开机自动启动

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

在rc.lua的任意位置添加如下代码:

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

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

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

OpenCV installation for Ubuntu 12.04 | Raben Systems, Inc.

To install OpenCV 2.4.2 or 2.4.3 on the Ubuntu 12.04 operating system, first install a developer environment to build OpenCV.

    sudo apt-get -y install build-essential cmake pkg-config

Install Image I/O libraries

    sudo apt-get -y install libjpeg62-dev 
    sudo apt-get -y install libtiff4-dev libjasper-dev

Install the GTK dev library

    sudo apt-get -y install  libgtk2.0-dev

Install Video I/O libraries

    sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

Optional - install support for Firewire video cameras

 sudo apt-get -y install libdc1394-22-dev

Optional - install video streaming libraries

 sudo apt-get -y install libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev 

Optional - install the Python development environment and the Python Numerical library

    sudo apt-get -y install python-dev python-numpy
 

Optional - install the parallel code processing library (the Intel tbb library)

    sudo apt-get -y install libtbb-dev

Optional - install the Qt dev library

    sudo apt-get -y install libqt4-dev

Now download OpenCV 2.4 to wherever you want to compile the source.

    mkdir xxx
    cd xxx 
    wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.2/Op...
or 
   wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.3/Op...
    tar -xvf OpenCV-2.4.*.tar.bz2

Create and build directory and onfigure OpenCV with cmake. Don't forget the .. part at the end of cmake cmd !!

    cd OpenCV-2.4.*
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
    -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON 
    -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON 
    -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

Now compile it

    make

And finally install OpenCV

    sudo make install