第 38 章 awesome

目录

Tiling window manager

优点

操作

配置

Tiling window manager

Tiling window manager,直译为“瓦片窗口管理器”[84],意译为“平铺式窗口管理器”。

假设你需要同时监视多个程序的状态并进行操作,你就需要不停的按Alt+Tab切换,但是这会加速 Alt 尤其是 Tab 的磨损[85]。

无奈之下,你可能会这样作:

用鼠标拖放成这样,绝对不是一件愉快的事,而且各个窗口的大小可能不太合适,窗口之间可能会有点缝隙,虽然不漏风,但是也影响注意力……

而在平铺式窗口管理器中,无论打开多少个窗口,都会把整个屏幕占满,不留一点儿缝隙(如果只有一个窗口,直接全屏)

窗口没有标题栏(标题在状态栏上),边框尽可能的窄(可设置为0),最大程度的节约了桌面空间,如果你的显示器比较大,或者有多个显示器,平铺式窗口管理器将是不二之选

常见的平铺式窗口管理器有: awesome、xmonad、dwm、wmii、ion、ratpoison、larswm 等, 推荐使用 awesome


[84] 像屋顶的瓦片一样平铺开来

[85] 手的磨损忽略了,因为它是可再生的

优点

awesome 有以下优点:

稳定、快速、简单

专注于效率

不需要为码放窗口分心,不需要在多个窗口间来回切换,不需要经常把手挪开使用鼠标

完全的键盘控制

在普通的窗口管理器中,完全键盘控制是不现实的,因为调整窗口位置无论如何要用鼠标。

强大、灵活的配置文件

使用 Lua 脚本作为配置文件使得它的灵活性非常高

支持多种窗口布局

多显示器支持

操作

awesome 中,所有的操作都可以用快捷键完成:

打开终端 Mod4 + Return
运行命令 Mod4 + F1
关闭当前窗口 Mod4 + Shift + c
重启awesome Mod4 + Control + r
退出awesome Mod4 + Shift + q
重绘当前窗口 Mod4 + Shift + r
窗口间切换 Mod4 + j Mod4 + k
标签间切换 Mod4 + Left Mod4 + Right
切换到标签 Mod4 + [1-9]
屏幕间切换 Mod4 + Control + j Mod4 + Control + k
切换布局 Mod4 + space Mod4 + Shift + space
切换为浮动窗口 Mod4 + Control + space
调整窗口位置 Mod4 + Shift + j Mod4 + Shift + k
调整列大小 Mod4 + h Mod4 + l
调整主区窗口数量 Mod4 + Shift + h Mod4 + Shift + l
调整辅区窗口数量 Mod4 + Control + h Mod4 + Control + l

配置

awesome 全局配置文件为 /etc/xdg/awesome/rc.lua,用户配置文件为 ~/.config/awesome/rc.lua,以下是一些配置选项:

例 38.1. awesome 配置

-- 主题文件。awesome的主题非常简单,只需要指明几个颜色就可以了
theme_path = "/usr/local/share/awesome/themes/default"

-- 设置默认终端
terminal = "urxvt"

-- Mod4 对应“Win”键,可以改成其它的
modkey = "Mod4"

-- 不保留窗口间的缝隙
    c.honorsizehints = false

-- 默认使用浮动窗口的程序
-- 在awesome下用Mod4 + Ctr + i 查看当前程序的instance和class名称
floatapps =
{
    ["MPlayer"] = true,
    ["gimp"] = true,
    ["smplayer"] = true,
    ["mocp"] = true,
    ["Codeblocks"] = true,
-- 各种对话框
    ["Dialog"] = true,
-- firefox 的下载窗口
    ["Download"] = true,
    ["empathy"] = true
}

-- 程序启动时自动发送到某个屏幕的某个tag里
apptags =
{
    ["smplayer"] = { screen = 1, tag = 7 },
    ["amarokapp"] = { screen = 1, tag = 8 },
    ["VirtualBox"] = { screen = 1, tag = 9 },
    ["Firefox"] = { screen = 1, tag = 1},
    ["Thunderbird-bin"] = { screen = 1, tag = 7 },
    ["Linux-fetion"] = { screen = 1, tag = 6 },
}

-- 显示时间
-- 默认显示的是从1970年1月1日到现在经过了多少秒
-- 查找awful.hooks.timer.register这一行,改为如下配置
awful.hooks.timer.register(1, function ()
    mytextbox.text = " " .. os.date() .. " " 
end)