窗口管理器

来自 Arch Linux 中文维基

窗口管理器(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

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

Tango-preferences-desktop-locale.png本文或本节需要翻译。要贡献翻译,请访问简体中文翻译团队Tango-preferences-desktop-locale.png

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

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

  • 2bwm — Fast floating window manager, with the particularity of having 2 borders, written over the XCB library and derived from mcwm written by Michael Cardell. In 2bwm everything is accessible from the keyboard but a pointing device can be used for move, resize and raise/lower. The name has recently changed from mcwm-beast to 2bwm.
https://github.com/venam/2bwm || 2bwmAUR
  • 9wm — X11 Window Manager inspired by Plan 9's rio.
https://github.com/9wm/9wm || 9wmAUR
  • AfterStep — Window manager for the Unix X Window System. Originally based on the look and feel of the NeXTStep interface, it provides end users with a consistent, clean, and elegant desktop. The goal of AfterStep development is to provide for flexibility of desktop configuration, improving aesthetics, and efficient use of system resources.
http://www.afterstep.org/ || afterstep-gitAUR
  • berry — Healthy, bite-sized window manager written in C for Unix systems. It is controlled via a command-line client, allowing users to control windows via a hotkey daemon such as sxhkd or expand functionality via shell scripts. It provides extensible themeing options with double borders, title bars, and window text. Berry intuitively place new windows in unoccupied spaces and supports virtual desktops.
https://berrywm.org/ || berry-gitAUR
  • Blackbox — Fast, lightweight window manager for the X Window System, without all those annoying library dependencies. Blackbox is built with C++ and contains completely original code (even though the graphics implementation is similar to that of WindowMaker).
http://blackboxwm.sourceforge.net/ || blackbox
  • Compiz — OpenGL compositing manager that uses GLX_EXT_texture_from_pixmap for binding redirected top-level windows to texture objects. It has a flexible plug-in system and it is designed to run well on most graphics hardware.
https://launchpad.net/compiz || compizAUR, compiz-coreAUR
  • cwm — Originally deriving from evilwm, but later re-written from scratch. cwm aims to be simple, and offers helpful features such as searching for windows.
https://github.com/chneukirchen/cwm || cwmAUR
  • eggwm — A lightweight QT4/QT5 window manager
eggwm-qt5AUR || eggwmAUR
  • Enlightenment — Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager.
https://www.enlightenment.org/ || enlightenment
  • evilwm — Minimalist window manager for the X Window System. 'Minimalist' here does not mean it is too bare to be usable - it just means it omits a lot of the stuff that make other window managers unusable.
https://www.6809.org.uk/evilwm/ || evilwmAUR
  • Fluxbox — Window manager for X that was based on the Blackbox 0.61.1 code. It is very light on resources and easy to handle but yet full of features to make an easy and extremely fast desktop experience. It is built using C++ and licensed under the MIT License.
https://github.com/fluxbox/fluxbox || fluxbox
  • Flwm — Attempt to combine the best ideas from several window managers. The primary influence and code base is from wm2 by Chris Cannam.
http://flwm.sourceforge.net/ || flwmAUR
  • FVWM — Extremely powerful ICCCM-compliant multiple virtual desktop window manager for the X Window system. Development is active, and support is excellent.
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
  • 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 — Small and simple window manager of novel design. It has a click-to-focus but not raise-on-focus policy, a window resizing mechanism that allows one or many edges of a window to be changed in one action, and an innovative menubar that shares the same part of the screen as the taskbar. Window titlebars are prevented from going off the edge of the screen by constraining the mouse pointer, and when appropriate the pointer is also constrained to the taskbar/menubar in order to make target menu items easier to hit.
https://github.com/nickgravgaard/windowlab || windowlabAUR
  • Window Maker — X11 window manager originally designed to provide integration support for the GNUstep Desktop Environment. In every way possible, it reproduces the elegant look and feel of the NEXTSTEP user interface. It is fast, feature rich, easy to configure, and easy to use. It is also free software, with contributions being made by programmers from around the world.
https://windowmaker.org/ || windowmakerAUR
  • WM2 — Window manager for X. It provides an unusual style of window decoration and as little functionality as its author feels comfortable with in a window manager. wm2 is not configurable, except by editing the source and recompiling the code, and is really intended for people who do not particularly want their window manager to be too friendly.
https://www.all-day-breakfast.com/wm2/ || wm2AUR
  • worm — Worm is a is a dynamic, tag-based window manager for X11. It supports both a floating layout and a master-stack tiling layout and is developed openly. It is also written in the Nim programming language.
https://github.com/codic12/worm || worm-gitAUR
  • Xfwm — The Xfce window manager manages the placement of application windows on the screen, provides beautiful window decorations, manages workspaces or virtual desktops and natively supports multiscreen mode. It provides its own compositing manager (from the X.Org Composite extension) for true transparency and shadows. The Xfce window manager also includes a keyboard shortcuts editor for user specific commands and basic windows manipulations and provides a preferences dialog for advanced tweaks.
https://docs.xfce.org/xfce/xfwm4/start || xfwm4

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

  • Bspwm — bspwm is a tiling window manager that represents windows as the leaves of a full binary tree. It has support for EWMH and multiple monitors, and is configured and controlled through messages.
https://github.com/baskerville/bspwm || bspwm
  • EXWM — EXWM (Emacs X Window Manager) is a full-featured tiling X window manager for Emacs built on top of XELB. It features fully keyboard-driven operations, hybrid layout modes (tiling & stacking), dynamic workspace support, ICCCM/EWMH compliance, RandR (multi-monitor) support, and a built-in system tray.
https://github.com/ch11ng/exwm || emacs-exwm-gitAUR
  • Herbstluftwm — Manual tiling window manager for X11 using Xlib and Glib. The layout is based on splitting frames into subframes which can be split again or can be filled with windows (similar to i3/ musca). Tags (or workspaces or virtual desktops or …) can be added/removed at runtime. Each tag contains its own layout. Exactly one tag is viewed on each monitor. The tags are monitor independent (similar to xmonad). It is configured at runtime via ipc calls from herbstclient. So the configuration file is just a script which is run on startup. (similar to wmii/musca).
https://herbstluftwm.org || herbstluftwm
  • i3 — Tiling window manager, completely written from scratch. i3 was created because wmii, the developers' favorite window manager at the time, did not provide some features we wanted (multi-monitor done right, for example), had some bugs, did not progress for quite some time, and was not easy to hack at all (source code comments/documentation completely lacking). Notable differences are in the areas of multi-monitor support and the tree metaphor. For speed the Plan 9 interface of wmii is not implemented.
https://i3wm.org/ || i3-wm
  • Larswm — A tiling window manager based on 9wm.
http://porneia.free.fr/larswm/larswm.html || larswmAUR
  • LeftWM — A tiling window manager written in Rust.
https://leftwm.org || leftwmAUR
  • Notion — Tiling, tabbed window manager for the X window system that utilizes 'tiles' and 'tabbed' windows.
    • Tiling: you divide the screen into non-overlapping 'tiles'. Every window occupies one tile, and is maximized to it
    • Tabbing: a tile may contain multiple windows - they will be 'tabbed'.
    • Static: most tiled window managers are 'dynamic', meaning they automatically resize and move around tiles as windows appear and disappear. Notion, by contrast, does not automatically change the tiling.
Notion is a fork of Ion3.
https://notionwm.net/ || notion
  • Ratpoison — Simple Window Manager with no fat library dependencies, no fancy graphics, no window decorations, and no rodent dependence. It is largely modeled after GNU Screen which has done wonders in the virtual terminal market. Ratpoison is configured with a simple text file. The information bar in Ratpoison is somewhat different, as it shows only when needed. It serves as both an application launcher as well as a notification bar. Ratpoison does not include a system tray.
https://www.nongnu.org/ratpoison/ || ratpoison
  • Stumpwm — Tiling, keyboard driven X11 Window Manager written entirely in Common Lisp. Stumpwm attempts to be customizable yet visually minimal. It does have various hooks to attach your personal customizations, and variables to tweak, and can be reconfigured and reloaded while running. There are no window decorations, no icons, no buttons, and no system tray. Its information bar can be set to show constantly or only when needed.
https://stumpwm.github.io/ || stumpwm

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

  • awesome — Highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license. Configured in Lua, it has a system tray, information bar, and launcher built in. There are extensions available to it written in Lua. Awesome uses XCB as opposed to Xlib, which may result in a speed increase. Awesome has other features as well, such as an early replacement for notification-daemon, a right-click menu similar to that of the *box window managers, and many other things.
https://awesomewm.org/ || awesome
  • dwm — Dynamic window manager for X. It manages windows in tiled, monocle and floating layouts. All of the layouts can be applied dynamically, optimising the environment for the application in use and the task performed. does not include a system tray or automatic launcher, although dmenu integrates well with it, as they are from the same author. It has no text configuration file. Configuration is done entirely by modifying the C source code, and it must be recompiled and restarted each time it is changed.
https://dwm.suckless.org/ || dwmAUR
  • echinus — Simple and lightweight tiling and floating window manager for X11. Started as a dwm fork with easier configuration, echinus became full-featured re-parenting window manager with EWMH support. It has an EWMH-compatible panel/taskbar, called ouricoAUR.
http://plhk.ru || echinusAUR
  • FrankenWM — Basically monsterwm with floating done right. Features that are added on top of basic mwm include: more layouts (fibonacci, equal stack, dual stack), gaps (and borders) are adjustable on the fly, minimize/maximize single windows, hide/show all windows, resizing master and stack individually, invert stack.
https://github.com/sulami/FrankenWM || frankenwmAUR
  • spectrwm — Small dynamic tiling window manager for X11, largely inspired by xmonad and dwm. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and is configured with a text file. It was written by hackers for hackers and it strives to be small, compact and fast. It has a built-in status bar fed from a user-defined script.
https://github.com/conformal/spectrwm/ || spectrwm
  • Qtile — Full-featured, hackable tiling window manager written in Python. Qtile is simple, small, and extensible. It is easy to write your own layouts, widgets, and built-in commands.It is written and configured entirely in Python, which means you can leverage the full power and flexibility of the language to make it fit your needs.
https://github.com/qtile/qtile || qtile
  • xmonad — Dynamically tiling X11 window manager that is written and configured in Haskell. In a normal WM, you spend half your time aligning and searching for windows. Xmonad makes work easier, by automating this. XMonad is configured in Haskell. For all configuration changes, xmonad must be recompiled, so the Haskell compiler (over 100MB) must be installed. A large library called xmonad-contrib provides many additional features
https://xmonad.org/ || xmonad

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