linux下的dwm的基本安装配置

DWM

dwm(Dynamic Window Manager)由suckless.org开源社区主导,是一款可以在linux上运行的动态窗口管理器(wm)。其他知名的如i3wm,awesome均是基于dwm改编。

软件名称 软件平台 上线时间 最近更新时间 软件语言 开发商 软件权授 软件版本 软件大小
dwm 类Unix平台 2011年11月4日 2019年2月3日 英文 suckless.org MIT/X Consortium license 6.2 66 KB

1.产生背景

许多(开源)黑客为获得大量代码而感到自豪,因为他们相信自己编写的代码行越多,取得的进步就越大。他们取得的进步越多,他们就越熟练。这简直是一种错觉。

实际上,大多数黑客并不在乎代码质量。因此,如果他们得到解决问题的工作,他们就会坚持下去。如果在整个生命周期中将这种软件开发应用于相同的源代码,那么我们将剩下大量代码,完全固定的代码结构和有缺陷的系统设计。这是因为在开发过程中缺乏概念上的清晰性和完整性。

代码复杂性臃肿,难以使用且完全不一致的软件的根源,是使用复杂的代码,问题将以次优的方式解决,宝贵的资源被无休止地束缚着,性能减慢了,并且漏洞变得司空见惯。唯一的解决方案是废弃整个项目并从头开始重写它。

坏消息:高质量的重写很少发生,因为黑客为写大量代码而感到自豪。他们认为他们了解代码的复杂性,因此无需重写它。他们将自己视为策划者,了解其他人永远都希望掌握的内容。对于这些类型,复杂的软件是理想的选择。

巧妙的想法很简单。巧妙的软件很简单。简单性是Unix哲学的核心。您删除的代码行越多,您取得的进展就越多。随着软件中代码行数的减少,您变得越熟练,软件的吸引力就越小。[1]

2.发展历程

dwm补丁提交日志

3.主要功能

基础功能键

Mod1Mask – 键盘左边的Alt键

Mod4Mask – 键盘上的Win键

这个两个功能键是dwm的灵魂所在。如果您想让您的手指不离开键盘,那么您应该尝试着自己定义快捷键。而dwm默认绑定的一套快捷键是使用Mod1Mask,但是与很多IDE冲突。

不排除您觉得Mod1Mask更为方便。因此您完全可以定义两套快捷键。Mod4Mask用于启动一些软件,而Mod1Mask用于切换桌面。Mod4Mask用于启动软件,这个操作不会太频繁;Mod1Mask用于切换桌面,这样在使用dwm的过程中,您可以使用大拇指+数字键的组合很方便在不同的tag之间切换。

操作逻辑

dwm有3种模式:

  • tiled layout
  • floating layout
  • monocle layout

tiled layout 是指软件的窗体可以自由的调节大小,位置。

floating layout 中,dwm维护了一个栈,这个模式下开过多的窗口会导致dwm崩溃。

monocle layout 中,软件被最大化显示到一个tag中。

默认键位绑定

以下的Alt指键盘左边的Alt

  • Alt + 1~9 切换到tag 1~ 9
  • Alt + Shift + c 关闭当前窗口
  • Alt + Shift + 1~9 把当前窗口移动到tag 1~9
  • Alt + Shift + 0 把当前窗口移动到所有tag
  • Alt + Shift + q 销毁此dwm进程

float layout:

  • Alt + Enter 切换窗体栈的主次位置
  • Alt + j/k 切换聚焦窗体

tiled layout:

  • Alt + j/k 上下切换窗体

monocle layout:

  • Alt + j/k 上下切换窗体

  • Alt + p 启动程序

    • 您需要额外安装dmenu。
  • Alt + Shift + Return 启动终端st
    *您需要额外安装st。

三个白色终端的问题

如果您没有这个问题请跳过。

如果您遇到了这个问题,请编辑/etc/X11/xinit/xinitrc,并注释掉这三行,就像这样:

#xclock -geometry 50x50-1+1 & 
#xterm -geometry 80x50+494+51 & 
#xterm -geometry 80x20+494-0 &

实现透明

您需要额外安装窗口渲染器,并在后台默认启动。如:xcompmgr,picom。

解决IDEA不能正常显示的问题

编辑文件~/.xinitrc。如果没有,请创建它。

加入下面三行。注意,您需要先安装wmname。这个软件是suckless.org为了解决Java应用程序在dwm下无法正常显示的问题而创建的。您可以在您的包裹管理器中下载。或者在suckless.org官网下载源代码,编译安装。[2]

export _JAVA_AWT_WM_NONREPARENTING=1
exec $1
wmname LG3D

设置右边的状态信息

一个简单的设置如下图:
在这里插入图片描述

您可以在~/.xinitrc中添加如下shell命令:

while true; do
# do some things
######################################################
#电池 
left=$(cat /sys/class/power_supply/BAT1/capacity)%
status=$(cat /sys/class/power_supply/BAT1/status)
if [[ $status == D* ]];then
    status='未充电'
else 
    status='充电中'
fi
xsetroot -name "$(date +"%F %R" )[$status]:$left"
sleep 2s
 
######################################################
# do some things end 
done &

此脚本可以每隔2s动态的刷新时间和电池的状态信息。
您也可以定义其他的状态信息。

参考资料

1.Philosophy .suckless.org[引用日期2020-05-25]

2.idea-dwm .CSDN.2020-03-18[引用日期2020-05-25]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章