窗口管理器

出自 Arch Linux 中文维基

窗口管理器(WM)是一種系統軟件,在圖形用戶界面(GUI)中的窗口系統中控制窗口的位置和外觀。它可以是桌面環境(DE)的一部分,也可以獨立使用。

注意: 窗口管理器是 Xorg 獨有的。Wayland 上窗口管理器的等價物稱為混成器,因為它們也充當混成窗口管理器

概述[編輯 | 編輯原始碼]

窗口管理器是控制繪製各種圖形應用程式的框架(「窗口」)的外觀和行為的 X 客戶端。它們決定窗口的邊框、標題欄、大小和調整大小的能力,並經常提供其他功能,如為粘附像 Window Maker 這樣的 dockapps 保留區域,或像 Fluxbox 那樣為窗口做標籤。一些窗口管理器甚至包含了一些簡單的工具,如啟動程序的菜單或配置窗口管理器本身的工具。

Extended Window Manager Hints 規範用於允許窗口管理器以標準方式與伺服器和其他客戶端進行交互。

一些窗口管理器是作為更全面的桌面環境的一部分而開發的,通常允許提供的其他應用程式更好地相互交互,從而給用戶帶來更一致的體驗,通過桌面圖標、字體、工具欄、牆紙或桌面小部件等功能完善用戶體驗。

其他窗口管理器則被設計成獨立使用,讓用戶完全自由地選擇要使用的其他應用程式。這使得用戶可以根據自己的具體需求,創建一個更加輕量級和個性化的環境。如果需要的話,像桌面圖標、工具欄、牆紙或桌面小部件等「額外的東西」,將需要依賴於額外的專用應用程式。

一些獨立的窗口管理器也可以用來替換桌面環境的默認窗口管理器,就像一些面向桌面環境的窗口管理器也可以獨立使用一樣。

安裝窗口管理器需要能夠正常運行的 X 伺服器。詳細信息請參閱 Xorg

類型[編輯 | 編輯原始碼]

  • 堆疊(又名懸浮) 窗口管理器提供在 Windows 和 OS X 等商業作業系統中使用的傳統桌面隱喻。不同窗口就像桌子上的白紙一樣,且可以相互重疊。有關可用的 Arch Wiki 頁面,請參見 分類:堆疊式窗口管理器
  • 平鋪窗口管理器「平鋪」窗口,以便沒有重疊。他們通常非常廣泛地使用鍵綁定,並且對鼠標的依賴較少(或不依賴)。平鋪窗口管理器可以是手動的,也可以提供預定義的佈局,甚至兩者兼而有之。有關可用的 Arch Wiki 頁面請參見 分類:平鋪式窗口管理器
  • 動態窗口管理器可以在平鋪或堆疊窗口佈局之間動態切換。有關可用的 Arch Wiki 頁面請參見 分類:動態窗口管理器

有關窗口管理器的比較,請參見平鋪窗口管理器對比Wikipedia:窗口管理器對比

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

這篇文章或章節的翻譯不反映原文。

原因:翻譯不流暢、不嚴謹、不易懂(在 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 窗口系統的窗口管理器。最初基於 NeXTStep 界面的外觀和感覺,它為終端用戶提供了一致、清潔和優雅的桌面環境。AfterStep 的目標是提供靈活的桌面配置、改善美觀度和高效地利用系統資源。
http://www.afterstep.org/ || afterstep-gitAUR
  • berry — Berry 是適用於 Unix 系統的健康、緊湊的窗口管理器,用 C 語言編寫。它通過命令行客戶端進行控制,允許用戶通過熱鍵守護進程,例如 sxhkd 來控制窗口,或通過 Shell 腳本拓展功能。它提供了可擴展的主題選項,包括雙邊框、標題欄和窗口文本。Berry 會直觀地將新窗口放置在空閒空間中,並支持虛擬桌面。
https://berrywm.org/ || berry-gitAUR
  • Blackbox — Blackbox 是 X 窗口系統的快速、輕量級的窗口管理器,沒有煩人的庫依賴。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 窗口系統的極簡主義窗口管理器。這裏的"極簡主義"並不意味着它過於簡陋無法使用,而是指它省略了許多使其他窗口管理器難以使用的功能。
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 窗口系統。開發活躍,支持也非常出色。
https://www.fvwm.org/ || fvwmAUR
  • Gala — 來自 elementaryos 的漂亮窗口管理器,是 Pantheon 的一部分。也是個基於libmutter的混成管理器。
https://launchpad.net/gala || gala
  • Goomwwm — X11 窗口管理器是用 C 語言實現的,是一個淨室軟件項目。它以最小的浮動佈局管理窗口,同時為窗口的切換、調整大小、移動、標記和平鋪提供了靈活的鍵盤驅動控制。它還具有快速、輕量級、無模式、Xinerama 感知和儘可能兼容 EWMH 的特點。
https://github.com/seanpringle/goomwwm || goomwwmAUR
  • IceWM — Xorg 窗口管理器。 IceWM 的目標是速度、簡單性,並且不會妨礙用戶
https://ice-wm.org/ || icewm
  • jbwm — 基於 evilwm,最小配置大小約為 16kb,專注於小二進制大小和可用性,結合可選的標題欄和 XFT 標題欄字體渲染作為編譯時選項,jbwm 還具有比 evilwm 更易於使用鍵綁定的特徵。
https://github.com/jefbed/jbwm || jbwmAUR
  • JWM — X11 窗口系統的窗口管理器。JWM 由 C 語言編寫,只使用 Xlib。
https://joewing.net/projects/jwm/ || jwm
  • Karmen — X 的窗口管理器,由 Johan Veenhuizen 編寫。它的設計宗旨是 "只需工作"。它沒有配置文件,也不依賴除了 Xlib 之外的其他庫。輸入焦點模型是點擊到焦點。Karmen 的目標是符合 ICCCM 和 EWMH 標準。
http://karmen.sourceforge.net/ || karmenAUR
  • KWin — 自 KDE 4.0 以來的標準 KDE 窗口管理器,它也是一個合成管理器。這使得 KWin 能夠提供類似於 Compiz 的高級圖形效果,同時還提供以前 KDE 版本的所有功能(例如與 KDE 其餘部分的非常好的集成、高級可配置性、防止焦點竊取、經過充分測試的窗口管理器、對行為異常的應用程式/工具包的穩健處理等)。還用作 Wayland的合成器。
https://techbase.kde.org/Projects/KWin || kwin
  • lwm — Xorg的窗口管理器,它試圖避開你的臉。沒有圖標,沒有按鈕欄,沒有圖標停靠,沒有根菜單,什麼都沒有:如果你想要這一切,那麼其他程序可以提供它。也沒有可配置性:如果你想要,你需要一個不同的窗口管理器;它以磁盤空間的邪惡佔用和物理內存吞併的方式幫助你作業系統。
http://www.jfc.org.uk/software/lwm.html || lwm
  • Marco — TMATE 窗口管理器,Metacity 的分支。
https://github.com/mate-desktop/marco || marco
  • Metacity — 這個窗口管理器力求安靜、小巧、穩定、繼續工作,並遠離您的注意。它被傳統的 GNOME 2 和 GNOME 閃回會話使用,並被 Mutter 取代。
https://blogs.gnome.org/metacity/ || metacity
  • MLVWM — 類似 Macintosh 的虛擬窗口管理器,FVWM 的後代,它嘗試在其佈局和窗口設計中模擬 Mac OS X 之前的 Macintosh 外觀。
http://www2u.biglobe.ne.jp/~y-miyata/mlvwm.html || mlvwmAUR
  • Muffin — Cinnamon 的窗口管理器和合成器。基於Clutter,使用OpenGL,是Mutter分支。它不能在 Cinnamon 之外使用。
https://github.com/linuxmint/muffin/ || muffin
  • Mutter — 基於Clutter的 GNOME窗口和合成管理器,使用 OpenGL。還提供 Wayland 合成器。
https://gitlab.gnome.org/GNOME/mutter/ || mutter
  • MWM — Motif 窗口管理器 (MWM) 是基於 Motif 工具包的 X 窗口管理器。
https://sourceforge.net/projects/motif/ || openmotif
  • Openbox — 高度可配置的窗口管理器,具有廣泛的標準支持。*box 視覺樣式以其簡約的外觀而聞名。Openbox 使用 *box 視覺樣式,相比比舊版實現,它為主題開發者提供了更多的選項。自 2010 年以來一直是「功能完整」,但繼續維護。.
http://openbox.org/ || openbox
  • pawm — X Window 系統的窗口管理器。因此,它不是「桌面」,也不會為您提供大量無用的選項,只是運行 X 應用程式所需的功能,同時具有友好且易於使用的界面。
https://www.pleyades.net/david/projects/pawm || pawmAUR
  • PekWM — 曾經基於aewm++,現已不再類似於aewm++的窗口管理器。它具有大大擴展的功能集,包括窗口分組(類似於 Ion、PWM 或 Fluxbox)、自動屬性、Xinerama、keygrabber that supports keychains,等等。
https://www.pekwm.org/ || pekwm
  • Sawfish — 可擴展的窗口管理器,使用基於 Lisp 的腳本語言。與大多數窗口管理器相比,它的策略非常簡單。它的目標只是以最靈活、最有吸引力的方式管理窗口。所有高級窗口管理器功能都是用 Lisp 實現的,以便將來進行擴展或重新定義。
https://sawfish.wikia.com/wiki/Main_Page || sawfishAUR
  • sowm — 自用的簡單窗口管理器,提供全屏切換、窗口居中和混合工作流程(即鼠標和鍵盤)。
https://github.com/dylanaraps/sowm || sowmAUR
  • TinyWM — 作為極簡主義的練習而創建的 Tiny Window Manager。它可能有助於學習創建窗口管理器的一些非常基本的知識。它由大約 50 行 C 組成。還有一個使用 python-xlib 的 Python 版本。
http://incise.org/tinywm.html || tinywmAUR
  • twm — X 的簡單窗口管理器,Xorg 自 1989 年以來一直使用的默認/回退。它提供標題欄、形狀窗口、多種形式的圖標管理、用戶定義的宏函數、單擊鍵入和指針驅動的鍵盤焦點以及用戶指定的鍵和指針按鈕綁定。
https://gitlab.freedesktop.org/xorg/app/twm/ || xorg-twm
  • ukwm — 輕量級 GTK+ 窗口管理器,UKUI 桌面環境的默認窗口管理器
https://github.com/ukui/ukwm/ || ukwm
  • UWM — TUDE 的終極窗口管理器。
http://udeproject.sourceforge.net/ || udeAUR
  • Wind — 小型浮動窗口管理器。嘗試遵守 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

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