DWM窗口管理器[Xft特性][热键简介]
时间:2008-02-01
来源:互联网
如果说KDE,GNOME五官齐全,那DWM就是一个骷髅人(就那么一堆骨头,刚好能用:P).
简介
DWM在3.5的时候,就可以支持中文显示了.不过因为X Core的核心配置字体方式太多繁复而显示中文很难.
DWM支持热键,自定颜色和简单的常规输入状态条.
轻便是它最大的特点.
更新簡介:
5.5 更新一下补丁,只是在之前的补丁上稍微修改下就可以用了:-D 设置方法照旧. 不过遇到一个小问题:Xft中的XftTextExternUtf8函数会出现警告语句(被我无视后正常使用:P),有时间会看看的.
4.8 -> 4.9 更詳細的規則配置。 增加一個布局結構配置。
注意:
53樓有takethat兄弟4.9的xft補丁
:P 其實我也做了,不過近來忙沒有寫配置,
4.9的配置變化大了點
特点:
× 简单,轻便,快速。 × 可读取标准输入作为状态条。 × 标签式的桌面管理。 × 一站式安装,配置通过源代码,单一文件。 × 自定义颜色。 × 热键。
配置
就是一个config.h如果要改变配置,只有重新编译(或是自己修改二进制:P)
[外观]
/* 边框大小 */ #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" /* 字体设置 */
中文显示现在好多了.
全部的热键定义在(库路径)/X11/keysymdef.h 和 (库路径)/X11/keysym.h
这里列出常用的几个
#define XK_Shift_L 0xffe1 /* Left shift */ #define XK_Shift_R 0xffe2 /* Right shift */ #define XK_Control_L 0xffe3 /* Left control */ #define XK_Control_R 0xffe4 /* Right control */ #define XK_Caps_Lock 0xffe5 /* Caps lock */ #define XK_Shift_Lock 0xffe6 /* Shift lock */ #define XK_Meta_L 0xffe7 /* Left meta */ #define XK_Meta_R 0xffe8 /* Right meta */ #define XK_Alt_L 0xffe9 /* Left alt */ #define XK_Alt_R 0xffea /* Right alt */ #define XK_Super_L 0xffeb /* Left super */ #define XK_Super_R 0xffec /* Right super */ /* * Latin 1 * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF) * Byte 3 = 0 */ #ifdef XK_LATIN1 #define XK_space 0x0020 /* U+0020 SPACE */ #define XK_exclam 0x0021 /* U+0021 EXCLAMATION MARK */ #define XK_quotedbl 0x0022 /* U+0022 QUOTATION MARK */ #define XK_numbersign 0x0023 /* U+0023 NUMBER SIGN */ #define XK_dollar 0x0024 /* U+0024 DOLLAR SIGN */ #define XK_percent 0x0025 /* U+0025 PERCENT SIGN */ #define XK_ampersand 0x0026 /* U+0026 AMPERSAND */ #define XK_apostrophe 0x0027 /* U+0027 APOSTROPHE */ #define XK_quoteright 0x0027 /* deprecated */ #define XK_parenleft 0x0028 /* U+0028 LEFT PARENTHESIS */ #define XK_parenright 0x0029 /* U+0029 RIGHT PARENTHESIS */ #define XK_asterisk 0x002a /* U+002A ASTERISK */ #define XK_plus 0x002b /* U+002B PLUS SIGN */ #define XK_comma 0x002c /* U+002C COMMA */ #define XK_minus 0x002d /* U+002D HYPHEN-MINUS */ #define XK_period 0x002e /* U+002E FULL STOP */ #define XK_slash 0x002f /* U+002F SOLIDUS */ #define XK_0 0x0030 /* U+0030 DIGIT ZERO */ #define XK_1 0x0031 /* U+0031 DIGIT ONE */ #define XK_2 0x0032 /* U+0032 DIGIT TWO */ #define XK_3 0x0033 /* U+0033 DIGIT THREE */ #define XK_4 0x0034 /* U+0034 DIGIT FOUR */ #define XK_5 0x0035 /* U+0035 DIGIT FIVE */ #define XK_6 0x0036 /* U+0036 DIGIT SIX */ #define XK_7 0x0037 /* U+0037 DIGIT SEVEN */ #define XK_8 0x0038 /* U+0038 DIGIT EIGHT */ #define XK_9 0x0039 /* U+0039 DIGIT NINE */ #define XK_colon 0x003a /* U+003A COLON */ #define XK_semicolon 0x003b /* U+003B SEMICOLON */ #define XK_less 0x003c /* U+003C LESS-THAN SIGN */ #define XK_equal 0x003d /* U+003D EQUALS SIGN */ #define XK_greater 0x003e /* U+003E GREATER-THAN SIGN */ #define XK_question 0x003f /* U+003F QUESTION MARK */ #define XK_at 0x0040 /* U+0040 COMMERCIAL AT */ #define XK_A 0x0041 /* U+0041 LATIN CAPITAL LETTER A */ #define XK_B 0x0042 /* U+0042 LATIN CAPITAL LETTER B */ #define XK_C 0x0043 /* U+0043 LATIN CAPITAL LETTER C */ #define XK_D 0x0044 /* U+0044 LATIN CAPITAL LETTER D */ #define XK_E 0x0045 /* U+0045 LATIN CAPITAL LETTER E */ #define XK_F 0x0046 /* U+0046 LATIN CAPITAL LETTER F */ #define XK_G 0x0047 /* U+0047 LATIN CAPITAL LETTER G */ #define XK_H 0x0048 /* U+0048 LATIN CAPITAL LETTER H */ #define XK_I 0x0049 /* U+0049 LATIN CAPITAL LETTER I */ #define XK_J 0x004a /* U+004A LATIN CAPITAL LETTER J */ #define XK_K 0x004b /* U+004B LATIN CAPITAL LETTER K */ #define XK_L 0x004c /* U+004C LATIN CAPITAL LETTER L */ #define XK_M 0x004d /* U+004D LATIN CAPITAL LETTER M */ #define XK_N 0x004e /* U+004E LATIN CAPITAL LETTER N */ #define XK_O 0x004f /* U+004F LATIN CAPITAL LETTER O */ #define XK_P 0x0050 /* U+0050 LATIN CAPITAL LETTER P */ #define XK_Q 0x0051 /* U+0051 LATIN CAPITAL LETTER Q */ #define XK_R 0x0052 /* U+0052 LATIN CAPITAL LETTER R */ #define XK_S 0x0053 /* U+0053 LATIN CAPITAL LETTER S */ #define XK_T 0x0054 /* U+0054 LATIN CAPITAL LETTER T */ #define XK_U 0x0055 /* U+0055 LATIN CAPITAL LETTER U */ #define XK_V 0x0056 /* U+0056 LATIN CAPITAL LETTER V */ #define XK_W 0x0057 /* U+0057 LATIN CAPITAL LETTER W */ #define XK_X 0x0058 /* U+0058 LATIN CAPITAL LETTER X */ #define XK_Y 0x0059 /* U+0059 LATIN CAPITAL LETTER Y */ #define XK_Z 0x005a /* U+005A LATIN CAPITAL LETTER Z */ #define XK_bracketleft 0x005b /* U+005B LEFT SQUARE BRACKET */ #define XK_backslash 0x005c /* U+005C REVERSE SOLIDUS */ #define XK_bracketright 0x005d /* U+005D RIGHT SQUARE BRACKET */ #define XK_asciicircum 0x005e /* U+005E CIRCUMFLEX ACCENT */ #define XK_underscore 0x005f /* U+005F LOW LINE */ #define XK_grave 0x0060 /* U+0060 GRAVE ACCENT */ #define XK_quoteleft 0x0060 /* deprecated */ #define XK_a 0x0061 /* U+0061 LATIN SMALL LETTER A */ #define XK_b 0x0062 /* U+0062 LATIN SMALL LETTER B */ #define XK_c 0x0063 /* U+0063 LATIN SMALL LETTER C */ #define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */ #define XK_e 0x0065 /* U+0065 LATIN SMALL LETTER E */ #define XK_f 0x0066 /* U+0066 LATIN SMALL LETTER F */ #define XK_g 0x0067 /* U+0067 LATIN SMALL LETTER G */ #define XK_h 0x0068 /* U+0068 LATIN SMALL LETTER H */ #define XK_i 0x0069 /* U+0069 LATIN SMALL LETTER I */ #define XK_j 0x006a /* U+006A LATIN SMALL LETTER J */ #define XK_k 0x006b /* U+006B LATIN SMALL LETTER K */ #define XK_l 0x006c /* U+006C LATIN SMALL LETTER L */ #define XK_m 0x006d /* U+006D LATIN SMALL LETTER M */ #define XK_n 0x006e /* U+006E LATIN SMALL LETTER N */ #define XK_o 0x006f /* U+006F LATIN SMALL LETTER O */ #define XK_p 0x0070 /* U+0070 LATIN SMALL LETTER P */ #define XK_q 0x0071 /* U+0071 LATIN SMALL LETTER Q */ #define XK_r 0x0072 /* U+0072 LATIN SMALL LETTER R */ #define XK_s 0x0073 /* U+0073 LATIN SMALL LETTER S */ #define XK_t 0x0074 /* U+0074 LATIN SMALL LETTER T */ #define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */ #define XK_v 0x0076 /* U+0076 LATIN SMALL LETTER V */ #define XK_w 0x0077 /* U+0077 LATIN SMALL LETTER W */ #define XK_x 0x0078 /* U+0078 LATIN SMALL LETTER X */ #define XK_y 0x0079 /* U+0079 LATIN SMALL LETTER Y */ #define XK_z 0x007a /* U+007A LATIN SMALL LETTER Z */ #define XK_braceleft 0x007b /* U+007B LEFT CURLY BRACKET */ #define XK_bar 0x007c /* U+007C VERTICAL LINE */ #define XK_braceright 0x007d /* U+007D RIGHT CURLY BRACKET */ #define XK_asciitilde 0x007e /* U+007E TILDE */
~/.xinitrc
# 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
# 标准检查
p_list="opera:Op pidgin:PG 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
有错误也请大方指出,谢谢:)
dwm-4.7.xft.png (59.7 KB, 427 次查看) |
xft.patch.gz (2.0 KB, 32 次查看) |
作者: SCys 发布时间: 2008-02-01
DWM貌似没有风格或者主题之类的东西的。
作者: Xorcerer 发布时间: 2008-02-01
把XFT添加进去,没有发现体积扩大多少.还是原来的28KB
--
而且编译一次需要....5秒
--
现在就是对它的进一步添加功能,
最主要还是窗口管理的加强.
---
代码少,还是少的好.
作者: SCys 发布时间: 2008-02-01
写了个简陋的程序,可以在任务栏上显示时间,系统负荷,和网络链接状况。
#!/bin/sh wlanIF="ath0" interval=1 rx=0 tx=0 net_gettrans(){ traffic=$(ifconfig $wlanIF | grep bytes | cut -d: -f2-3) rx=${traffic%% *} tx=${traffic#*:} tx=${tx%% *} rx=$(( $rx/1000 )) tx=$(( $tx/1000 )) } while true; do rxp=$rx txp=$tx net_gettrans net="Up/Dn $(( ($tx - $txp) / $interval ))/$(( ($rx - $rxp) / $interval )) KB/s" wifi="wifi $(iwconfig $wlanIF | grep Link | cut -d= -f2 | cut -d' ' -f1)" time="$(cut -d' ' -f-3 /proc/loadavg) |$(date '+%l:%M')" echo "$net | $wifi | $time" sleep $interval done | /usr/local/bin/dwm
作者: biinn 发布时间: 2008-02-02
喜欢这个脚本.自己也用了下,没有修改,:)
作者: SCys 发布时间: 2008-02-02
昨天試了一下還未搞定,是否補丁不打不能用?我的機器是英文的,沒打補丁。
作者: d00m3d 发布时间: 2008-02-02
作者: biinn
已经用dwm很久了,公司、家里都用它,非常喜欢,呵呵。
写了个简陋的程序,可以在任务栏上显示时间,系统负荷,和网络链接状况。
代码:
#!/bin/sh wlanIF="ath0" interval=1 rx=0 tx=0 net_gettrans(){ traffic=$(ifconfig $wlanIF | grep bytes | cut -d: -f2-3) rx=${traffic%% *} tx=${traffic#*:} tx=${tx%% *} rx=$(( $rx/1000 )) tx=$(( $tx/1000 )) } while true; do rxp=$rx txp=$tx net_gettrans net="Up/Dn $(( ($tx - $txp) / $interval ))/$(( ($rx - $rxp) / $interval )) KB/s" wifi="wifi $(iwconfig $wlanIF | grep Link | cut -d= -f2 | cut -d' ' -f1)" time="$(cut -d' ' -f-3 /proc/loadavg) |$(date '+%l:%M')" echo "$net | $wifi | $time" sleep $interval done | /usr/local/bin/dwm |
不知何故,起動後在頂頭的 toolbar 無論怎樣 click 都沒反應的 :(
作者: d00m3d 发布时间: 2008-02-02
作者: d00m3d
biinn 因為 dwm 連 fvwm 都放棄了,真想盡快搞定它
不知何故,起動後在頂頭的 toolbar 無論怎樣 click 都沒反應的 :( |
toolbar不能点很奇怪,不过我从来不点。alt+1,2,3...就可以切换了。
作者: biinn 发布时间: 2008-02-02
作者: d00m3d
SCys 兄果然應約,謝謝!
昨天試了一下還未搞定,是否補丁不打不能用?我的機器是英文的,沒打補丁。 |
作者: biinn 发布时间: 2008-02-02
dwm 官方網站資料很缺乏,google 也沒找到多少有用的,請問 biinn 及 SCys 兩位哪裡有 dwm 教程之類的?
作者: d00m3d 发布时间: 2008-02-02
作者: d00m3d
我暈,原來還有 hot key 可用
dwm 官方網站資料很缺乏,google 也沒找到多少有用的,請問 biinn 及 SCys 兩位哪裡有 dwm 教程之類的? |
記得上次查資料的時候發現不少台灣地區的人用DWM.
---
補丁為的是XFT字體,就是中文,打不打都可以顯示中文,
打了後設置中文方面比較易懂,
作者: SCys 发布时间: 2008-02-02
作者: d00m3d 发布时间: 2008-02-02
作者: kikiwarm 发布时间: 2008-02-03
问个 BC问题,就是 dwm 下 tray icon 哪里去了?
作者: 晨想 发布时间: 2008-02-03
作者: biinn 发布时间: 2008-02-03
作者: 晨想 发布时间: 2008-02-03
不过dwm的toolbar接受标准输入,所以你可以往上面写任何你想要显示的信息。
作者: biinn 发布时间: 2008-02-03
这里介绍两个:
bzen
trayer
都是常用的.
----
bzen 比较强大,能够作为菜单使用,不过配置很复杂.
下次我也介绍下.
trayer 很简单,
作者: SCys 发布时间: 2008-02-03
作者: kikiwarm
我也最爱用dwm,建议 man dwm 看看,貌似有很详细的说明
|
很多热键的启动方式和处理方式都没有写出来,
推荐看看台湾的资料.好像有几篇好的.不过Google的排名很后那种.
---
Google. Dwm最多的是Vista系统的外壳资料.汗.
作者: SCys 发布时间: 2008-02-03
作者: d00m3d 发布时间: 2008-02-03
d00m3兄弟,
---
那个时候应该把页面记录下来的.
---
迟点我写个全面的一点的设置吧,我现在快要回家了.没有时间来看代码呢.
一年一度和家里人吃饭
---
对了,补充一点,没有办法让一个软件一开始就全部标签(tag)下显示.
在热键设置中第三个参数是用来作为定义使用什么方法的.
作者: SCys 发布时间: 2008-02-03
作者: d00m3d 发布时间: 2008-02-03
大家都要快乐新年,新年快乐
作者: SCys 发布时间: 2008-02-04
作者: SCys
很少,而且郵件列表也是很稀少的.
記得上次查資料的時候發現不少台灣地區的人用DWM. --- 補丁為的是XFT字體,就是中文,打不打都可以顯示中文, 打了後設置中文方面比較易懂, |
作者: jjxu 发布时间: 2008-03-03
作者: jjxu
打了补丁是不是就可以用雅黑等字体了?
|
---
近来忙都没有腾出时间来搞这个。
:(
作者: SCys 发布时间: 2008-03-03
作者: mzli 发布时间: 2008-03-03
KDE的多媒体性能比较强劲,
虽然编译起来有点辛苦……
顺便过来看一下,
顶!!!
作者: 青铜镜 发布时间: 2008-03-03
作者: SCys
如果需要系统工具条.
这里介绍两个: bzen trayer 都是常用的. ---- bzen 比较强大,能够作为菜单使用,不过配置很复杂. 下次我也介绍下. trayer 很简单, |
作者: sssslang 发布时间: 2008-03-04
作者: sssslang
是dzen吗?
|
是dzen.
作者: SCys 发布时间: 2008-03-05
#!/bin/bash proc_list="opera:OP gvim:gV mysql:mS smb:Sb postgres:pS httpd:Ap"; code=""; for index in $proc_list; do proc=`expr match $index '\(.*\):'`; name=`expr match $index '.*:\(.*\)'`; num=`pgrep $proc | wc -l`; if [ $num != "0" ]; then code+="[$name"; [[ $num > 1 ]] && code+=":$num"; code+="]"; fi done; code+=" "`date +"%m-%d %H:%M"` echo $code; sleep 20s
while true; do . ~/.status.bar done | exec dwm
作者: SCys 发布时间: 2008-03-16
作者: byjxy 发布时间: 2008-03-17
我的fcitx可以用。
作者: biinn 发布时间: 2008-03-17
作者: byjxy 发布时间: 2008-03-19
作者: byjxy 发布时间: 2008-03-19
作者: byjxy 发布时间: 2008-03-19
作者: d00m3d 发布时间: 2008-03-20
fcitx -d&,(在exec dwm之前)这样使用slim或者startx后,输入法就可用了
作者: Blahster 发布时间: 2008-03-20
有人知道是什么原因否?fvwm很正常,但我舍不得dwm T_T
作者: LaoLang_cool 发布时间: 2008-03-21
应该和X有关系多点。你X的版本是多少。去看看对应的X Bug表。
作者: SCys 发布时间: 2008-03-21
下面贴一个状态脚本:
#!/bin/bash AWKS_M='/^MemTotal/ {mtotal=$2}; /^MemFree/ {mfree=$2}; /^Active/ {mactive=$2}; /^Cached/ {mcached=$2}; /^SwapTotal/ {swtotal=$2}; /^SwapFree/ {swfree=$2}; /^temperatures/ {temp=$2}; /^speed/ {fspd=$2}; /^CPU/ {nu1=$2; nt1=$3; nu2=$4; nt2=$5; ou1=$6; ot1=$7; ou2=$8; ot2=$9;}; END { if (nt1 != "0") print "CPU1:",int((nu1-ou1)/(nt1-ot1)*100) "%"; if (nt2 != "0") print "CPU2:",int((nu2-ou2)/(nt2-ot2)*100) "%"; if (temp != "0") print temp "C",fspd "c"; print "| Mem:",int(((mtotal-mfree)/mtotal)*100) "%","Swap:",int(((swtotal-swfree)/swtotal)*100) "%";}' AWKS_ST='/cpu0/ {total1=$2+$3+$4+$5; use1=$2+$3+$4}; /cpu1/ {total2=$2+$3+$4+$5;use2=$2+$3+$4}; END { print use1,total1; if (total2 && use2) print use2,total2; else print "0 0"; } ' SLEEP=4 DATEFMT="+%a %x %H:%M" INTERFACE=eth0 MEMINFO=/proc/meminfo FAN= TERM= [ -f /proc/acpi/ibm/fan ] && FAN=/proc/acpi/ibm/fan [ -f /proc/acpi/ibm/thermal ] && TERM=/proc/acpi/ibm/thermal OCPU=`awk "$AWKS_ST" /proc/stat` RXB=`cat /sys/class/net/${INTERFACE}/statistics/rx_bytes` TXB=`cat /sys/class/net/${INTERFACE}/statistics/tx_bytes` while :; do # get new rx/tx counts RXBN=`cat /sys/class/net/${INTERFACE}/statistics/rx_bytes` TXBN=`cat /sys/class/net/${INTERFACE}/statistics/tx_bytes` NCPU=`awk "$AWKS_ST" /proc/stat` # calculate the rates # format the values to 4 digit fields RXR=$(printf "%4d\n" $(echo "($RXBN - $RXB) / 1024/${SLEEP}" | bc)) TXR=$(printf "%4d\n" $(echo "($TXBN - $TXB) / 1024/${SLEEP}" | bc)) # print out the rates with some nice formatting #MSG=`echo $NCPU $OCPU | awk "$AWKS_CPU"`" "`awk "$AWKS_M" $MEMINFO $FAN ${TERM}`" | ${INTERFACE}: D ${RXR}kB U ${TXR}kB" MSG=`(echo -e "CPU: $NCPU ${OCPU}\n"; cat $MEMINFO $FAN ${TERM}) | awk "$AWKS_M"`" | ${INTERFACE}: D ${RXR}kB U ${TXR}kB" echo $MSG "|" `date "$DATEFMT"` # reset old rates RXB=$RXBN; TXB=$TXBN; OCPU=$NCPU sleep $SLEEP done
statusbar.sh | dwm
作者: takethat 发布时间: 2008-03-21
作者: LaoLang_cool 发布时间: 2008-03-22
作者: takethat
你的补丁做得不错,不过如果能够同时设置两种字体分别显示英文和中文就更好了。看了一下代码,原来的是用font.set来做到这个的。你的补丁ms只支持设置一种字体(我对xft库不熟悉:P)。希望你能够继续研究下去。
... |
---
我一开始也是打算这样,可是发现:
在显示一个字的时候,不知道使用哪一种字体配置为准。
不论xft,还是x font core都能够自我配置。
---
如果兄弟确实想要,我今天回去尝试下,不过要修改的地方比较多点。可能会超过2000行大关了:)
作者: SCys 发布时间: 2008-03-22
作者: SCys
你能够想像到两种字体配置都支持的混乱吗:)
--- 我一开始也是打算这样,可是发现: 在显示一个字的时候,不知道使用哪一种字体配置为准。 不论xft,还是x font core都能够自我配置。 --- 如果兄弟确实想要,我今天回去尝试下,不过要修改的地方比较多点。可能会超过2000行大关了:) |
已那种为中心呢?
我都提供了方法来开关xft了。
作者: SCys 发布时间: 2008-03-23
作者: Xorcerer 发布时间: 2008-03-24
引用: 作者: SCys 你能够想像到两种字体配置都支持的混乱吗:) --- 我一开始也是打算这样,可是发现: 在显示一个字的时候,不知道使用哪一种字体配置为准。 不论xft,还是x font core都能够自我配置。 --- 如果兄弟确实想要,我今天回去尝试下,不过要修改的地方比较多点。可能会超过2000行大关了:) 兄弟,我今天写了一下,发现无法按两种都有的情况下配置字体。 已那种为中心呢? 我都提供了方法来开关xft了。 |
我说的这个特性是gtk+/pango可以提供的,但是对于xft来说,它只能使用XftDrawStringUtf8来对非英文字符进行渲染。
其实utf8字符针对每个不同地区的字符集都是有编码区间的,可以将需要显示的字符分成英文和非英文两种,然后分别用不同的字体进行渲染。
但是这个功能的实现估计是要仿照XftDrawStringUtf8的代码进行重写了,这个工作可不轻松,估计代码量会大增。
在原来的dwm代码中,它是使用XmbDrawString来实现多字体的显示,它的渲染方式也是差不多的,把需要显示的字符分成不同的字符集,比如ISO8859-1,GB2312.1980-1,然后根据字符的类型,选用不同的字符集进行渲染。
我的想法是:在xft中,能够用第一个字体渲染的字符就用第一个进行显示,在第一个字体中没有的字符,用第二个字体进行渲染。
所以主要的问题是怎么判断能否用某个字体来渲染某个字符。
在这里有一个思路,就是utf8字符针对每个不同地区的字符集都是有编码区间,所以可以根据字符的特征位来判断应该用什么字体进行渲染。
这个问题可以研究一下,但是加到dwm中确实不合适,代码量比较大,渲染速度也会下降的。
作者: takethat 发布时间: 2008-03-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28