网站资料 · 技术情报 · 相似站点

dwm.suckless.org 暂未发现付费内容

分类: 其他

访问网站

更新时间:2026-10-01 10:12 语言:未知(默认) 网站访问:正常

站内浏览 0 次 访问跳转 0 次
dwm 首页完整截图
编辑评测

网站深度测评

dwm 是什么网站?

dwm 是 suckless.org 上的一个 X 窗口管理器(dynamic window manager),不是普通意义上的“网站服务”。它用 C 写成,主打极简、快速,通过编辑源码来定制。

它做什么

  • 管理窗口布局:tiled(主次区域)、monocle(全屏最大化)、floating(自由移动缩放)。
  • 用标签(tags)分组窗口,选中标签就显示对应窗口。
  • 每个屏幕有状态栏,显示标签、布局、窗口数、焦点窗口标题等。
  • 弹窗和固定尺寸窗口始终浮动。
  • 只提供单个二进制文件,不带额外工具。

谁适合用

  • 想自己改源码、不要配置文件的人。
  • 追求小体积、快启动、少依赖的 X 用户。
  • 愿意接受“改 C 代码即配置”这种工作方式的人。

和同类比

按官网自己的说法,dwm 比 suckless.org 上的其他工具更小更简单。与 ion、larswm、wmii 相比,dwm 没有 Lua 集成、没有 9P 支持、没有 shell 配置、没有远程控制,也不附带打印选择或鼠标变形等工具。

下一步

想用就直接从官网下载源码,按自己的需求改 config.h 后编译安装。如果你更希望用现成配置、不想碰源码,dwm 可能不适合你。

dwm 的平铺、单窗口和浮动布局分别适合什么使用场景?

dwm 的三种布局都可在使用中动态切换,核心区别在于“窗口如何分配屏幕空间”。

平铺(tiled):窗口分为主区域和堆叠区域,主区域放当前最需要关注的窗口,其余窗口排在堆叠区。适合需要同时盯着多个窗口、又要分清主次的工作,比如一边写代码一边看终端输出、一边查文档一边改文件。它让每个窗口都可见,但主区域之外的窗口会变小。

单窗口(monocle):所有窗口都最大化到屏幕大小,同一时刻只完整显示一个。适合专注做一件事,例如全屏阅读、看视频、演示,或屏幕较小、开多个窗口会挤的情况。需要切换时再切到别的窗口。

浮动(floating):窗口可自由移动和缩放。适合临时摆放、尺寸固定的窗口,例如对话框、弹窗、设置面板。dwm 里对话框始终以浮动方式管理,不受当前布局影响。

选择条件可以这样看:

你的情况 更合适的布局
要同时看多个窗口,且区分主次 平铺
只想专注一个窗口 单窗口
需要自由摆放或处理对话框 浮动

dwm 的布局是动态应用的,不必一开始就固定。实际使用时可以按任务随时切换,例如写代码用平铺,读文档切单窗口,遇到弹窗时它自动浮动。

dwm 如何通过标签管理窗口,并让多个显示器或屏幕各自独立工作?

dwm 用「标签(tags)」而不是「工作区(workspaces)」来组织窗口,并且每个屏幕(显示器)各自维护一套独立的标签选择状态。这是它多显示器体验的核心。

标签怎么管理窗口

  • 每个窗口可以被打上一个或多个标签;选择某个标签时,所有带该标签的窗口一起显示。
  • 标签是「过滤条件」而非「容器」:同一个窗口可以同时属于多个标签,因此能出现在多组视图里,不需要移动窗口到别的桌面。
  • 每个屏幕底部有一条状态栏,显示可用标签、当前布局、可见窗口数量、聚焦窗口标题,以及从根窗口名属性读到的文本(屏幕聚焦时)。
  • 状态栏用符号区分状态:选中标签用不同颜色;聚焦窗口的标签在左上角显示实心方块,被一个或多个窗口使用的标签显示空心方块;浮动窗口标题前是空心方块,最大化浮动窗口前是实心方块。
  • 聚焦状态还通过窗口周围一圈可自定义的边框来表示。
  • 布局(tiled / monocle / floating)可以动态切换,随时重新排列当前标签下的窗口;对话框和固定尺寸窗口始终浮动,不受布局影响。

多显示器各自独立工作

dwm 里每个屏幕都有自己的状态栏和自己的标签选择。也就是说,你可以在显示器 A 上显示标签 1、3,同时在显示器 B 上显示标签 2、5,互不干扰,窗口不需要在两个屏幕间搬来搬去。官网还专门有 multi monitor 与 multi pointer 的说明页,属于它明确支持的使用方式。

适合谁、什么时候用

  • 适合键盘驱动、追求轻量的用户:dwm 是单个二进制文件,源码刻意保持小,没有 Lua 集成、没有 9P、没有 shell 配置、没有远程控制,也不附带额外工具。
  • 适合多屏但不想维护多套工作区规则的人:标签天然可重叠,多屏只是各自选标签。
  • 代价是通过直接编辑源码来定制——这让它极快且安全(除窗口标题外不处理编译期未知的输入数据),但改配置等于改 C 代码并重新编译。

与相近项目的侧重差异

官网在 Differences 里直接对比了 ion、larswm、wmii:dwm 比它们更小、更快、更简单,去掉了 Lua、9P、shell 配置、远程控制以及打印选择、鼠标 warp 之类的附加工具。另外 dwm 不区分浮动层和平铺层,当前标签下的客户端可随时重排。如果你需要脚本化配置或远程控制,这些正是 dwm 主动舍弃的部分;如果你要的就是极简与速度,这就是它的取向。

下一步可以看什么

先读官网的 tutorial 和 customisation 页面,再看 patches 与 multi monitor 说明,确认你想要的标签/多屏行为是否已有现成补丁,避免一上来就改源码。

dwm 没有配置文件,修改源码后如何编译和生效?

dwm 没有运行时配置文件,所有自定义都写进源码;改完必须重新编译,再用新二进制替换正在运行的那个。

编译与生效步骤

  1. 在源码目录(含 config.mk 和 config.h)执行 make,得到新的可执行文件 dwm。
  2. 用 make install 覆盖安装到系统路径,或手动把新 dwm 复制到原路径。
  3. 重启 dwm 让新版本生效:退出当前会话重新登录,或用 Mod+Shift+Q 退出后重新启动。
  4. 想保留当前会话,可先 Mod+Shift+Q,再在 tty 里 startx 或重新执行启动命令;dwm 本身不提供热重载。

为什么必须编译

dwm 官方说明它通过编辑源码来定制,因此“不处理任何在编译时未知的输入数据,除窗口标题外”。这也是它快且安全的原因:没有配置解析、没有解释器,改配置等于改程序。

常见坑

  • 改的是 config.h(用户配置)还是 config.mk(编译选项),别混。
  • 打补丁(patches)后同样要重新 make;补丁冲突时先解决再编译。
  • 多显示器、多指针等行为也在源码层面配置,改完同样重新编译。

相关资源

  • 源码与文档:dwm
  • 补丁集合:dwm patches(同站 patches 页面)
  • 教程与 FAQ:同站 tutorial、faq 页面

下一步

先备份 config.h,再 make && make install,然后重启会话验证改动。若编译报错,优先检查补丁是否与当前版本匹配。

dwm 有哪些常用补丁,打补丁时需要注意什么?

dwm 本身刻意保持极简,常用功能大多靠补丁实现。官方页面把补丁单独列在 customisation/patches 下,源码也可在 download 处获取。

常用补丁类型

  • 布局增强:如增加更多平铺/网格布局,或让现有布局更灵活。
  • 状态栏与信息:在状态栏显示更多信息,或调整其显示方式。
  • 窗口与标签操作:更细的窗口移动、标签切换、多显示器支持等。
  • 多显示器与多指针:官方页面专门列出 multi monitor、multi pointer 分类,相关补丁集中在这里。
  • 浮动与全屏行为:调整浮动窗口、全屏或对话框的处理方式。

打补丁时要注意

  • 补丁要对应你的 dwm 版本。dwm 源码随版本变动,旧补丁直接打到新源码上常会冲突。
  • 补丁之间可能互相冲突。多个补丁改同一段代码时,需要手动合并。
  • dwm 靠改源码定制,没有配置文件。打完补丁要重新编译,出错时先看编译报错定位冲突位置。
  • 建议在干净源码上逐个打补丁,每打一个就编译一次,方便确认是哪个补丁引入问题。
  • 保留原始源码副本,方便回退。

下一步

先在 dwm 的 patches 页面找到与你版本匹配的补丁,再参考官方 tutorial 和 faq 了解编译与定制流程。

dwm 的状态栏如何显示自定义信息,比如内存、音量或日期?

dwm 自带的状态栏本身只显示标签、布局、窗口数和当前窗口标题等固定内容。要显示内存、音量或日期这类自定义信息,标准做法是让外部脚本周期性输出一行文本,再通过 X 根窗口名(root window name)把它传进去,dwm 会读取并显示在状态栏上。

具体来说:

  • 写一个脚本(shell、Python 等均可),用 free、pamixer/amixer、date 等命令采集内存、音量、日期,拼成一行字符串。
  • 用 xsetroot -name "..." 把这一行写入根窗口名。dwm 的状态栏会读取 WM_NAME(根窗口 name 属性)并显示。
  • 用循环加 sleep 定时刷新,例如每秒或每几秒更新一次日期和内存,音量变化时立即更新。

例如需要显示日期和内存,脚本里可以这样组合:

while true; do
  xsetroot -name "$(date '+%Y-%m-%d %H:%M') | MEM $(free -h | awk '/Mem/{print $3}')"
  sleep 1
done

把这段放进 ~/.xinitrc 或 dwm 的启动脚本里,开机即生效。

关于 dwm 的设计取向,官网在 Differences 一节说明:dwm 是单个二进制文件,源码保持精简,通过直接编辑源码来定制;它不处理编译时未知的输入数据,除了窗口标题和根窗口名。这也解释了为什么自定义状态信息走“根窗口名”这条通道——它是 dwm 预留的、能在运行时注入文本的少数接口之一。

几点选择上的提示:

  • 如果只想显示日期、内存、音量这类纯文本,上述根窗口名方案就够用,不需要额外补丁。
  • 如果希望状态栏支持点击、颜色分区或更复杂的排版,通常要打状态栏相关补丁,或改用 dwm 社区补丁页里的方案,再配合 suckless 生态的 slstatus 之类的独立状态程序。
  • 刷新频率别设太高:日期每秒一次即可,内存和音量按需,避免无谓占用。

下一步动作:先确认你的 dwm 启动方式(startx 还是显示管理器),把采集脚本挂到启动流程里,再用 xsetroot -name 测试一次,确认状态栏能正确显示。

dwm 官方资源、补丁与支持渠道导航

dwm 的全部官方资源都集中在 dwm.suckless.org 这一个站点上,包括源码下载、补丁、教程、FAQ 和支持渠道。它没有独立的包管理仓库页面或论坛,所有内容以纯文本和源码形式组织。如果你要找的是"能直接下载、能查文档、能提问题"的入口,下面按用途分类列出。

下载与源码

官网提供的是源码而非预编译二进制。dwm 以单个 C 源文件为核心,配合 config.mk 和 Makefile 构建,因此"下载"实际就是获取源码压缩包,然后自行编译。

  • Download 页面:提供最新版本源码包(.tar.gz)的下载链接,以及历史版本。
  • 源码结构:核心逻辑集中在 dwm.c,配置通过编辑 config.h(由 config.def.h 生成)完成,而不是读取外部配置文件。
  • 官网明确说明 dwm 是"单个二进制",源码刻意保持精简。

这意味着你无法像普通软件那样"安装后改配置",任何定制都要改源码再重新编译。

文档与教程页面

官网的导航里列出了一批专门页面,覆盖从入门到进阶的常见需求:

页面 用途
about 项目定位与设计理念
customisation 如何通过改源码定制 dwm
dynamic window management 动态窗口管理的工作方式
faq 常见问题解答
tutorial 上手教程
multi monitor 多显示器配置
multi pointer 多指针设备支持
status monitor 状态栏信息读取与显示
screenshots 界面截图参考

其中 tutorial 和 faq 是新手最先该看的两个页面;customisation 是理解"为什么 dwm 要改源码"的关键。

补丁(patches)

补丁是 dwm 生态的核心。官网设有独立的 patches 页面,社区把各种功能增强以补丁形式发布,用户自行选择并应用到源码上。

  • 补丁不是官方内置功能,而是可选叠加项。
  • 应用方式通常是 patch -p1 < xxx.diff,然后重新编译。
  • 由于补丁之间可能冲突,官网和社区通常建议一次只加少量补丁并逐一验证。

这是 dwm 与"开箱即用型"窗口管理器最大的区别:功能靠补丁拼装,而非配置开关。

支持渠道

官网的 Support 页面给出获取帮助的途径。dwm 属于 suckless 项目,社区支持以邮件列表和 IRC 为主,而不是图形化论坛或工单系统。

  • 提问前建议先查 FAQ 和邮件列表存档,避免重复问题。
  • 报告问题时通常需要说明版本、补丁列表和复现步骤。

开发信息

Development 页面说明项目的开发方式。dwm 遵循 suckless 的极简哲学:源码保持小、不引入编译期未知的输入处理。官网在 Differences 一节中明确对比了它与 ion、larswm、wmii 的差异——dwm 没有 Lua 集成、没有 9P 支持、没有基于 shell 的配置、没有远程控制,也不附带额外工具。

理解这一点很重要:如果你需要脚本化配置或远程控制,dwm 本身不提供,得靠补丁或外部工具。

怎么选:先看哪一页

  • 想安装:Download → 编译源码 → 参考 tutorial。
  • 想改外观或行为:customisation → 编辑 config.h → 重新编译。
  • 想加功能:patches → 挑选补丁 → 应用并编译。
  • 遇到问题:faq → Support 页面找邮件列表/IRC。
  • 多屏或多设备:multi monitor / multi pointer 页面。

dwm 的官方资源全部是文本和源码形式,没有图形化商店或一键安装。接受"改源码即配置"这一前提,这套资源就足够支撑从安装到深度定制的全过程。

网站信息概览

从公开技术信号来看,历史连续性与托管能力相互印证,网站更像经过长期维护的正式项目,而不是短期上线后即弃用的页面。从当前可见信息判断,多项搜索或分享字段同时缺失时,平台可能自行截取标题、正文和图片,最终展示更不稳定,也可能削弱用户的点击判断。

域名与注册信息

域名最早登记于 2006 年,注册历史相对较长。该网站采用常见域名后缀 .org。

DNS 与邮件配置

综合当前可观察字段,名称服务器由 suckless.org 提供,使用专业 DNS 托管。综合当前可观察字段,邮件交换服务器可识别为 suckless.org。SPF 与 DMARC 已有公开记录,当前无法确认 DKIM 的配置状态。RDAP 将 DNSSEC 标记为未签名。DNS 记录中的最低 TTL 为 900 秒。

TLS 与证书

公钥采用主流的 RSA 4096 位方案。TLS 握手提供了完整的证书链数据。证书可验证域名控制权,但现有数据不能确认组织身份。从公开技术信号来看,证书由 Let's Encrypt 签发,采用常见的自动化短周期证书服务。TLS 证书采用约 89 天的短有效期。

HTTP 响应

当前已配置 1/6 项,缺项为 CSP、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、点击劫持防护。未发现 X-Powered-By,后端框架信息未通过该字段公开。响应头没有可识别的内部信息泄露。Server 头为 nginx,未暴露具体版本号。响应头中未发现明确的 CDN/WAF 标识。

技术栈分析

现有迹象表明,技术指纹显示网站可能使用 nginx,当前没有可确认的版本号。外部仍能判断技术方向,但难以仅凭本次结果锁定具体受影响版本。

SEO 与社交分享

Title 较长,共 68 个字符。首页未检测到 Meta Description。页面未检测到 Viewport 元标签。页面没有声明首选 URL。页面未检测到 Open Graph 元数据。

主机和电子邮件

DNSsuckless.org
主机suckless.org
电子邮件suckless.org
位置 Germany 国旗Nuremberg, Bavaria, Germany 195.201.112.86

用户评价(0)

  • 暂无评价。

页面、搜索与分享信息

页面描述未检测到
规范链接未检测到
语言未知(默认)
Twitter Card未检测到

未知

所有爬虫 0 条允许 · 0 条禁止

暂未发现 Sitemaps

域名登记事实 RDAP / WHOIS

注册商Vautron Rechenzentrum AG
注册时间2006-10-06
到期时间2027-10-06
域名状态active
名称服务器ns1.suckless.org、ns2.suckless.org
DNSSECunsigned

DNS 记录

类型名称值TTL优先级
Asuckless.org195.201.112.86900—
AAAAsuckless.org2a01:4f8:1c0c:706c::1900—
MXsuckless.orgmx.suckless.org90010
NSsuckless.orgns1.suckless.org86400—
NSsuckless.orgns2.suckless.org86400—
TXTsuckless.orgv=spf1 mx ~all900—
CNAMEdwm.suckless.orgsuckless.org900—
DMARC_dmarc.suckless.orgv=DMARC1;p=reject;sp=reject;pct=100;rua=mailto:[email protected];ruf=mailto:[email protected];adkim=s;aspf=s;900—

TLS 与证书

定性结果配置正常
支持协议TLSv1.2、TLSv1.3
协商协议TLSv1.3
证书主题suckless.org
颁发者Let's Encrypt
有效期至2026-12-26T21:01 · 记录时剩余 86 天
验证事实证书信任:通过 · 域名匹配:通过

HTTP 响应标头

标头值
content-typetext/html
cache-controlmax-age=46042
servernginx
strict-transport-securitymax-age=31536000; includeSubDomains

已识别技术

nginx