窗口管理器

出自 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

窗口管理器列表[編輯 | 編輯原始碼]

本文或本節需要翻譯。要貢獻翻譯,請訪問簡體中文翻譯團隊

附註: 請完成翻譯。(在 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

參見[編輯 | 編輯原始碼]