首先上图 如果你会 C 语言,哪怕是门外汉的程度,你就能愉快地使用 dwm。对 linux 系统 API 的了解是不必要的,只要懂 C 语言的语法就可以了。但是如果你是 linux 新手或者完全不会 C 就不要往下看了,dwm 不适合你。
优点(对于某些人来说是缺点):
1、可以根据用户的规则管理窗口,你甚至可以直接修改 applyrules 函数来达成你的所想。
2、适合用键盘控制。
3、小就是美。less is more.
4、用 C 语言写成,容易 hack。
dwm 的作者之前写过 wmii 窗口管理器,但是后来觉得结构太复杂了,交由别人维护,开始写 dwm,为了保证简单性,代码永不超过 2000 行。dwm 是 awesome 窗口管理器的原型,其他流行的分支有 xmonad,dwm-gtx 等等,其中 dwm-gtx 是保持和 dwm 同步的。
dwm 的代码短而且清晰(实际上近来大半的修改都是在简化代码),非常容易修改,这正是它能有很多分支的原因吧,也正是它相比于它的分支的主要优势。只要你心情好,你也可以从修改 dwm 开始写出自己的窗口管理器。
dwm 的安装及使用
首先安装 libx11-dev。可能你还会需要 libxinerama-dev,图省事的话我建议装上 gnome-core-devel
下载最新版
代码: 全选
hg clone http://code.suckless.org/hg/dwm
cd dwm
源里的 dwm 比较老,现在 git 中的是 5.5 版,下面所说的以 5.5 版为准。
在 $HOME/.xsession 中加入
代码: 全选
dwm
建议 man 一下 dwm 看看快捷键。下面是最常用的,ModKey 默认为 Alt。
ModKey + Shift + c 结束进程
ModKey + 数字 n 切换到第 n 个标签
ModKey + Shift + 数字 把窗口移动到第 n 个标签
ModKey + j/k 向上/下切换窗口
ModKey + Enter 设置当前窗口为主窗口
ModKey + Shift + Enter 打开 uxterm
ModKey + Shift + Space 切换窗口的浮动/平铺
你八成会需要 dmenu,大多数 dwm 的使用者用 dmenu 启动程序。dwm 的快捷键中 Modkey + p 为启动 dmenu。
dwm 的配置
右上角的状态栏显示的是 root window 的标题,可以用下面的方法修改
代码: 全选
xsetroot -name 新标题
代码: 全选
while true
do xsetroot -name $(date)
sleep 1
done
代码: 全选
while true
do dwm
done
其实只要你没什么特殊的需要配置起来并没有难度,常用的配置都放在了 config.h 文件中,包括字体,配则,快捷键,控制窗口的规则。大部分变量的意义是显然的,如果你感到困惑 可以到 dwm 的网页上看更详细的解释。
字体和系统栏
dwm 不支持 XFT(导致显示非英语效果不好或者乱码),不提供系统栏(notification area),但是我们可以给它打补丁。
补丁的使用方法:进入 dwm 源文件所在的目录,然后
代码: 全选
patch < 补丁文件
pango.diff.gz 是让 dwm 支持 fontconfig 的补丁,使用之后可以把字体指定 Sans 之类由 fontconfig 提供的字体。作者我已经不记得了,补丁写得不太自然,但是通用性很好,应该能用很久。
panel.diff.gz 是我写的和 trayer (源里有)一起用的用来提供系统栏的补丁,如果你的 bar 的高度是 16 个像素,你需要用下面的命令运行 trayer
代码: 全选
trayer --height 16 --widthtype request
最后我放上我的 dwm,除了上面所讲的,我把 ModKey 换成了 Windows 键(默认是 Alt),两外加上了两个新的 layout(窗口排列方式),分别对应快捷键 ModKey + Shift + s 和 ModKey + Shift + b,其他的对应 ModKey + Shift + t/m/f 。