窗口管理器

来自 ArchWiki
(重定向自 Snapwm)

来自 Window manager

窗口管理器是一种系统软件,用于控制 窗口窗口系统图形用户界面中的位置和外观。

它可以是桌面环境的一部分,也可以单独使用。

注意: 窗口管理器是 Xorg 独有的。在 Wayland 上与窗口管理器等效的称为合成器,因为它们也充当 合成窗口管理器

概述

窗口管理器是 X 客户端,用于控制绘制各种图形应用程序的框架(“窗口”)的外观和行为。它们决定了边框、标题栏、大小和调整窗口大小的能力,并且通常提供其他功能,例如用于粘贴 dockapps 的保留区域,例如 Window Maker,或像 Fluxbox 那样对窗口进行选项卡式分组的功能。一些窗口管理器甚至捆绑了简单的实用程序,例如用于启动程序或配置窗口管理器本身的菜单。

扩展窗口管理器提示规范用于允许窗口管理器以标准方式与服务器和其他客户端交互。

一些窗口管理器是作为更全面的桌面环境的一部分开发的,通常允许其他提供的应用程序更好地相互交互,为用户提供更一致的体验,并包含桌面图标、字体、工具栏、壁纸或桌面小部件等功能。

其他窗口管理器则被设计为独立使用,让用户完全自由地选择要使用的其他应用程序。这允许用户创建更轻量级和自定义的环境,以满足他们自己的特定需求。如果需要,诸如桌面图标、工具栏、壁纸或桌面小部件之类的“附加功能”将必须使用额外的专用应用程序来添加。

一些独立的窗口管理器也可以用来替换桌面环境的默认窗口管理器,就像一些面向桌面环境的窗口管理器也可以独立使用一样。

在安装窗口管理器之前,需要一个功能正常的 X server 安装。有关详细信息,请参阅 Xorg

类型

  • 堆叠(又名浮动)窗口管理器提供了商业操作系统(如 Windows 和 macOS)中使用的传统桌面隐喻。窗口就像桌子上的纸张一样,可以堆叠在一起。有关可用的 Arch Wiki 页面,请参阅 Category:堆叠窗口管理器
  • 平铺窗口管理器“平铺”窗口,使它们不会重叠。它们通常大量使用快捷键绑定,并且较少(或不)依赖鼠标。平铺窗口管理器可以是手动的,提供预定义的布局,或两者兼有。有关可用的 Arch Wiki 页面,请参阅 Category:平铺窗口管理器
  • 动态窗口管理器可以在平铺或浮动窗口布局之间动态切换。有关可用的 Arch Wiki 页面,请参阅 Category:动态窗口管理器

有关窗口管理器的比较,请参阅平铺窗口管理器比较Wikipedia:X 窗口管理器比较

窗口管理器列表

堆叠窗口管理器

  • 2bwm — 快速浮动窗口管理器,具有 2 个边框的特点,使用 XCB 库编写,并从 Michael Cardell 编写的 mcwm 派生而来。在 2bwm 中,一切都可以通过键盘访问,但可以使用指针设备进行移动、调整大小和提升/降低。
https://github.com/venam/2bwm || 2bwmAUR
  • 9wm — 受 Plan 9 的 rio 启发的 X11 窗口管理器。
https://github.com/9wm/9wm || 9wmAUR
  • AfterStep — 最初基于 NeXTStep 界面的外观和感觉,它为最终用户提供了连贯、简洁和优雅的桌面。AfterStep 开发的目标是提供桌面配置的灵活性,提高美观性,并有效利用系统资源。
http://www.afterstep.org/ || afterstep-gitAUR
  • berry — 用 C 语言编写的小巧窗口管理器。它通过命令行客户端控制,允许用户通过热键守护程序(如 sxhkd)控制窗口,或通过 shell 脚本扩展功能。它提供带有双边框、标题栏和窗口文本的可扩展主题选项。Berry 将新窗口放置在未占用的空间中,并支持虚拟桌面。
https://berrywm.org/ || berry-gitAUR
  • Blackbox — 快速、轻量级的 X 窗口管理器,没有所有那些烦人的库依赖项。Blackbox 使用 C++ 构建,并包含完全原创的代码(即使图形实现与 WindowMaker 相似)。
https://github.com/bbidulock/blackboxwm || blackbox
  • Compiz — OpenGL 合成管理器,使用 GLX_EXT_texture_from_pixmap 将重定向的顶层窗口绑定到纹理对象。它具有灵活的插件系统,旨在在大多数图形硬件上良好运行。
https://launchpad.net/compiz || compizAUR, compiz-coreAUR
  • cwm — 最初源自 evilwm,但后来从头开始重写,cwm 旨在简洁,并提供有用的功能,例如搜索窗口。
https://github.com/leahneukirchen/cwm || cwmAUR
  • eggwm — 轻量级 QT4/QT5 窗口管理器。
eggwm-qt5AUR || eggwmAUR
  • Enlightenment — Enlightenment 不仅仅是 Linux/X11 和其他系统的窗口管理器,而且是一套库,可帮助您创建漂亮的用户界面,与以传统方式进行并与传统工具包作斗争相比,工作量要少得多,更不用说传统的窗口管理器了。
https://www.enlightenment.org/ || enlightenment
  • evilwm — 用于 X Window 系统的极简窗口管理器。“极简”并不意味着它太简陋而无法使用 – 它意味着它省略了很多使其他窗口管理器无法使用的东西。
https://www.6809.org.uk/evilwm/ || evilwmAUR
  • Fluxbox — 基于 Blackbox 0.61.1 代码的 X 窗口管理器。它非常节省资源且易于操作,但功能齐全,可提供轻松且极其快速的桌面体验。它使用 C++ 构建,并根据 MIT 许可证获得许可。
https://github.com/fluxbox/fluxbox || fluxbox
  • Flwm — 试图结合几个窗口管理器的最佳想法。主要影响和代码库来自 Chris Cannam 的 wm2。
https://flwm.sourceforge.net/ || flwmAUR
  • FVWM — 适用于 X Window 系统的功能强大的符合 ICCCM 的多虚拟桌面窗口管理器。开发活跃,支持出色。
https://www.fvwm.org/ || fvwm3AUR
  • Gala — 来自 elementaryos 的漂亮窗口管理器,是 Pantheon 的一部分。也作为基于 libmutter 的合成管理器。
https://launchpad.net/gala || gala
  • Goomwwm — 用 C 语言实现的 X11 窗口管理器,作为一个纯净室软件项目。它以最小的浮动布局管理窗口,同时为窗口切换、大小调整、移动、标记和平铺提供灵活的键盘驱动控件。它还快速、轻量级、无模式、支持 Xinerama,并在可能的情况下兼容 EWMH。
https://github.com/seanpringle/goomwwm || goomwwmAUR
  • IceWM — X 窗口管理器。IceWM 的目标是速度、简洁,并且不妨碍用户。
https://ice-wm.org/ || icewm
  • jbwm — 基于 evilwm,最小配置大小约为 16kb,专注于小二进制大小和可用性,包含可选的标题栏和 XFT 标题栏字体渲染作为编译时选项,jbwm 还具有比 evilwm 更易于使用的键盘绑定。
https://github.com/jefbed/jbwm || jbwmAUR
  • JWM — X 窗口管理器。JWM 用 C 语言编写,并且至少只使用 Xlib。
https://joewing.net/projects/jwm/ || jwmAUR
  • Karmen — Johan Veenhuizen 编写的 X 窗口管理器。它旨在“开箱即用”。没有配置文件,也没有除 Xlib 之外的库依赖项。输入焦点模型是点击对焦。Karmen 旨在符合 ICCCM 和 EWMH 标准。
https://karmen.sourceforge.net/ || karmenAUR
  • KWin — 自 KDE 4.0 以来的标准 KDE 窗口管理器,它也是一个合成管理器。这使 KWin 能够提供类似 Compiz 的高级图形效果,同时还提供以前 KDE 版本的所有功能(例如与 KDE 其余部分的良好集成、高级可配置性、焦点窃取预防、经过良好测试的窗口管理器、对行为不端的应用程序/工具包的强大处理等)。也充当 Wayland 的合成器。
https://techbase.kde.org/Projects/KWin || kwin
  • lwm — X 窗口管理器,试图不引人注目。没有图标、没有按钮栏、没有图标停靠栏、没有根菜单,什么都没有:如果你想要所有这些,那么其他程序可以提供它。也没有可配置性:如果你想要那个,你想要一个不同的窗口管理器;一个帮助你的操作系统邪恶地征服你的磁盘空间并吞并你的物理内存的窗口管理器。
http://www.jfc.org.uk/software/lwm.html || lwmAUR
  • Marco — MATE 窗口管理器,Metacity 的分支。
https://github.com/mate-desktop/marco || marco
  • Metacity — 此窗口管理器力求安静、小巧、稳定、完成其工作并远离您的注意力。它被传统的 GNOME 2 和 GNOME flashback 会话使用,并被 Mutter 取代。
https://blogs.gnome.org/metacity/ || metacity
  • MLVWM — Macintosh-Like Virtual Window Manager,FVWM 的后代,它试图在其布局和窗口设计中模拟 pre-Mac OS X Macintosh 的外观和感觉。
http://www2u.biglobe.ne.jp/~y-miyata/mlvwm.html || mlvwmAUR
  • Muffin — Cinnamon 的窗口和合成管理器。Mutter 的分支,基于 Clutter,使用 OpenGL。它不能在 Cinnamon 之外使用。
https://github.com/linuxmint/muffin/ || muffin
  • Mutter — GNOME 的窗口和合成管理器,基于 Clutter,使用 OpenGL。也充当 Wayland 合成器。
https://gitlab.gnome.org/GNOME/mutter/ || mutter
  • MWM — Motif 窗口管理器 (MWM) 是一个基于 Motif 工具包的 X 窗口管理器。
https://sourceforge.net/projects/motif/ || openmotif
  • Openbox — 高度可配置的窗口管理器,具有广泛的标准支持。 *box 视觉风格以其简约的外观而闻名。 Openbox 使用 *box 视觉风格,同时为主题开发者提供了比以前的 *box 实现更多的选项。自 2010 年以来一直是“功能完整”,但仍在维护中。
https://openbox.org/ || openbox
  • pawm — 用于 X Window 系统的窗口管理器。所以它不是“桌面”,也不为您提供大量无用的选项,而只提供运行 X 应用程序所需的工具,同时具有友好且易于使用的界面。
https://www.pleyades.net/david/projects/pawm || pawmAUR
  • PekWM — 窗口管理器,曾经基于 aewm++ 窗口管理器,但它已经发展到不再像 aewm++ 的程度。它具有大大扩展的功能集,包括窗口分组(类似于 Ion、PWM 或 Fluxbox)、自动属性、Xinerama、支持密钥链的 keygrabber 等。
https://www.pekwm.org/ || pekwm
  • Sawfish — 使用基于 Lisp 的脚本语言的可扩展窗口管理器。与大多数窗口管理器相比,它的策略非常简约。它的目的只是以最灵活和最具吸引力的方式管理窗口。所有高级窗口管理器功能都在 Lisp 中实现,以便将来扩展或重新定义。
https://sawfish.wikia.com/wiki/Main_Page || sawfishAUR
  • sowm — 简单的自以为是的窗口管理器,提供全屏切换、窗口居中和混合工作流程(即鼠标和键盘)。
https://github.com/dylanaraps/sowm || sowmAUR
  • TinyWM — 作为极简主义练习创建的微型窗口管理器。它可能有助于学习创建窗口管理器的一些非常基础的知识。它由大约 50 行 C 代码组成。还有一个使用 python-xlib 的 Python 版本。
http://incise.org/tinywm.html || tinywmAUR
  • twm — 简单的 X 窗口管理器,自 1989 年以来 Xorg 使用的默认/后备窗口管理器。它提供标题栏、异形窗口、多种形式的图标管理、用户定义的宏函数、点击输入和指针驱动的键盘焦点,以及用户指定的按键和指针按钮绑定。
https://gitlab.freedesktop.org/xorg/app/twm/ || xorg-twm
  • ukwm — 轻量级 GTK+ 窗口管理器,UKUI 桌面环境的默认窗口管理器。
https://github.com/ukui/ukwm/ || ukwm
  • UWM — UDE 的终极窗口管理器。
https://udeproject.sourceforge.net/ || udeAUR
  • Wind — 小型浮动窗口管理器。尝试遵守 ICCCM、EHWM、NetWM。
https://windwm.sourceforge.net/ || windwmAUR
  • WindowLab — 设计新颖的小型简单窗口管理器。它具有点击对焦但不提升对焦策略、允许在一个操作中更改窗口的一个或多个边缘的窗口大小调整机制,以及与任务栏共享屏幕同一部分的创新菜单栏。窗口标题栏通过约束鼠标指针来防止超出屏幕边缘,并在适当的时候将指针约束到任务栏/菜单栏,以便更容易点击目标菜单项。
https://github.com/nickgravgaard/windowlab || windowlabAUR
  • Window Maker — X11 窗口管理器,最初旨在为 GNUstep 桌面环境提供集成支持。在各方面,它都再现了 NEXTSTEP 用户界面的优雅外观和感觉。它快速、功能丰富、易于配置且易于使用。
https://windowmaker.org/ || windowmakerAUR
  • WM2 — X 窗口管理器。它提供了一种不寻常的窗口装饰风格,以及作者认为在窗口管理器中可以接受的最少功能。 wm2 是不可配置的,除非编辑源代码并重新编译代码,并且真正适合那些不太希望他们的窗口管理器太友好的人。
https://www.all-day-breakfast.com/wm2/ || wm2AUR
  • worm — Worm 是一个动态的、基于标签的 X11 窗口管理器。它支持浮动布局和主-堆叠平铺布局,并且是公开开发的。它也是用 Nim 编程语言编写的。
https://github.com/codic12/worm || worm-gitAUR
  • XfwmXfce 窗口管理器管理屏幕上应用程序窗口的放置,提供漂亮的窗口装饰,管理工作区或虚拟桌面,并原生支持多屏幕模式。它提供了自己的合成管理器(来自 X.Org Composite 扩展)以实现真正的透明度和阴影。 Xfce 窗口管理器还包括一个键盘快捷键编辑器,用于用户特定的命令和基本窗口操作,并提供一个首选项对话框用于高级调整。
https://docs.xfce.org/xfce/xfwm4/start || xfwm4

平铺窗口管理器

  • Bspwm — bspwm 是一个平铺窗口管理器,它将窗口表示为完整二叉树的叶子。它支持 EWMH 和多显示器,并通过消息进行配置和控制。
https://github.com/baskerville/bspwm || bspwm
  • EXWM — EXWM (Emacs X Window Manager) 是一个功能齐全的 Emacs 平铺 X 窗口管理器,构建于 XELB 之上。它具有完全键盘驱动的操作、混合布局模式(平铺和堆叠)、动态工作区支持、ICCCM/EWMH 兼容性、RandR(多显示器)支持和内置系统托盘。
https://github.com/ch11ng/exwm || emacs-exwm-gitAUR
  • Herbstluftwm — 用于 X11 的手动平铺窗口管理器,使用 Xlib 和 Glib。布局基于将框架拆分为子框架,这些子框架可以再次拆分或填充窗口(类似于 i3/musca)。可以在运行时添加/删除标签(或工作区或虚拟桌面或...)。每个标签都包含自己的布局。每个显示器上只查看一个标签。标签是独立于显示器的(类似于 xmonad)。它在运行时通过来自 herbstclient 的 ipc 调用进行配置。因此,配置文件只是一个在启动时运行的脚本。(类似于 wmii/musca)。
https://herbstluftwm.org || herbstluftwm
  • i3 — 从头开始完全编写的平铺窗口管理器。创建 i3 是因为当时的开发人员最喜欢的窗口管理器 wmii 没有提供我们想要的一些功能(例如,正确完成的多显示器),存在一些错误,在相当长一段时间内没有进展,并且根本不容易破解(源代码注释/文档完全缺乏)。显着的差异在于多显示器支持和树隐喻领域。为了速度,未实现 wmii 的 Plan 9 接口。
https://i3wm.org/ || i3-wm
  • Larswm — 基于 9wm 的平铺窗口管理器。
http://porneia.free.fr/larswm/larswm.html || larswmAUR
  • LeftWM — 用 Rust 编写的平铺窗口管理器。
https://leftwm.org || leftwmAUR
  • Notion — 用于 X 窗口系统的平铺、选项卡式窗口管理器,它利用“平铺”和“选项卡式”窗口。
    • 平铺:您将屏幕划分为不重叠的“平铺”。每个窗口占用一个平铺,并最大化到它
    • 选项卡式:一个平铺可能包含多个窗口 - 它们将是“选项卡式”的。
    • 静态:大多数平铺窗口管理器是“动态的”,这意味着当窗口出现和消失时,它们会自动调整大小并移动平铺。相比之下,Notion 不会自动更改平铺。
Notion 是 Ion3 的一个分支。
https://notionwm.net/ || notion
  • Ratpoison — 简单的窗口管理器,没有臃肿的库依赖项,没有花哨的图形,没有窗口装饰,也没有对鼠标的依赖。它主要模仿 GNU Screen,后者在虚拟终端市场中创造了奇迹。 Ratpoison 通过一个简单的文本文件进行配置。 Ratpoison 中的信息栏有点不同,因为它仅在需要时显示。它既充当应用程序启动器,又充当通知栏。 Ratpoison 不包含系统托盘。
https://www.nongnu.org/ratpoison/ || ratpoisonAUR
  • Stumpwm — 完全用 Common Lisp 编写的平铺、键盘驱动的 X11 窗口管理器。 Stumpwm 试图做到可定制但视觉上极简。它确实有各种挂钩来附加您的个人自定义项和要调整的变量,并且可以在运行时重新配置和重新加载。没有窗口装饰、没有图标和没有按钮。它的信息栏可以设置为始终显示或仅在需要时显示。
https://stumpwm.github.io/ || stumpwm
  • ZWM — 用 C 语言编写的极简平铺窗口管理器,它使用 XCB api 与 Xorg 服务器通信。它支持多显示器,支持 EWMH 规范的子集,并提供广泛的可配置性。
https://github.com/Yazeed1s/zwm || zwm-gitAUR

动态窗口管理器

  • awesome — 高度可配置的下一代框架窗口管理器,适用于 X。它非常快速、可扩展,并根据 GNU GPLv2 许可证获得许可。在 Lua 中配置,它内置了系统托盘、信息栏和启动器。有以 Lua 编写的扩展可用。 Awesome 使用 XCB 而不是 Xlib,这可能会导致速度提高。 Awesome 还有其他功能,例如早期替代 notification-daemon、类似于 *box 窗口管理器的右键单击菜单以及许多其他功能。
https://awesomewm.org/ || awesome
  • dk — 一款基于列表的平铺窗口管理器,风格类似于 dwm、bspwm 和 xmonad。
https://bitbucket.org/natemaia/dk/src/master/ || dkAUR
  • dwm — 适用于 X 的动态窗口管理器。它以平铺、单窗格和浮动布局管理窗口。所有布局都可以动态应用,从而为正在使用的应用程序和执行的任务优化环境。不包含系统托盘或自动启动器,但 dmenu 与其集成良好,因为它们出自同一作者。它没有文本配置文件。配置完全通过修改 C 源代码完成,并且每次更改后都必须重新编译并重启。
https://dwm.suckless.org/ || dwmAUR
  • echinus — 适用于 X11 的简单轻量级平铺和浮动窗口管理器。echinus 最初是 dwm 的一个分支,配置更简单,后来发展成为功能齐全的重父窗口管理器,并支持 EWMH。它有一个兼容 EWMH 的面板/任务栏,名为 ouricoAUR
http://plhk.ru || echinusAUR
  • FrankenWM — 基本上是 monsterwm 的改进版,浮动窗口功能更加完善。在基本的 mwm 之上添加的功能包括:更多布局(斐波那契数列、等分堆叠、双堆叠)、间隙(和边框)可以动态调整、最小化/最大化单个窗口、隐藏/显示所有窗口、单独调整主窗口和堆叠窗口大小、反转堆叠。
https://github.com/sulami/FrankenWM || frankenwmAUR
  • spectrwm — 适用于 X11 的小型动态平铺窗口管理器,很大程度上受到 xmonad 和 dwm 的启发。它力求不碍事,以便宝贵的屏幕空间可以用于更重要的内容。它具有合理的默认设置,并使用文本文件进行配置。它由黑客为黑客编写,力求小巧、紧凑和快速。它有一个内置状态栏,由用户定义的脚本提供信息。
https://github.com/conformal/spectrwm/ || spectrwmAUR
  • Qtile — 功能齐全、可 hack 的平铺窗口管理器,用 Python 编写。Qtile 简单、小巧且可扩展。可以轻松编写您自己的布局、小部件和内置命令。它完全用 Python 编写和配置,这意味着您可以利用该语言的全部功能和灵活性来使其满足您的需求。
https://github.com/qtile/qtile || qtile
  • Wingo — 功能齐全的真正混合窗口管理器,支持每个显示器的工作区,并且浮动或平铺模式都不是事后才考虑的功能。这允许在一个工作区上进行平铺,而在另一个工作区上进行浮动。Wingo 可以使用其自己的命令语言进行脚本编写,完全可主题化,并支持用户定义的钩子。Wingo 用 Go 编写,没有运行时依赖项。
https://github.com/BurntSushi/wingo || wingo-gitAUR
  • xmonad — 动态平铺 X11 窗口管理器,用 Haskell 编写和配置。在普通的 WM 中,您将一半的时间花在对齐和搜索窗口上。Xmonad 通过自动化此过程使工作更轻松。XMonad 在 Haskell 中配置。对于所有配置更改,必须重新编译 xmonad,因此必须安装 Haskell 编译器(超过 100MB)。一个名为 xmonad-contrib 的大型库提供了许多附加功能。
https://xmonad.org/ || xmonad

另请参阅