选择 dwm 作为窗口管理器的 4 大理由分析

2023-11-07

导读 我喜欢极简。如果可能,我会尽量在一个终端下运行所有需要的程序。这避免了一些浮夸的特效占用我的资源或者分散我的注意力。而且,无论怎么调整窗口大小和位置却依旧无法使它们完美地对齐,这也让我感到厌烦。

出于对极简化的追求,我喜欢上了 Xfce 并且把它作为我主要的 Linux 桌面环境好几年了。直到后来我看了 Bryan Lunduke 关于他所使用的名为 Awesome 的窗口管理器的视频。Awesome 为用户整齐地布置好他们的窗口,看起来就是我想要的效果。但在我尝试之后却发现我难以把它配置成我喜欢的样子。于是我继续搜寻,发现了 xmonad,然而我遇到了同样的问题。xmonad 可以良好运作但为了把它配置成我理想中的样子我却不得不先通过 Haskell 语言这关。(LCTT 译注: AwesomeWM 使用 lua 语言作为配置语言,而 xmonad 使用 Haskell 语言)

几年后,我无意间发现了 suckless.org 和他们的窗口管理器 dwm。

简而言之,一个窗口管理器,例如 KDE,Gnome 或者 Xfce,包括了许多部件,其中除了窗口管理器还有其它应用程序。窗口管理器负责管理打开窗口的大小、布置(以及其它窗口相关的方面)。不同的桌面环境使用不同的窗口管理器,KDE 使用 KWin,Gnome 2 使用 Metacity, Gnome 3 使用 Mutter, 以及 Xfce 使用 Xfwm。当然,你可以方便地替换这些桌面环境的默认窗口管理器。我已经把我的窗口管理器替换成 dwm,下面我说说我喜欢 dwm 的理因。

动态窗口管理

与 Awesome 及 xmonad 一样,dwm 的杀手锏是它能利用屏幕的所有空间为你自动排布好窗口。当然,在现在的大多数桌面环境中,你也可以设置相应的快捷键把你的窗口放置在屏幕的上下左右或者是全屏,但是有了 dwm 我们就不需要考虑这么多了。

dwm 把屏幕分为主区域和栈区域。它包含三种布局:平铺,单片镜(monocle)和浮动。平铺模式是我最常使用的,它把一个主要的窗口放置在主区域来获取最大关注力,而将其余窗口平铺在栈区域中。在单片镜模式中,所有窗口都会被最大化,你可以在它们之间相互切换。浮动模式允许你自由调整窗口大小(就像在大多数窗口管理器下那样),这在你使用像 Gimp 这类需要自定义窗口大小的应用时更为方便。

一般情况下,在你的桌面环境下你可以使用不同的工作空间(workspace)来分类你的窗口,把相近的应用程序放置在计划好的工作空间中。在工作时,我会使用一个工作空间来进行工作,同时使用另一个工作空间来浏览网页。dwm 有一个相似的功能叫标签。你可以使用标签给窗口分组,当你选中一个标签时,就能显示具有相应标签的窗口。

高效

dwm 能让你的计算机尽量地节省电量。Xfce 和其它轻量桌面环境在较旧或者较低性能的机器上很受欢迎,但是相比于 Xfce,dwm 在登录后只使用了它们 1/3 的资源(在我的例子中)。当我在使用一台 1 GB 内存的 Eee PC (LCTT 译注:华硕生产的一款上网本,已停产)时,占用 660 MB 和 230MB 的差别就很大了。这让我有足够的内存空间运行我的编辑器和浏览器。

极简

通常,我让我的应用程序彼此相邻:作为主窗口的终端(通常运行着 Vim)、用来查阅邮件的浏览器,和另外一个用来查阅资料或者打开 Trello 的浏览器窗口。对于临时的网页浏览,我会在另一个工作空间或者说是另一个 标签 中开启一个 Chromium 窗口。

来自作者的屏幕截图。

在标准的桌面环境下,通常会有一或两个面板占据着屏幕上下或者两侧的空间。我尝试过使用自动隐藏功能,但当光标太靠近边缘导致面板弹出造成的不便实在让我很厌烦。你也可以把它们设置得更小,但我还是更喜欢 dwm 的极简状态栏。

速度

评判速度时,我比较看重 dwm 在登录后的加载速度和启动程序的速度。如果使用更快、更新的计算机,你可能不会在意这些细节,但是对我来说,不同的桌面环境和窗口管理器会有明显的差距。我实在不想连这种简单的操作也要等待,它们应该一下子就完成。另外,使用键盘快捷键来启动程序比起用鼠标或者触控板要快一些,而且我不想让双手离开键盘。

小结

即便如此,我也不会向新手用户推荐 dwm。研究如何配置它需要耗费一些时间(除非你对你的发行版提供的默认配置感到满意)。我发现要让一些你想要的补丁正常工作可能会有点棘手,而且相应的社区也比较小(其 IRC 频道明确表示不提供补丁的手把手帮助)。所以,为了得到你想要的效果,你得有些付出才行。不过,这也是值得的。

而且你看,它就像 Awesome 一样 awesome。


via: https://opensource.com/article/17/7/top-4-reasons-i-use-dwm-linux-window-manager

作者:Jimmy Sjölund 译者:haoqixu 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


本文转载自:http://www.linuxprobe.com/dwm-windows-choose.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择 dwm 作为窗口管理器的 4 大理由分析 的相关文章

  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • Intel 上的 gcc 中的 _mm_pause 用法

    我参考过这个网页 https software intel com en us articles benefitting power and performance sleep loops https software intel com
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设

随机推荐

  • DPDK的PMD(uio/igb_uio/vfio-pci/uio_pci_generic)

    目录 linux收包的方式 中断对性能的影响有多大 轮询对性能的提升有多大 PMD 介绍 收包对比 内核收包的弊端 DPDK 收包的优点 uio igb uio uio pci generic vfio pci igb uio IGB UI
  • MATLAB算法实战应用案例精讲-【集成算法】集成学习模型stacking(附Python和R语言代码)

    目录 前言 几个高频面试题目 1 哪种集成技术更优 什么情况下选择哪种集成技术呢
  • Java多线程技术详解(全都是细节!)

    多线程启动 线程有两种启动方式 实现Runnable接口 继承Thread类并重写run 方法 1 Thread 与 Runnable Runnable接口表示线程要执行的任务 当Runnable中的run 方法执行时 表示线程在激活状态
  • fisco bcos用caliper0.2.0进行压力测试的安装配置

    一 前期环境 1 硬件 需要外网权限 2 操作系统 版本要求 Ubuntu gt 16 04 CentOS gt 7 MacOS gt 10 14 3 基础软件 python 2 7 make g gcc git sudo apt inst
  • 中医处方软件_重磅上线:中医传承计算平台V3.0正式推出

    重要小贴士 为进一步提高期刊论文质量和水平 更为深度的传承和传播名医经验 中医传承计算平台研发团队联合中药大品种联盟将于2020年7月24 26日在贵阳举办中医药科研论文与SCI写作培训会议 该培训班围绕名医学术思想 经验总结 毕业论文设计
  • win10下MYSQL的下载、安装以及配置超详解教程~~小白入

    下载MYSQL 官网下载MYSQL5 7 21版本 链接地址https www mysql com downloads 下载流程图如下 进入官网点击Community 下载社区版 找到MYSQL Community Server 点击下方D
  • 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式

    一 系统吞度量要素 一个系统的吞度量 承压能力 与request对CPU的消耗 外部接口 IO等等紧密关联 单个reqeust 对CPU消耗越高 外部系统接口 IO影响速度越慢 系统吞吐能力越低 反之越高 系统吞吐量几个重要参数 QPS T
  • stm32 GPIO输入输出

    GPIO 通用输入输出口 可配置为8种输入输出模式 输出模式下可控制端口输出高低电平 用以驱动LED 控制蜂鸣器 模拟通信协议输出时序等 输入模式下可读取端口的高低电平和电压 用于读取按键输入 外接模块电平信号输入 ADC电压采集 模拟通信
  • qt中实现绘制图形与截图

    引言 实现可以选择线型 线宽 颜色 是否填充图形来绘制各种常见的图形 同时可以选择矩形区域来实现截图 效果 绘图的效果如上 截图的效果 实现 项目使用的qt5 13 2 编译器为MSVC2017 64bit 该项目是基于基类QWidget创
  • 多重继承和多继承, super, __mro__

    继承 父类派生子类 子类继承父类 通过继承 可以让子类去拥有父类中的属性和方法 而不必重新编写相同的代码 并且可以在父类的基础上添加新的属性和功能 在继承的同时 子类还可以重写父类中的方法 从而获取与父类不同的功能 实现多态 在 Pytho
  • 【华为OD机试真题 JS】报数游戏

    标题 报数游戏 时间限制 1秒 内存限制 262144K 语言限制 不限 100个人围成一圈 每个人有一个编码 编号从1开始到100 他们从1开始依次报数 报到为M的人自动退出圈圈 然后下一个人接着从1开始报数 直到剩余的人数小于M 请问最
  • TypeScript中的keyof、typeof、索引访问类型、条件类型

    一 keyof类型操作符 TypeScript中的keyof类型操作符可以获取某个类型的所有属性名组成的联合类型 这个操作符的作用是帮助开发者在静态类型检查中更准确地操作属性名 举例来说 如果我们有如下一个接口 interface Pers
  • Xcode多视图应用Tab Bar Controller、Table View Controller2021-04-10

    1 视图控制器 首先应该理解Xcode里的视图控制器一般以controller结尾 在storyboard中添加的每一个视图控制器都有一个默认的名字如View Controller 标识符 可以修改视图控制器的title属性 改它的名字 点
  • 编译执行与解释执行的区别

    今天在看到一篇关于分层编译优化的文章时 看到了解释执行与编译执行两个专业词汇 看着熟悉 但不甚理解 然后在网上搜索了一下 说一下自己的理解 对于我们平时写的代码 一般计算机是没办法直接识别的 需要相应的编译器将其编译层机器代码 一些计算机可
  • AI绘画关键词网站推荐 :轻松获取百万个提示词!完全免费

    一 lexica art 该网站拥有数百万Stable Diffusion案例的文字描述和图片 可以为大家提供足够的创作灵感 使用上也很简单 只要在搜索框输入简单的关键词或上传图片 就能为你提供大量风格不同的照片 点击照片就能看到完整的AI
  • uniapp调用地图,进行位置查询,标记定位

    这周开会又新增一个小功能 就是需要通过身份证号 手机号在地图查询 后台返回经纬度 标记位置 想着挺麻烦 做的时候发现没啥技术 分享给大家
  • JDK,JRE和JVM三者间关系

    JDK是什么 JDK Java Development Kit Java开发工具包 是针对Java开发程序员的产品 是整个Java的核心 包含Java运行环境JRE Java工具和Java基础类库 具有3个主要组成部分 1 Java 编程语
  • java重试工具库: 实现业务逻辑与重试逻辑的解耦

    对于开发过网络应用程序的程序员来说 重试并不陌生 由于网络的拥堵和波动 此刻不能访问服务的请求 也许过一小段时间就可以正常访问了 比如下面这段给某个手机号发SMS的伪代码 发送SMS public boolean sendSMS Strin
  • chrome打开开发者工具(F12)之后看不到请求头信息

    开发者工具的network窗口能够查看浏览器的请求头以及响应头信息 但是有时打开开发者工具会遇到像下图这种情况 找不到请求信息 无法查看请求头 或响应头 解决方法 点击 Filter 按钮 也就是图中的漏斗形状的按钮 下面会多出一系列选项
  • 选择 dwm 作为窗口管理器的 4 大理由分析

    导读 我喜欢极简 如果可能 我会尽量在一个终端下运行所有需要的程序 这避免了一些浮夸的特效占用我的资源或者分散我的注意力 而且 无论怎么调整窗口大小和位置却依旧无法使它们完美地对齐 这也让我感到厌烦 出于对极简化的追求 我喜欢上了 Xfce