介绍一下 dwm 窗口管理器
发表于 : 2009-03-21 21:10
dwm = dynamic window manager
首先上图 如果你会 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
下载最新版
修改 config.mk 中的 PREFIX = /usr/local,改为你喜欢的目录。我改为了 PREFIX = ${HOME},如果你的 $HOME/bin 在 $PATH 中,你也可以这样改,但是这样就不能用 man 看帮助了。接下来 make; make install 即可(如果需要安装到需要权限的目录则要 sudo make install)
源里的 dwm 比较老,现在 git 中的是 5.5 版,下面所说的以 5.5 版为准。
在 $HOME/.xsession 中加入
登录时在 gdm 中选择 default XClient Scripts 即可,也可在控制台中直接 startx。
建议 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 的标题,可以用下面的方法修改
在 bash 中运行下面命令的效果是在状态栏中显示时间(每秒一更新)。
除此之外配置 dwm 主要是修改它的源代码,每次配置完都要重新编译安装,这真是吓跑新手的绝妙方法。还好在我电脑上编译安装 dwm 只要两秒钟。为了方别修改配置,可以把 ~/.xsession 中的 dwm 换成
这样修改完成后只需用快捷键结束 dwm 即可重启 dwm。
其实只要你没什么特殊的需要配置起来并没有难度,常用的配置都放在了 config.h 文件中,包括字体,配则,快捷键,控制窗口的规则。大部分变量的意义是显然的,如果你感到困惑 可以到 dwm 的网页上看更详细的解释。
字体和系统栏
dwm 不支持 XFT(导致显示非英语效果不好或者乱码),不提供系统栏(notification area),但是我们可以给它打补丁。
补丁的使用方法:进入 dwm 源文件所在的目录,然后
如果补丁之间有冲突,则要手动解决。
pango.diff.gz 是让 dwm 支持 fontconfig 的补丁,使用之后可以把字体指定 Sans 之类由 fontconfig 提供的字体。作者我已经不记得了,补丁写得不太自然,但是通用性很好,应该能用很久。
panel.diff.gz 是我写的和 trayer (源里有)一起用的用来提供系统栏的补丁,如果你的 bar 的高度是 16 个像素,你需要用下面的命令运行 trayer
注意,这个补丁要求 git 版的 dwm。如果用老版的 dwm,需要给该补丁中的 resize 函数多加一个参数 True(添在最后)。
最后我放上我的 dwm,除了上面所讲的,我把 ModKey 换成了 Windows 键(默认是 Alt),两外加上了两个新的 layout(窗口排列方式),分别对应快捷键 ModKey + Shift + s 和 ModKey + Shift + b,其他的对应 ModKey + Shift + t/m/f 。
首先上图 如果你会 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 。