This is a list of display servers.
Display server | Software license | Language | Libraries | Operating systems | Type | Remarks | |||
---|---|---|---|---|---|---|---|---|---|
Protocol | Other | Linux | BSDs | Other | |||||
COSMIC Shell | GPLv3 | Rust | Smithay | Iced | Yes | No | No | Modern-style window compositing | Designed for Pop!_OS |
Enlightenment | BSD license | C | libwayland-server (MIT License) |
EFL | Yes | Yes | POSIX | Modern-style window compositing | Default for the Enlightenment desktop environment |
KWin | GPL | C++ | Qt 5 | Yes | Yes | POSIX | Modern-style window compositing | Default for KDE | |
orbment | GPL 3+ | C | wlc, libinput2 | Yes | No | No | (unknown) | No code contribution since 2016 | |
Lipstick[1] | LGPL 2.1 | C++ | Qt 5 | Yes | No | No | Mobile UI manager | Based on QML markup | |
Mazecompositor | MIT License | C++ | Qt 5 | Yes | No | No | 3D compositor | Toy / Demo | |
Mir | GPL | C++ | Qt 5, GTK | Yes | No | No | Mobile app-style | Canonical's own embedded device-targeting compositor | |
Mutter | GPL | C | libinput2 | Yes | Yes | POSIX | Modern-style window compositing / Mobile app-style | Default for GNOME 4 | |
Weston | MIT License | C | libinput | Yes | Yes | POSIX | Modern-style window compositing | Reference Implementation | |
Hyprland | BSD license[2] | C++ | aquamarine,[3] libinput2 | Yes | Yes | POSIX | Tiling / dynamic | Offers smooth animations, rounded corners and blur | |
Sway | MIT License[4] | C | wlroots,[5] libinput2 | Yes | Yes | POSIX | Tiling / dynamic | i3 replication | |
Way Cooler | MIT License [6] | Rust | wlc, libinput2 | Yes | Yes | POSIX | Tiling / dynamic | Designed to replace AwesomeWM, unmaintained since late 2019 | |
Wayfire | MIT License [7] | C++ | wlroots,[8] libinput2 | Yes | Yes | POSIX | 3D compositor | Compiz-inspired | |
Hikari | MIT License[9] | C | wlroots,[10] libinput2 | Yes | Yes | POSIX | Stacking | Targets primarily FreeBSD, Inspired by Calm window manager | |
River | GPLv3 [11] | Zig | wlroots,[12] libinput2 | Yes | Yes | POSIX | Tiling / dynamic | ||
labwc | GPLv2 [13] | C | wlroots, libinput2 | Yes | Yes[14] | ? | Stacking | Inspired by Openbox |
1 A pivotal difference between Android and the other Linux kernel-based operating systems is the C standard library: Android's libbionic is different in that it does not aim to support POSIX to the same extent as the other libraries. With the help of libhybris it is possible to run Android-only software on other Linux kernel based operating systems, as long as this software does not depend on subsystems found only in the Android-forked Linux kernel, such as binder, pmem, ashmem, etc. Whether software programmed for Linux can run on Android, depends entirely on the extent to which libbionic matches the API of the glibc.
2 libinput[15] provides device detection via udev, device handling, input device event processing and abstraction.[16] libinput also provides a generic X.Org input driver.[17] libinput support was first merged in Weston 1.5. and is also used by Mutter.