1 Star 0 Fork 0

herolh-tool / dwm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

DWM

简介

一个非常快速, 小巧并使用动态管理窗口的窗口管理器。

官网

什么是窗口管理器

窗口管理器的作用就是实现窗口的最大化,最小化,移动,关闭等。而这些不是X服务器来负责完成的。如果不窗口管理器,X应用程序仍可以启动,但它就在屏幕中间,不能移动,不能最小化,不能最大化,没有边框。

Xfree86 自带了一个简单的窗口管理器:twm,同时窗口管理器还有 GNOME 和 KDE 。为了更方便的了解窗口管理器的作用,我们可以做以下测试(下面使用的是 ubuntu,无法确认以下操作和命令的正确性)。

  • 有界面的Linux系统启动后,进入图形进面,我们打开一个 XTERM,输入 init3 就可以安全的回到字符界面。

  • 再输入 startx 又返回到图形界面,你看到的是一个和平时使用一样的完整的图形界面操作环境。你可以最大化,最小化,移动,关闭窗口等。

  • 我们还是再次进入字符界面,看看吧,按 ctrl+alt+backspace 反回字符界面。输入: xinit (注:与第二步的命令 startx 不同,再次启动图形界面,将看到一个 XTERM。而且不能移动。但是你可以在这个 XTERM 中输入命令打开 X 应用程序,如果我输入: mozilla。打开浏览器,但它在屏幕中间,不能移动,不能最小化,不能最大化,没有边框。为什么同样一个 X 应用程序会有这样的不同呢?因为我们用 startx 起动图形界面的时候同时也启动了一个默认的 WM(即窗口管理器),如果你用 KDE 就起动了 KDE,如果你用 GNOME 就起动了 GNOME。但是你用 xinit 起动图形界面的时候却没有起动 WM。

  • 如果你用 xinit 起动图形界面并在 xterm 中输入 twm,看看会有什么?

    xterm 被加上了一个边框,你可以通过这个边框移动,最大化,最小化这个 xterm,twm 就是 XFree86 中自带的窗口管理器,是一个比较简陋的最简单的窗口管理器,但是他具有窗口管理器的全部特征。

  • 如果你不输入 twm 而输入 gnome-session 就可以起动 GNOME 或者输入 startkde 起动 KDE。

X11 相关

X 是协议,就像 HTTP 协议,IP 协议一样。因为输入设备和显示设备不是同一个设备,而且他们需要相互配合,进行画面显示,所以需要一个交互协议,建立他们直接的沟通桥梁。

X 协议主要有 X 应用程序和 X 服务器组成,如:我需要划个圆,X 应用程序告诉 X 服务器在屏幕的什么地方用什么颜色画一个多大的圆,而具体的"画"的动作,比如这个圆如何生成,用什么显卡的驱动程序去指挥显卡完成等等工作是由 X 服务器来完成的。

X 服务器还负责捕捉键盘和鼠标的动作,假设 X 服务器捕捉到鼠标的左键被按下了,他就告诉 X 应用程序:亲爱的应用程序先生,我发现鼠标被按下了,您有什么指示吗?如果 X 应用程序被设计成当按下鼠标左健后再在屏幕上画一个正方形的话,X 应用程序就对 X 服务器说:请再画一个正方形,当然他会告诉服务器在什么地方用什么颜色画多大的正方形,但不关心具体怎么画--那是服务器的事情。

X 协议的实现
  • 常用 X 协议服务器有 Xfree86,Xorg,Xnest等,目前用到的更多的是 Xorg 的实现。
  • 常用 X 协议的 Client 端,Xlib库(封装了X协议内容),GTK 及 QT(在 Xlib 基础之上的再次封装)

安装依赖

前期准备

默认已安装号 xorg 相关依赖, 如未安装可参考以下 arch 系统的安装:

sudo pacman -S xorg make gcc 

自身依赖

安装依赖脚本都放在 install 目录下, 根据系统不同建立不同的脚本。

.
├── install
│   └── Arch.sh

补充说明

如果你使用登陆启动器(如 sddm 等) 需要添加 DWM 启动选项,可以在 /usr/share/xsessions/ 添加 DWM.desktop 文件,DWM.desktop文件内容如下:

[Desktop Entry]
Name=DWM
Exec=dwm
TryExec=dwm
DesktopNames=DWM

使用手册

快捷键

自定义

桌面自启动脚本位置

.config/dwm/autostart.sh

dwm 按键映射说明

直接采用 X11 的 keysyms。

并不是所有的键盘都用于输入英文,有些键盘是用于输入其他字符的,比如说日文假名、俄文字母等。通常来讲,键盘的 keycode 不会变,但操作系统可以选择性的翻译这些 keycode,来实现输入非 ascii 字符,这一步不需要输入法的介入。实际上键盘本身每个按钮的 keycode 是不变的,只是 keycode 到keysym s的映射变化了。这种映射与输入法不同,它是有标准的,并且每个操作系统都提供了同样的支持。keysyms 列表可以参考几个网页,它的内容是相同的:

变量(区分大小写) 说明 对应键盘按键
Mod1Mask 改变键 Alt
Mod4Mask 窗口键 Win
ShiftMask shift 键 Shift
XK_* * 为26 个字母以及 0~9 数字 对应键盘26个字幕和10个数字按键
XK_F* * 为 1~12 数字 对应键盘上 F1 ~ F12 按键
XK_Escape Esc 按键 esc
XK_grave esc 键下的 ~ 键 ~
XK_Tab 制表符 tab
XK_space 空格 space
XK_comma 逗号
XK_period 句号
XK_slash 斜杠 /
XK_semicolon 分号 ;
XK_quotedbl 单引号
XK_Return 回车 enter
XK_bracketleft 左中括号 [
XK_bracketright 右中括号 ]
XK_backslash 反斜杠 \
XK_equal 等于号 =
XK_minus 减号 -
XK_BackSpace 退格 back
XK_Delete 删除键 delete

应用补丁

打过的补丁文件都放在 patches 目录下, 补丁对应功能请查看 git log。

.
├── patches
│   └── dwm-alpha-6.4.diff
    ...

应用补丁的方式:

patch < patches/补丁名称.diff

如果应用过程有冲突, 冲突内容会保存在 对应文件.rej 当中, 解决完冲突即可。

参考资料

MIT/X Consortium License © 2006-2019 Anselm R Garbe <anselm@garbe.ca> © 2006-2009 Jukka Salmi <jukka at salmi dot ch> © 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com> © 2007-2011 Peter Hartlich <sgkkr at hartlich dot com> © 2007-2009 Szabolcs Nagy <nszabolcs at gmail dot com> © 2007-2009 Christof Musik <christof at sendfax dot de> © 2007-2009 Premysl Hruby <dfenze at gmail dot com> © 2007-2008 Enno Gottox Boland <gottox at s01 dot de> © 2008 Martin Hurton <martin dot hurton at gmail dot com> © 2008 Neale Pickett <neale dot woozle dot org> © 2009 Mate Nagy <mnagy at port70 dot net> © 2010-2016 Hiltjo Posthuma <hiltjo@codemadness.org> © 2010-2012 Connor Lane Smith <cls@lubutu.com> © 2011 Christoph Lohmann <20h@r-36.net> © 2015-2016 Quentin Rameau <quinq@fifth.space> © 2015-2016 Eric Pruitt <eric.pruitt@gmail.com> © 2016-2017 Markus Teich <markus.teich@stusta.mhn.de> © 2020-2022 Chris Down <chris@chrisdown.name> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个非常快速, 小巧并使用动态管理窗口的窗口管理器。 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/herolh-tool/dwm.git
git@gitee.com:herolh-tool/dwm.git
herolh-tool
dwm
dwm
release/6.4

搜索帮助

344bd9b3 5694891 D2dac590 5694891