Wayland
General
- Wayland is intended as a simpler replacement for X, easier to develop and maintain. GNOME and KDE are expected to be ported to it. Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol. The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, an X application, or a wayland client itself. The clients can be traditional applications, X servers (rootless or fullscreen) or other display servers.
Part of the Wayland project is also the Weston reference implementation of a Wayland compositor. Weston can run as an X client or under Linux KMS and ships with a few demo clients. The Weston compositor is a minimal and fast compositor and is suitable for many embedded and mobile use cases.
- https://en.wikipedia.org/wiki/Wayland_(display_server_protocol) - a computer protocol that specifies the communication between a display server and its clients, as well as a reference implementation of the protocol in the C programming language. A display server using the Wayland protocol is called a Wayland compositor.Wayland is developed by a group of volunteers initially led by Kristian Høgsberg as a free and open community-driven project with the aim of replacing the X Window System with a modern, simpler windowing system in Linux and other Unix-like operating systems. The project's source code is published under the terms of the MIT License, a permissive free software licence
- Introduction - The Wayland Protocol - Wayland is the next-generation display server for Unix-like systems, designed and built by the alumni of the venerable Xorg server, and is the best way to get your application windows onto your user's screens. Readers who have worked with X11 in the past will be pleasantly surprised by Wayland's improvements, and those who are new to graphics on Unix will find it a flexible and powerful system for building graphical applications and desktops. This book will help you establish a firm understanding of the concepts, design, and implementation of Wayland, and equip you with the tools to build your own Wayland client and server applications. Over the course of your reading, we'll build a mental model of Wayland and establish the rationale that went into its design. Within these pages you should find many "aha!" moments as the intuitive design choices of Wayland become clear, which should help to keep the pages turning. Welcome to the future of open source graphics!
- Drew DeVault’s Blog: The future of Wayland, and sway’s role in it
- https://github.com/MirServer/wlcs - Wayland Conformance Test Suite
- https://github.com/emersion/hello-wayland - A hello world Wayland client, 2018 edition
Libraries
wlroots
- https://github.com/swaywm/wlroots - A modular Wayland compositor library
smithay
- https://github.com/Smithay/smithay - aims to provide building blocks to create wayland compositors in Rust. While not being a full-blown compositor, it'll provide objects and interfaces implementing common functionnalities that pretty much any compositor will need, in a generic fashion.
Compositors
Weston
- https://gitlab.freedesktop.org/wayland/weston - A lightweight and functional Wayland compositor
sway
- Sway - tiling Wayland compositor and a drop-in replacement for the i3 window manager for X11. It works with your existing i3 configuration and supports most of i3's features, plus a few extras.
- https://github.com/greole/sway-alternating-layout - Scripts to open new windows in sway using alternating layouts (splith/splitv) for each new window
- https://github.com/ErikReider/SwayAudioIdleInhibit - Prevents swayidle from sleeping while any application is outputting or receiving audio. Should work with all Wayland desktops that support the zwp_idle_inhibit_manager_v1 protocol but only tested in Sway
- https://github.com/WillPower3309/swayfx - Sway fork that ditches the simple wlr_renderer, and replaces it with our fx_renderer, capable of rendering with fancy GLES2 effects. This, along with a couple of minor changes, expands sway's featureset to include the following:
Way Cooler
2016
Based on Awesome, Lua
Tiny Wayland
2018
adwc
- https://github.com/detomastah/adwc - adwm clone, dead
dwl
- https://github.com/djpohly/dwl - a compact, hackable compositor for Wayland based on wlroots. It is intended to fill the same space in the Wayland world that dwm does in X11, primarily in terms of philosophy, and secondarily in terms of functionality
Waybox
- https://github.com/wizbright/waybox - An openbox clone on Wayland (WIP)
labwc
- https://github.com/johanmalm/labwc - Openbox alternative for Wayland
wayfire
taiwins
- https://github.com/taiwins/taiwins - a wayland window manager, supports both tiling and floating layout. It is designed to be mordern and modular. It is extensible through lua script and it has built-in shell and widgets implementation through nuklear GUI. It also supports popular tiling window manager features like gapping.
river
- https://github.com/ifreund/river - a dynamic tiling wayland compositor that takes inspiration from dwm and bspwm. Zig.
Mahogany
- https://github.com/stumpwm/mahogany - a tiling window manager for Wayland modeled after StumpWM. While it is not a drop-in replacement for stumpwm, stumpwm users should be very comfortable with Mahogany
Orbment
- https://github.com/Cloudef/orbment - modular compositor for Wayland with flexible plugin architecture where plugins may co-operate with each other. The core consist of small code base which provide plugin management, and hooks api for plugins. Core plugins are used to provide functionality you would expect from bare bones tiling window manager.
kiwmi
- https://github.com/buffet/kiwmi - a work-in-progress extensive user-configurable Wayland Compositor. kiwmi specifically does not enforce any logic, allowing for the creation of Lua-scripted behaviors, making arduous tasks such as modal window management become a breeze. New users should be aware of the steep learning curve present, however this will be reduced as the project matures.
xuake
- https://github.com/Sasquatch-Labs/xuake - WYGIWYG Wayland Compositor
Grefsen
- https://github.com/ec1oud/grefsen - a Qt/Wayland compositor providing a minimal desktop environment.
Cage
- Cage - a kiosk compositor for Wayland. A kiosk is a window manager (in the X11 world) or compositor (in the Wayland world) that is designed for a user experience wherein user interaction and activities outside the scope of the running application are prevented. That is, a kiosk compositor displays a single maximized application at a time and prevents the user from interacting with anything but this application.
Wio
Taiwins
- https://github.com/taiwins/taiwins - dynamic wayland window manager, supports both tiling and floating layout. It is designed to be modern and modular. It is extensible through lua script and it has built-in shell and widgets implementation through nuklear GUI. It also supports popular tiling window manager features like gapping.
Greenfield
- https://github.com/udevbe/greenfield - HTML5 Wayland compositor seedling
waymonad
- https://github.com/waymonad/waymonad - We all love tiling window managers and most of all we love xmonad. As you may know, wayland is trying to replace X11. This brings problems for us, since xmonad will not work with the new architecture. This project is intended to provide a wayland based desktop which shares the ideals and experience from xmonad.
hikari
- hikari - a stacking Wayland compositor which is actively developed on FreeBSD but also supports Linux. [5]
Cagebreak
- https://github.com/project-repo/cagebreak -A Wayland Tiling Compositor Inspired by Ratpoison
Cardboard
- https://gitlab.com/cardboardwm/cardboard -a unique, scrollable tiling Wayland compositor designed with laptops in mind. Based on wlroots.
labwc
- https://github.com/labwc/labwc - a wlroots-based stacking compositor aiming to be lightweight and independent, with a focus on simply stacking windows well and rendering some window decorations. It relies on clients for wallpaper, panels, screenshots, and so on to create a full desktop environment.Labwc tries to stay in keeping with wlroots and sway in terms of general approach and coding style.In order to avoid reinventing configuration and theme syntax, the openbox-3.4 specification is used. This does not mean that labwc is an openbox clone but rather that configuration files will look and feel familiar.
Strata
- https://github.com/StrataWM/stratawm - a dynamic and sleek Wayland compositor and window manager for GNU/Linux systems. Its written completely in Rust using the Smithay library. Strata is made to be modular. It is done this way so that you, the user can mix'n'match different components to make Strata work the way you want, inspired by BSPWM. This makes it possible so that you can interchange components, for example, instead of using Kagi, the official Strata hotkey daemon, you can use SWHKD or even make your own. As Strata grows in complexity, this architecture will, hopefully, prove to be useful.
Hyprland
- Hyprland - A wayland compositor that doesn't sacrifice on its looks.
- https://github.com/SolDoesTech/HyprV2 - An improved Hyprland deployment
Veshell
- https://github.com/free-explorers/veshell - a Wayland compositor providing an innovative workflow that utilizes humans natural spatial cognition to enhance navigation and organization in the digital environment.
niri
- https://github.com/YaLTeR/niri - A scrollable-tiling Wayland compositor. Windows are arranged in columns on an infinite strip going to the right. Opening a new window never causes existing windows to resize. Every monitor has its own separate window strip. Windows can never "overflow" onto an adjacent monitor. Workspaces are dynamic and arranged vertically. Every monitor has an independent set of workspaces, and there's always one empty workspace present all the way down. The workspace arrangement is preserved across disconnecting and connecting monitors where it makes sense. When a monitor disconnects, its workspaces will move to another monitor, but upon reconnection they will move back to the original monitor.
Utilities
wlogout
- https://github.com/ArtsyMacaw/wlogout - A wayland based logout menu
wtype
- https://github.com/atx/wtype - xdotool type for wayland
ydotool
- https://github.com/ReimuNotMoe/ydotool - Generic command-line automation tool (no X!)
wdisplays
- https://github.com/cyclopsian/wdisplays - GUI display configurator for wlroots compositors
wayland-debug
- https://github.com/wmww/wayland-debug - A command line tool to help debug Wayland clients and servers
yatbfw
- https://github.com/selairi/yatbfw - Yes another task bar for Wayland
wob
- https://github.com/francma/wob - A lightweight overlay volume/backlight/progress/anything bar for Wayland.
wofi
- https://hg.sr.ht/~scoopta/wofi - a launcher/menu program for wlroots based wayland compositors such as sway
MPVPaper
- https://github.com/GhostNaN/mpvpaper - A video wallpaper program for wlroots based wayland compositors.
SWHKD
- https://git.sr.ht/~shinyzenith/swhkd - Simple Wayland HotKey Daemon. a display protocol-independent hotkey daemon made in Rust. swhkd uses an easy-to-use configuration system inspired by sxhkd, so you can easily add or remove hotkeys. It also attempts to be a drop-in replacement for sxhkd, meaning your sxhkd config file is also compatible with swhkd. Because swhkd can be used anywhere, the same swhkd config can be used across Xorg or Wayland desktops, and you can even use swhkd in a TTY.
hyprpicker
- https://github.com/hyprwm/hyprpicker - A wlroots-compatible Wayland color picker that does not suck.
lxqt-labwc-session
- https://github.com/stefonarch/lxqt-labwc-session - an experimental LXQt wayland session using the labwc compositor. Settings for waybar's wlr/taskbar or yatbfw panel are also provided. Should not interfere with existing LXQt X11 sessions.
kanshi
- https://git.sr.ht/~emersion/kanshi - allows you to define output profiles that are automatically enabled and disabled on hotplug. For instance, this can be used to turn a laptop's internal screen off when docked. This is a Wayland equivalent for tools like autorandr. kanshi can be used on Wayland compositors supporting the wlr-output-management protocol.
Extra
- nwg-shell | Installer, updater & meta-package for the nwg-shell project: a GTK3-based shell for sway Wayland compositoraims to create a consistent, GTK3-based user interface for the sway Wayland Compositor. In order to give the user the greatest possible choice, some interface elements provide several alternative solutions. Just installed shell contains a bunch of presets, which can then be freely modified.
Screenshots
- https://github.com/emersion/grim - Grab images from a Wayland compositor
- https://github.com/emersion/slurp - Select a region in a Wayland compositor and print it to the standard output.