linux安装dwm界⾯,dwm(简体中⽂)
dwm是X下的⼀个动态窗⼝管理器。它⽤平铺的、栈式的和全屏的布局⽅式,借助⼀些可选的补丁还可以实现其他的布局。布局可以动态得改变,为程序提供最优的环境和性能。dwm特别轻量快速,⽤C语⾔编写,被设计的⽬标是控制在2000⾏以下的代码。在xrandr和Xinerama⽀持下可实现multi-head。
安装
这⾥建议⽤makepkg从ABS安装。这样你可以在稍后的时间简单地重新配置。如果你只是想安装试⽤⼀下的话,简单地安装:
# pacman -S dwm
注意这样是不灵活的,因为dwm的配置要通过修改它的源码来实现。所以接下来的⽂章假定你从源码编译dwm。
你可能很想同时安装dmenu,⼀个X下轻量级的动态菜单:
# pacman -S dmenu
需求
你需要⽤
# pacman -S base-devel asp
下载 PKGBUILD
如果需要的包都准备好了,可以⽤ asp 从仓库⾥获得最新的 PKGBUILD 了:
$ asp export community/dwm
编译和安装
⽤ cd 进⼊到 asp 导出的⽬录,然后运⾏:
$ makepkg -i
这会编译并安装dwm,如果有问题请仔细输出信息。
Tip: 如果你以后不更改这个⽬录, 你可以在以后的时间继续⽤它来对配置⽂件做进⼀步的修改。
配置
就像上边提到的那样,dwm是在编译时配置的,确切地说就是修改config.h和config.mk。然⽽它提供了⼀个很好的初始配置,对⼀些有经验的⽤户,它是很好调整的。
⽅法⼀:使⽤ ABS(推荐)
在这⾥修改dwm是⾮常简单的。
⾃定义config.h
进⼊安装过程中的dwm的源码⽬录;也就是上边的~/dwm。⾥边的config.h 存放着通常的配置信息。这个⽂件⾥的⼤多数配置都很好理解,但其他的可能⽐较有个性。关于这些配置的详细信息可以查阅dwm website。
Note: 要确保修改之前保存⼀份config.h的备份,以防修改中发⽣错误。
⼀旦修改完成了,更新PKGBUILD⾥的md5sums:
$ makepkg -g >> PKGBUILD
这样会避免因为和官⽅的config.h⽂件不⼀样导致校验值错误。
现在,编译并重新安装:
$ makepkg -efi
假定配置是有效的,这条命令会编译和重新安装dwm,如果出问题了,请仔细查看输⼊内容获得详细信息。
最后,重启dwm来使⽤新的配置。
注意
从现在开始,我们不必每次都更新config.h的md5sums了,因为会很频繁,我们只需要⽤--skipinteg选项来跳过校验。
$ makepkg -efi --skipinteg
在往dwm的启动脚本⾥添加⼏⾏后,我们可以在不登出和退出程序程序的情况下重启dwm。
⽅法⼆:使⽤Mercurial(⾼级)
上游的dwm是⽤git版本控制系统来维护的,在。熟悉Mercurial的⼈会发现⽤它来维护配
置和补丁会更⽅便。
启动dwm
可以⽤startx或者SLiM登陆管理器来启动dwm,只需要在~/.xinitrc添加:
exec dwm
对于GDM,在~/.Xclients添加上述内容,然后在会话菜单⾥选择”运⾏XClient脚本”。
配置状态条
dwm使⽤根窗⼝名称来显⽰状态条信息,可以使⽤xsetroot -name来改变。
基本状态条
这个例⼦显⽰ISO 8601格式的⽇期。把下边的内容添加到~/.xinitrc或者~/.Xclients,或者可以从GDM-3的讨论页中获得更多细节:while true; do
xsetroot -name "$( date +"%F %R" )"
sleep 1m # Update time every minute
done &
exec dwm
这是个笔记本使⽤的,依赖
怎么将linux系统改成中文while true ; do
xsetroot -name "$( acpi -b | awk '{ print $3, $4 }' | tr -d ',' )"
sleep 1m
done &
exec dwm
这个脚本显⽰电池剩余电量和充电状态,⽤awk命令过滤acpi输出的⽆⽤信息,然后⽤tr去除逗号。
另⼀个⽅式是根据电池的状态选择性地输出信息:
while true; do
batt=$(LC_ALL=C acpi -b)
case $batt in
*Discharging*)
batt="${batt#* * * }"
batt="${batt%%, *} "
;;
*)
batt=""
;;
esac
xsetroot -name "$batt$(date +%R)"
sleep 60
done &
exec dwm
最后,要确保在~/.xinitrc或者~/.Xclients⾥只有⼀个dwm实例, 所以把整合起来应该像这样:
~/.setbg
autocutsel &
termirssi &
urxvt &
while true; do
xsetroot -name "$(date +"%F %R")"
sleep 1m # Update time every minute
done &
exec dwm
这是另⼀个显⽰alsa⾳量和电池状态的例⼦。它⼀直显⽰到系统退出为⽌。
#set statusbar
while true
do
if acpi -a | grep off-line > /dev/null; then
xsetroot -name "Bat. $( acpi -b | awk '{ print $4 " " $5 }' | tr -d ',' ) | Vol. $(amixer get Master | tail -1 | awk '{ print $5}' | tr -d '[]') | $(date +"%a, %b %d %R")"
else
xsetroot -name "Vol. $(amixer get Master | tail -1 | awk '{ print $5}' | tr -d '[]') | $(date +"%a, %b %d %R")"
fi
sleep 1s
done &
Conky状态条
Conky可以使⽤xsetroot -name来往状态条⾥输出信息:
conky | while read -r; do xsetroot -name "$REPLY"; done &
exec dwm
要想这样做,conky需要只往终端⾥输出⽂本。这是个应⽤于dual core CPU的简单conkyrc,显⽰⼏个状态信息:
out_to_console yes
out_to_x no
background no
update_interval 2
total_run_times 0
use_spacer none
TEXT
$mpd_smart :: ${cpu cpu1}% / ${cpu cpu2}% ${loadavg 1} ${loadavg 2 3} :: ${acpitemp}c :: $memperc% ($mem) :: ${downspeed eth0}K/s ${upspeed eth0}K/s :: ${time %a %b %d %I:%M%P}
状态条颜⾊
可以在config.def.h中更改,然后复制到config.h中。
static const char col_gray1[] = "#000000"; #状态条底⾊
static const char col_gray2[] = "#FFFFFF"; #当static const unsigned int borderpx不为0时,⾮活动窗⼝外边框颜⾊
static const char col_gray3[] = "#39C5BB"; #当前⾮活动的title字体颜⾊
static const char col_gray4[] = "#7FFF00"; #当前活动的title字体颜⾊
static const char col_cyan[] = "#696969"; #title底⾊
static const unsigned int borderpx也是config.def.h的选项,不为0时,会在窗⼝边缘产⽣边框
基本⽤法
使⽤dmenu
Dmenu是dwm的⼀个有⽤的扩展。它不是⼀个单独的列表式菜单,⽽是⽣成⼀个可执⾏⽂件的列表并根据输⼊进⾏⾃动补全。⽐起许多程序启动器,它能与dwm更好地整合。
可以按 Mod1 + P 来启动Dmenu(Mod1 缺省是 Alt )。当然你也可以按⾃⼰的喜好改变它。然后只需要在上边出现的⼯具条中输⼊你想运⾏的程序的前⼏个字母,也可以按左右箭头在进⾏选择,按回车键完成。
更详细的信息请查阅 dmenu.
控制窗⼝
将窗⼝移动到另⼀个tag
将当前的活动窗⼝移到其他的标签页:Shift + Mod1 + x, 其中的x是其他的标签页的序号,如果x是5,则表⽰将当前的活动窗⼝移到第5号标签页上去。Mod1 缺省是 Alt 键,这个键值可以在config.h中定义。
关闭窗⼝
关闭当前的活动窗⼝: Shift + Mod1 + C.
窗⼝布局
dwm缺省⼯作在平铺模式。当新窗⼝不断出现在同⼀个标签页时,窗⼝会越来越⼩。所有窗⼝会占满整个屏幕(除了⽬录条)。然⽽还有其他两种模式:浮动和单页模式。浮动模式对⾮平铺窗⼝管理器⽤户来说更熟悉,它允许⽤户重新按⾃⼰需要摆放窗⼝。单页模式会让⼀个窗⼝在最上边。
要切换到浮动模式,只需要按Mod1 + F。Mod1缺省是 Alt。如果你看到标签页右上⾓有X>这样的标志,就进⾏了浮动模式。
切换到单页模式,按 Mod1 + M。检查上否在单页模式,你会看到[M]标志(如果当前标签页⽆窗⼝),或者[n](n是打开窗⼝的编号)。
回来平铺模式,按Mod1 + T,你会看到 []= 这样的标志。
退出dwm
退出dwm(登出): Shift + Mod1 + Q.
官⽅关于默认的快捷键的说明: dwm tutorial.
再次说明,快捷键可以根据⾃⼰的喜好⾃由定义,本维基中的快捷键都是指官⽅默认的快捷键。
扩展使⽤
补丁和增加窗⼝布局(tiling modes)
DWM官⽹上有很多可以给DWM添加功能的补丁, ⽤户可以通过补丁定制DWM。
bottomstack补丁能够使DWM由原来的垂直布局变为⽔平布局,⽽gapless grid补丁则可使窗⼝变为⽹格状布局.
实现为每个标签定制布局
dwm的缺省⾏为是将当前选定的布局应⽤到所有标签上。如果想为每个标签定制布局可以打pertag这个补丁。
解决模拟终端窗⼝缝隙问题
如果你发现模拟终端(例如xterm,Urxvt)的窗⼝占不满屏幕,这是因为其窗⼝的⼤⼩和字体有关。你可以试图调整字体⼤⼩直到恰好合适为⽌(这也许是很困难的),或者只需要把config.h ⽂件中的 resizehints 设置为 False:
static Bool resizehints = False; /* False means respect size hints in tiled resizals */
这样dwm会忽略所有窗⼝的改变⼤⼩的请求,不只是模拟终端的。这样的缺点是⼀些模拟终端可能会刷新异常,像显⽰⼀些错误的内容。
Urxvt
对于 urxvt ⽤户另⼀个⽅法是打 hints patch[断开的链接:⽆效的部分] 这个补丁然后将dwm改回到默认的选项:
static Bool resizehints = True;
在不登出和退出程序程序的情况下重启dwm
如果你要在在线重启dwm(不关闭它以及其他应⽤程序),修改启动脚本,并让dwm在⼀个while循环中运⾏,像这样:
while true; do
# Log stderror to a file
dwm 2> ~/.dwm.log
# No error logging
#dwm >/dev/null 2>&1
done
这样就可以⽤Mod-Shift-Q快捷键来实现重启。
把上边的内容写到⼀个其他的⽂件(例如~/bin/startdwm)是⼀个好主意。然后在 ~/.xinitrc ⽂件⾥添加(exec startdwm)。这样我们可以使⽤ killall startdwm 来真正地退出X会话,或者绑定到⼀个⽅便的快
捷键上。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论