|
DWM一个很小的窗口管理器.
如果说KDE,GNOME五官齐全,那DWM就是一个骷髅人(就那么一堆骨头,刚好能用).
简介
DWM在3.5的时候,就可以支持中文显示了.不过因为X Core的核心配置字体方式太多繁复而显示中文很难.
DWM支持热键,自定颜色和简单的常规输入状态条.
轻便是它最大的特点.
更新簡介:
- 5.5
- 更新一下补丁,只是在之前的补丁上稍微修改下就可以用了:-D
- 设置方法照旧.
- 不过遇到一个小问题:Xft中的XftTextExternUtf8函数会出现警告语句(被我无视后正常使用:P),有时间会看看的.
复制代码
历史:
- 4.8 -> 4.9
- 更詳細的規則配置。
- 增加一個布局結構配置。
复制代码
4.9版本
注意:
53樓有takethat兄弟4.9的xft補丁
其實我也做了,不過近來忙沒有寫配置,
4.9的配置變化大了點
特点:
- × 简单,轻便,快速。
- × 可读取标准输入作为状态条。
- × 标签式的桌面管理。
- × 一站式安装,配置通过源代码,单一文件。
- × 自定义颜色。
- × 热键。
复制代码
配置
就是一个config.h如果要改变配置,只有重新编译(或是自己修改二进制)
[外观]
- /* 边框大小 */
- #define BORDERPX 1
- /* 字体设置(这里写的是打了Xft补丁的配置,如果没有打,就用x core的方式填写 */
- #define FONT "WenQuanYi Bitmap Song:size=8"
- /* 默认边框颜色 */
- #define NORMBORDERCOLOR "#CCCCCC"
- /* 默认背景颜色 */
- #define NORMBGCOLOR "#CCCCCC"
- /* 默认前景颜色 */
- #define NORMFGCOLOR "#000000"
- /* 选中边框颜色 */
- #define SELBORDERCOLOR "#0066FF"
- /* 选中背景颜色 */
- #define SELBGCOLOR "#0066FF"
- /* 选中前景颜色 */
- #define SELFGCOLOR "#FFFFFF"
复制代码
[标签]
- /*
- 这里请注意,完全能够用中文标示,可是最后排序的时候,要读取这个标签请使用tags[数字],数字从0开始。
- 比如tags[0]就是“通用”,tags[1]是“网络”。
- MAXTAGLEN是16个字符。
- */
- const char tags[][MAXTAGLEN] = { "通用", "网络", "系统" };
复制代码
[窗口标签分配规则]
- /*
- 前三個逗号前是窗口一个子字符串。
- 第四個逗號前,是字符串,對應tags的配置。
- 最後一個,是浮动的开关,默认的有两大类,一个是浮动,一个固定排版。(排版下面有说明)
- 在哪里读取窗口的信息呢?
- 使用xprop吧,里面的WM_WINDOW_ROLE,WM_CLASS,WM_NAME就是我们需要的。
- */
- Rule rules[] = {
- /* class instance title tags ref isfloating */
- { "Gimp", NULL, NULL, NULL, True },
- { "Opera", "Opera", NULL, tags[1], False },
- { NULL, "vim", NULL, NULL, False },
- };
复制代码
[布局]
- /*
- 在本布局裏面使用的窗口打開方式,
- 比如是一些 */
- /* geometries, s{x,y,w,h} and bh are already initualized here */
- /* 函數名 X坐標 Y坐標 bw wx wy ww wh mx my mw mh tx ty tw th mox moy mow moh */
- #define MFACT 0.55 /* master width factor [0.1 .. 0.9] */
- DEFGEOM(single, 0, 0, sw, 0, bh, sw, sh-bh, wx, wy, mfact*sw, wh, mx+mw, wy, ww-mw, wh, wx, wy, ww, wh)
- /* 布局窗口啟動方式 */
- Geom geoms[] = {
- /* symbol function */
- { "固|", single }, /* first entry is default */
- };
- /* 布局 */
- #define RESIZEHINTS True /* 如果为False,就是放弃尺寸,直接使用平铺 */
- #define SNAP 32 /* 最小尺寸? */
- /*
- { "浮", floating, True },
- 第一个逗号前是标签,就是使用的时候显示的一种方法。可以中文。
- 第二个逗号前是布局方法,这里是窗口出现的时候排版方式,可以在最后提供是否浮动窗口,默认提供四种。
- floating, 简单浮动
- tilev, 横向平铺
- tileh, 纵向平铺
- monocle ?属于浮动
- 第三个是窗口是否浮动。
- */
- Layout layouts[] = {
- { "浮", floating, True },
- { "固=", tilev, False },
- { "固|", tileh, False },
- { "[M]", monocle, True },
- };
复制代码
[热键]
- /*
- 第一个逗号前是主组合键,包括ctrl,atl,shift,使用“|”来代表组合。
- 第二个逗号前是次组合键,包括功能键(回车,删除),字符键。
- 第三个逗号钱是方法,包括:
- spawn:运行你指定的命令,我们的dmenu_run就是这么来的。 最后参数必须是执行用的命令(string)
- focusnext,focusprev:焦点后移和前移。 最后参数NULL
- reapply:重新以你正在的桌面标签为基本标签,运作一次规则。最后参数NULL
- zoom:完全没有成功过的缩放。最后参数NULL
- viewpretag:返回上一个桌面标签。最后参数NULL
- setlayout:设置桌面布局。最后参数是布局的名字
- togglefloating:切换是否浮动。最后参数NULL
- killclient:强制关闭窗口。最后参数NULL
- view:查看桌面标签。最后参数可以是NULL(全局查看)或是tags[数字]指定的桌面标签
- toggleview:同时查看多个桌面标签。最后参数tags[数字]指定的桌面标签
- tag:切换指定的窗口到达指定的桌面标签。最后参数tags[数字]指定的桌面标签
- toggletag:指定窗口被设定多个桌面标签,最后参数tags[数字]指定的桌面标签
- quit:退出dwm。最后参数NULL
- */
- #define MODKEY Mod1Mask /* 主组合键 Alt */
- Key keys[] = {
- /* modifier key function argument */
- { MODKEY, XK_p, spawn, "exec dmenu_run -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" },
- { MODKEY|ShiftMask, XK_Return, spawn, "exec tilda" },
- { MODKEY, XK_j, focusnext, NULL },
- { MODKEY, XK_k, focusprev, NULL },
- { MODKEY, XK_r, reapply, NULL },
- { MODKEY, XK_Return, zoom, NULL },
- { MODKEY, XK_Tab, viewprevtag, NULL },
- { MODKEY, XK_m, setlayout, "[M]" },
- { MODKEY, XK_f, setlayout, "浮" },
- { MODKEY, XK_v, setlayout, "固=" },
- { MODKEY, XK_h, setlayout, "固|" },
- { MODKEY|ShiftMask, XK_space, togglefloating, NULL },
- { MODKEY, XK_F4, killclient, NULL },
- { MODKEY, XK_0, view, NULL },
- { MODKEY, XK_1, view, tags[0] },
- 爆 炸后几天内,成千上万被称为“清理者”的工人被匆忙调集到切尔诺贝利来制服这座充满辐射的炼狱。煤矿工人在炽热的石墨堆芯下挖掘,以便泵入液氮来冷却核 燃料。直升机驾驶员空投了4500吨铅、沙子、黏土和其它物料来竭力熄灭火焰。军人们定时冲上顶部,将炸飞的、冒着烟的石墨块铲回反应堆中心。参与这次行 动的3400名超级勇士被不敬地称为“生物 机器人”,他们当中
- { MODKEY, XK_2, view, tags[1] },
- { MODKEY, XK_3, view, tags[2] },
- { MODKEY, XK_4, view, tags[3] },
- { MODKEY, XK_5, view, tags[4] },
- { MODKEY, XK_6, view, tags[5] },
- { MODKEY, XK_7, view, tags[6] },
- { MODKEY, XK_8, view, tags[7] },
- { MODKEY, XK_9, view, tags[8] },
- { MODKEY|ControlMask, XK_1, toggleview, tags[0] },
- { MODKEY|ControlMask, XK_2, toggleview, tags[1] },
- { MODKEY|ControlMask, XK_3, toggleview, tags[2] },
- { MODKEY|ControlMask, XK_4, toggleview, tags[3] },
- { MODKEY|ControlMask, XK_5, toggleview, tags[4] },
- { MODKEY|ShiftMask, XK_0, tag, NULL },
- { MODKEY|ShiftMask, XK_1, tag, tags[0] },
- { MODKEY|ShiftMask, XK_2, tag, tags[1] },
- { MODKEY|ShiftMask, XK_3, tag, tags[2] },
- { MODKEY|ShiftMask, XK_4, tag, tags[3] },
- { MODKEY|ShiftMask, XK_5, tag, tags[4] },
- { MODKEY|ControlMask|ShiftMask, XK_1, toggletag, tags[0] },
- { MODKEY|ControlMask|ShiftMask, XK_2, toggletag, tags[1] },
- { MODKEY|ControlMask|ShiftMask, XK_3, toggletag, tags[2] },
- { MODKEY|ControlMask|ShiftMask, XK_4, toggletag, tags[3] },
- { MODKEY|ControlMask|ShiftMask, XK_5, toggletag, tags[4] },
- { MODKEY|ShiftMask, XK_q, quit, NULL },
- };
复制代码
注意这一行:
- #define FONT "WenQuanYi Bitmap Song:size=8" /* 字体设置 */
复制代码
因为我写了点Xft补丁.这里使用了fontconfig来配置字体.
中文显示现在好多了.
全部的热键定义在(库路径)/X11/keysymdef.h 和 (库路径)/X11/keysym.h
这里列出常用的几个
附上一个我使用的启动脚本:
~/.xinitrc
[php]
#!/bin/sh
# Default Fix My Board
xmodmap /other/Backup/fix/xmodmap &
# Base Env Var Setup
X_ENV="dwm"
# Open office fix
export OOO_FORCE_DESKTOP=gnome
# Input System
export LANG=zh_CN.UTF-8
export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE=fcitx
fcitx -d
# Wall Page
feh --bg-center .wp.png &
# Default Exec
tilda -h 2>&1 > /dev/null &
# dwm ENV
if [ $X_ENV ]; then
export AWT_TOOLKIT=MToolkit
while true
do
. ~/.status.bar
done | exec dwm
fi
[/php]
~/.status.bar
[php]
#!/bin/bash
# 标准检查
p_list="opera:Op pidginG vim:Vi";
G_CODE="";
for index in $p_list
do
p=`expr match $index '\(.*\):'`
s=`expr match $index '.*:\(.*\)'`
G_CODE += "`pgrep $p > /dev/null && echo [$s]`"
done
# 特殊程序
MPD="[`mpc | sed -n '2s/\[\(.*\)\].*/\1/;2s/playing/Music/p;'`]";
DATE="`date +%m.%d` `date +%H:%M`";
echo "$G_CODE$MPD $DATE"
# 每三十秒才更新一次,太快会很占用CPU,毕竟我不需要秒
sleep 30s
[/php]
如果有任何的不明白,请说明:)
有错误也请大方指出,谢谢:) |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|