窗口管理器

来自 Arch Linux 中文维基
(重定向自Window manager

窗口管理器(WM)是一种系统软件,在图形用户界面(GUI)中的窗口系统中控制窗口的位置和外观。它可以是桌面环境(DE)的一部分,也可以独立使用。

注意: 窗口管理器是 Xorg 独有的。Wayland 上窗口管理器的等价物称为混成器,因为它们也充当混成窗口管理器

概述[编辑 | 编辑源代码]

窗口管理器是控制绘制各种图形应用程序的框架(“窗口”)的外观和行为的 X 客户端。它们决定窗口的边框、标题栏、大小和调整大小的能力,并经常提供其他功能,如为粘附像 Window Maker 这样的 dockapps 保留区域,或像 Fluxbox 那样为窗口做标签。一些窗口管理器甚至包含了一些简单的工具,如启动程序的菜单或配置窗口管理器本身的工具。

Extended Window Manager Hints 规范用于允许窗口管理器以标准方式与服务器和其他客户端进行交互。

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

其他窗口管理器则被设计成独立使用,让用户完全自由地选择要使用的其他应用程序。这使得用户可以根据自己的具体需求,创建一个更加轻量级和个性化的环境。如果需要的话,像桌面图标、工具栏、墙纸或桌面小部件等“额外的东西”,将需要依赖于额外的专用应用程序。

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

安装窗口管理器需要能够正常运行的 X 服务器。详细信息请参阅 Xorg

类型[编辑 | 编辑源代码]

  • 堆叠(又名悬浮) 窗口管理器提供在 Windows 和 OS X 等商业操作系统中使用的传统桌面隐喻。不同窗口就像桌子上的白纸一样,且可以相互重叠。有关可用的 Arch Wiki 页面,请参见 Category:Stacking window managers
  • 平铺窗口管理器“平铺”窗口,以便没有重叠。他们通常非常广泛地使用键绑定,并且对鼠标的依赖较少(或不依赖)。平铺窗口管理器可以是手动的,也可以提供预定义的布局,甚至两者兼而有之。有关可用的 Arch Wiki 页面请参见 Category:Tiling window managers
  • 动态窗口管理器可以在平铺或堆叠窗口布局之间动态切换。有关可用的 Arch Wiki 页面请参见 Category:Dynamic window managers

有关窗口管理器的比较,请参见 Comparison of tiling window managersWikipedia:Comparison of X window managers

窗口管理器列表[编辑 | 编辑源代码]

本文或本节需要翻译。要贡献翻译,请访问简体中文翻译团队

附注: 请完成翻译。(在 Talk:窗口管理器# 中讨论)

堆叠窗口管理器[编辑 | 编辑源代码]

  • 2bwm — 快速浮动窗口管理器,其特点是具有两个边框,使用XCB库编写,是基于Michael Cardell编写的mcwm的衍生版本。 在2bwm中,所有操作均可通过键盘完成,但也可以使用指示设备来移动、调整大小和提升/降低窗口。 最近,该管理器的名称已从mcwm-beast更改为2bwm。
https://github.com/venam/2bwm || 2bwmAUR
  • 9wm — 基于Plan 9的rio窗口管理器的X11窗口管理器。
https://github.com/9wm/9wm || 9wmAUR
  • AfterStep — AfterStep是适用于Unix X Window系统的窗口管理器。最初基于NeXTStep界面的外观和感觉,它为终端用户提供了一致、清洁和优雅的桌面环境。AfterStep的目标是提供灵活的桌面配置、改善美观度和高效地利用系统资源。
http://www.afterstep.org/ || afterstep-gitAUR
  • berry — Berry是适用于Unix系统的健康、紧凑的窗口管理器,用C语言编写。它通过命令行客户端进行控制,允许用户通过热键守护进程,例如 sxhkd 来控制窗口,或通过Shell脚本拓展功能。它提供了可扩展的主题选项,包括双边框、标题栏和窗口文本。Berry会直观地将新窗口放置在空闲空间中,并支持虚拟桌面。
https://berrywm.org/ || berry-gitAUR
  • Blackbox — Blackbox是X Window系统的快速、轻量级的窗口管理器,没有烦人的库依赖。Blackbox使用C++构建,并包含完全原创的代码(尽管其图形实现与WindowMaker类似)。
http://blackboxwm.sourceforge.net/ || blackbox
  • Compiz — 这是一个使用GLX_EXT_texture_from_pixmap将重定向的顶层窗口绑定到纹理对象的OpenGL合成管理器。它拥有灵活的插件系统,并且设计用于在大多数图形硬件上良好运行。
https://launchpad.net/compiz || compizAUR, compiz-coreAUR
  • cwm — 最初是从evilwm演变而来,但后来完全重新编写。cwm的目标是简单,并提供了一些有用的功能,如搜索窗口。
https://github.com/chneukirchen/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。
http://flwm.sourceforge.net/ || flwmAUR
  • FVWM — 这是一个功能非常强大的、符合ICCCM标准的多虚拟桌面窗口管理器,适用于X Window系统。开发活跃,支持也非常出色。
https://www.fvwm.org/ || fvwmAUR
  • Gala — A beautiful Window Manager from elementaryos, part of Pantheon. Also as a compositing manager, based on libmutter.
https://launchpad.net/gala || gala
  • Goomwwm — X11 window manager implemented in C as a cleanroom software project. It manages windows in a minimal floating layout, while providing flexible keyboard-driven controls for window switching, sizing, moving, tagging, and tiling. It is also fast, lightweight, modeless, Xinerama-aware, and EWMH compatible wherever possible.
https://github.com/seanpringle/goomwwm || goomwwmAUR
  • IceWM — Window manager for the X Window System. The goal of IceWM is speed, simplicity, and not getting in the user's way.
https://ice-wm.org/ || icewm
  • jbwm — jbwm is a window manager based on evilwm, with a minimal configuration size of approximately 16kb, focused on small binary size and usability, incorporating optional title-bars and XFT title-bar font rendering as compile-time options. jbwm also features easier to use keybindings than evilwm.
https://github.com/jefbed/jbwm || jbwmAUR
  • JWM — Window manager for the X11 Window System. JWM is written in C and uses only Xlib at a minimum.
https://joewing.net/projects/jwm/ || jwm
  • Karmen — Window manager for X, written by Johan Veenhuizen. It is designed to "just work." There is no configuration file and no library dependencies other than Xlib. The input focus model is click-to-focus. Karmen aims at ICCCM and EWMH compliance.
http://karmen.sourceforge.net/ || karmenAUR
  • KWin — The standard KDE window manager since KDE 4.0, ships with the first version of built-in support for compositing, making it also a compositing manager. This allows KWin to provide advanced graphical effects, similar to Compiz, while also providing all the features from previous KDE releases (such as very good integration with the rest of KDE, advanced configurability, focus stealing prevention, a well-tested window manager, robust handling of misbehaving applications/toolkits, etc.). Also serves as a compositor for Wayland.
https://techbase.kde.org/Projects/KWin || kwin
  • lwm — Window manager for X that tries to keep out of your face. There are no icons, no button bars, no icon docks, no root menus, no nothing: if you want all that, then other programs can provide it. There is no configurability either: if you want that, you want a different window manager; one that helps your operating system in its evil conquest of your disc space and its annexation of your physical memory.
http://www.jfc.org.uk/software/lwm.html || lwm
  • Marco — The MATE window manager, fork of Metacity.
https://github.com/mate-desktop/marco || marco
  • Metacity — This window manager strives to be quiet, small, stable, get on with its job, and stay out of your attention. It is used by the legacy GNOME 2 and GNOME flashback sessions, and superseded by Mutter.
https://blogs.gnome.org/metacity/ || metacity
  • MLVWM — Macintosh-Like Virtual Window Manager, an FVWM descendant which attempts to emulate the pre-Mac OS X Macintosh look and feel in its layout and window design.
http://www2u.biglobe.ne.jp/~y-miyata/mlvwm.html || mlvwmAUR
  • Muffin — Window and compositing manager for Cinnamon, fork of Mutter, based on Clutter, uses OpenGL. It cannot be used outside of Cinnamon.
https://github.com/linuxmint/muffin/ || muffin
  • Mutter — Window and compositing manager for GNOME, based on Clutter, uses OpenGL. Also serves a Wayland compositor.
https://gitlab.gnome.org/GNOME/mutter/ || mutter
  • MWM — The Motif Window Manager (MWM) is an X window manager based on the Motif toolkit.
https://sourceforge.net/projects/motif/ || openmotif
  • Openbox — Highly configurable, next generation window manager with extensive standards support. The *box visual style is well known for its minimalistic appearance. Openbox uses the *box visual style, while providing a greater number of options for theme developers than previous *box implementations. The theme documentation describes the full range of options found in Openbox themes.
http://openbox.org/ || openbox
  • pawm — Window manager for the X Window system. So it is not a 'desktop' and does not offer you a huge pile of useless options, just the facilities needed to run your X applications and at the same time having a friendly and easy to use interface.
https://www.pleyades.net/david/projects/pawm || pawmAUR
  • PekWM — Window manager that once upon a time was based on the aewm++ window manager, but it has evolved enough that it no longer resembles aewm++ at all. It has a much expanded feature-set, including window grouping (similar to Ion, PWM, or Fluxbox), auto-properties, Xinerama, keygrabber that supports keychains, and much more.
https://www.pekwm.org/ || pekwm
  • Sawfish — Extensible window manager using a Lisp-based scripting language. Its policy is very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. All high-level window manager functions are implemented in Lisp for future extensibility or redefinition.
https://sawfish.wikia.com/wiki/Main_Page || sawfishAUR
  • sowm — Simple Opinionated Window Manager that provides fullscreen toggleing, window centering and a mixed workflow (i.e. mouse and keyboard).
https://github.com/dylanaraps/sowm || sowmAUR
  • TinyWM — Tiny window manager created as an exercise in minimalism. It may be helpful in learning some of the very basics of creating a window manager. It is comprised of approximately 50 lines of C. There is also a Python version using python-xlib.
http://incise.org/tinywm.html || tinywmAUR
  • twm — Window manager for the X Window System. It provides titlebars, shaped windows, several forms of icon management, user-defined macro functions, click-to-type and pointer-driven keyboard focus, and user-specified key and pointer button bindings.
https://gitlab.freedesktop.org/xorg/app/twm/ || xorg-twm
  • ukwm — A lightweight GTK+ window manager, default window manager for UKUI desktop environment.
https://github.com/ukui/ukwm/ || ukwm
  • UWM — The ultimate window manager for UDE.
http://udeproject.sourceforge.net/ || udeAUR
  • Wind — Small floating window manager. Tries to comply with ICCCM, EHWM, NetWM.
http://windwm.sourceforge.net/ || windwmAUR
  • WindowLab — 这是一个小巧简单、设计新颖的窗口管理器。它采用了点击即焦点但不自动提升的策略,窗口大小可通过一次操作改变一个或多个边界,并且创新地将菜单栏与任务栏共享屏幕上的同一部分。通过限制鼠标指针的移动,防止窗口标题栏超出屏幕边缘。而且,在合适的时候,鼠标指针也被限制在任务栏/菜单栏上,以便更容易点击目标菜单项。
https://github.com/nickgravgaard/windowlab || windowlabAUR
  • Window Maker — 最初设计为提供GNUstep桌面环境的整合支持的X11窗口管理器。它在各个方面都尽可能地复制了NEXTSTEP用户界面的优雅外观和感觉。它快速、功能丰富、易于配置和使用。而且它是自由软件,来自世界各地的程序员做出了贡献。
https://windowmaker.org/ || windowmakerAUR
  • WM2 — 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合成扩展),以实现真正的透明度和阴影效果。Xfce窗口管理器还包括一个键盘快捷键编辑器,用于用户特定命令和基本窗口操作,并提供了一个高级调整的首选项对话框。
https://docs.xfce.org/xfce/xfwm4/start || xfwm4

平铺窗口管理器[编辑 | 编辑源代码]

  • Bspwm — bspwm是一个平铺式窗口管理器,将窗口表示为完全二叉树的叶子节点。它支持EWMH和多个监视器,并通过消息进行配置和控制。
https://github.com/baskerville/bspwm || bspwm
  • EXWM — EXWM(Emacs X Window Manager)是一个完整功能的平铺式X窗口管理器,构建在XELB之上,专为Emacs设计。它具有完全基于键盘操作的特点,混合布局模式(平铺和堆叠),动态工作区支持,ICCCM/EWMH兼容,RandR(多显示器)支持,并且内置了系统托盘。
https://github.com/ch11ng/exwm || emacs-exwm-gitAUR
  • Herbstluftwm — 这是一个使用Xlib和Glib的手动平铺窗口管理器,适用于X11。其布局是基于将框架分割成子框架,这些子框架可以再次分割或填充窗口(类似于i3/musca)。标签(工作区或虚拟桌面等)可以在运行时添加/删除。每个标签都包含自己的布局。每个显示器只显示一个标签。标签与显示器无关(类似于xmonad)。它通过从herbstclient发出的IPC调用在运行时进行配置。因此,配置文件只是在启动时运行的脚本(类似于wmii/musca)。
https://herbstluftwm.org || herbstluftwm
  • i3 — i3是一个平铺窗口管理器,完全从头开始编写。i3的创建是因为当时开发人员最喜欢的窗口管理器wmii没有提供一些我们想要的功能(例如正确的多监视器支持),存在一些错误,并且在相当长的时间内没有进展,而且不容易进行修改(源码注释/文档完全缺失)。值得注意的区别在于多监视器支持和树形概念。为了速度,i3没有实现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 — Tiling是一种为X窗口系统设计的平铺式窗口管理器,它利用“平铺”和“选项卡”窗口。
    • 平铺:您将屏幕分割成不重叠的“瓷砖”。每个窗口占用一个瓷砖,并最大化到该瓷砖。
    • 标签页:一个瓷砖可以包含多个窗口 - 它们将被“标签页化”。
    • 静态模式:大多数平铺窗口管理器都是“动态”的,这意味着它们在窗口出现和消失时自动调整大小和移动瓷砖。而Notion则不会自动更改平铺方式,它采用静态方式进行。
Notion是Ion3的一个分支。
https://notionwm.net/ || notion
  • Ratpoison — Ratpoison是一个简单的窗口管理器,没有庞大的库依赖,没有花哨的图形界面,没有窗口装饰,也不依赖鼠标。它在很大程度上模仿了在虚拟终端市场上表现出色的GNU Screen。Ratpoison通过一个简单的文本文件进行配置。Ratpoison的信息栏有点不同,它只在需要时显示。它既可以作为应用程序启动器,也可以作为一个通知栏。Ratpoison不包括系统托盘。
https://www.nongnu.org/ratpoison/ || ratpoison
  • Stumpwm — Stumpwm是一个完全使用Common Lisp编写的平铺式、键盘驱动的X11窗口管理器。Stumpwm试图在可自定义的同时保持视觉上的最简化。它提供了多种钩子来添加个性化定制,并且可以在运行时重新配置和重新加载。它没有窗口装饰、图标、按钮和系统托盘。它的信息栏可以设置为始终显示或只在需要时显示。
https://stumpwm.github.io/ || stumpwm

动态窗口管理器[编辑 | 编辑源代码]

  • awesome — Awesome是一个高度可配置的、面向下一代的X框架窗口管理器。它非常快速、可扩展,并且在GNU GPLv2许可下发布。使用Lua进行配置,它内置了系统托盘、信息栏和启动器。还可以使用Lua编写扩展。与Xlib相比,Awesome使用XCB,可能会提高速度。Awesome还具有其他功能,例如用于通知-daemon的早期替代品、类似*box窗口管理器的右键菜单等。
https://awesomewm.org/ || awesome
  • dwm — X的动态窗口管理器。它以平铺、单占据和浮动布局管理窗口。所有布局都可以动态应用,优化正在使用的应用程序和执行的任务的环境。它不包括系统托盘或自动启动器,尽管dmenu与其集成得很好,因为它们来自同一作者。它没有文本配置文件。配置必须通过修改C源代码完成,每次更改都必须重新编译和重新启动。
https://dwm.suckless.org/ || dwmAUR
  • echinus — echinus是一个简单且轻量级的X11平铺和浮动窗口管理器。它最初是从dwm分支出来的,但配置更加简单。随着发展,echinus成为了一个功能齐全的重新父窗口管理器,并支持EWMH协议。它还配备了一个兼容EWMH的面板/任务栏,称为 ouricoAUR
http://plhk.ru || echinusAUR
  • FrankenWM — 基本上是Monsterwm的浮动布局改进版。在基本的窗口管理器上添加了以下功能:更多的布局选项(斐波那契布局、等分布局、双栈布局),可以动态调整间隔(以及边框),最小化/最大化单个窗口,隐藏/显示所有窗口,可单独调整主窗口和副窗口的大小,反转堆叠次序。
https://github.com/sulami/FrankenWM || frankenwmAUR
  • spectrwm — 这是一个基于X11的小型动态平铺窗口管理器,主要受到xmonad和dwm的启发。它试图保持低调,以便宝贵的屏幕空间可以用于更重要的事情。它具有合理的默认设置,并通过文本文件进行配置。它是由黑客编写给黑客的,努力保持小巧、紧凑和快速。它还具有内置状态栏,通过用户定义的脚本进行数据传递。
https://github.com/conformal/spectrwm/ || spectrwm
  • Qtile — Qtile是一个功能齐全且可定制的平铺窗口管理器,用Python编写。Qtile简单、轻巧且可扩展。你可以轻松编写自己的布局、小部件和内置命令。它完全使用Python编写和配置,这意味着你可以利用语言的全部能力和灵活性,使其适应你的需求。
https://github.com/qtile/qtile || qtile
  • Wingo — Wingo是一个功能齐全的混合窗口管理器,完全支持多显示器工作区,并且既不是浮动模式也不是平铺模式的思考后想法。这使得你可以在一个工作区使用平铺模式,而在另一个工作区使用浮动模式。Wingo可以使用自己的命令语言进行脚本编写,具有完全可定制的主题,并支持用户定义的钩子。Wingo是用Go语言编写的,没有运行时依赖。它提供了高度的灵活性和可扩展性,使得用户能够根据自己的需求来定制和扩展窗口管理器的功能。
https://github.com/BurntSushi/wingo || wingo-gitAUR
  • xmonad — XMonad是一个动态平铺的X11窗口管理器,它使用 Haskell 编写和配置。在普通的窗口管理器中,你要花费大部分时间来调整和搜索窗口的位置。XMonad通过自动化这些过程来简化工作。XMonad的配置是使用Haskell语言完成的。对于所有的配置更改,必须重新编译xmonad,因此需要安装Haskell编译器(超过100MB)。一个名为 xmonad-contrib 的大型库提供许多额外的功能和扩展。
https://xmonad.org/ || xmonad

参见[编辑 | 编辑源代码]