Skip to content

rcalixte/awesome-wayland

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Awesome Wayland

Link Check

A curated list of Wayland resources. Please investigate these projects on your own before fully committing to them!

This repository is a hard fork of natpen/awesome-wayland since it was archived on Oct. 17, 2023.

There are no current plans to apply to the Awesome project for inclusion.

Note

If you want to contribute, please read this.

SCOPE

Important

The scope of this repository aims to capture applications, libraries, etc. that are designed to support the Wayland ecosystem. This does not include existing applications that have implemented support for Wayland. That list is being maintained at mpsq/arewewaylandyet which is the repository for arewewaylandyet.com.

TABLE OF CONTENTS

BINDINGS

These are language-specific bindings for use with Wayland development.

  • Python pywayland - A wrapper to the libwayland library

BREAK NOTIFIERS

  • Rust Ianny - Periodically informs user to take breaks by keeping track of usage patterns

BRIGHTNESS CONTROL

No Wayland-specific requirements, so you can use your Xorg solution of choice to control screen brightness, like brightnessctl, brillo, or just directly manipulate /sys/class/backlight.

  • C Clight - Day/night gamma adjustments for Wayland compositors supporting wlr-gamma-control-unstable-v1; automatic screen backlight calibration to match ambient brightness using either webcam or ambient light sensor devices; screen dimming
  • C Gammastep - A day/night gamma modifier that adjusts the color temperature of the screen
  • C Luminance - A simple GTK application to control brightness of displays including external displays supporting DDC/CI
  • C wl-gammactl - A GTK application to set contrast, brightness, and gamma using the wlr-gamma-control protocol
  • C wlsunset - A day/night gamma adjustments for Wayland compositors supporting wlr-gamma-control-unstable-v1 and xdg-output-unstable-v1 protocols
  • Rust wluma - A tool for wlroots-based compositors that automatically adjust screen brightness based on screen contents and ambient light

CLIPBOARD MANAGERS

  • Rust clapboard - A clipboard manager with support for images and saved entries
  • Go cliphist - A clipboard history manager for Wayland
  • Go clipman - A simple clipboard manager implementing the wlr-data-control-unstable-v1 protocol
  • Rust gemclip - A simple clipboard utility for Wayland implementing the wlr-data-control-unstable-v1 protocol
  • C wayclip - A Wayland clipboard utility implementing the wlr-data-control-unstable-v1 protocol
  • C wl-clipboard - Command-line copy/paste utilities for Wayland
  • C wlsnarf - A highly scriptable clipboard tool for wlroots-based compositors implementing the wlr-data-control-unstable-v1 protocol; includes a filesystem-based clipboard manager daemon with persistence

COMPOSITORS

  • C Cagebreak - A Wayland tiling compositor inspired by Ratpoison
  • C croissant - A wlroots-based stacking Wayland compositor
  • C dwl - A wlroots-based rewrite of DWM for Wayland
  • Zig foxwhale - A tiling Wayland compositor based on wlroots
  • C++ gamescope - A wlroots-based Wayland compositor designed for SteamOS
  • JavaScript Greenfield - An HTML5 Wayland compositor that runs directly in the browser
  • C hikari - A hybrid stacking/tiling Wayland compositor based on wlroots
  • C Hopalong - A simple Wayland compositor with a feature set comparable to XFWM
  • C++ Hyprland - A dynamic tiling Wayland compositor that doesn't sacrifice on its looks
  • C japokwm - A wlroots-based dynamic tiling Wayland compositor based around creating layouts
  • Rust Jay - A tiling Wayland compositor inspired by i3wm
  • C kiwmi - A fully programmable Wayland compositor
  • C labwc - A wlroots-based stacking compositor for Wayland, inspired by openbox
  • C++ LaikaWM - A lightweight compositor for Wayland inspired by IceWM and Fluxbox
  • C++ Liri Shell - A convergent shell for desktops, phones, and tablets
  • C++ Magpie v1 - A wlroots-based Wayland compositor designed for the Budgie desktop environment
  • C Lisp mahogany - A StumpWM-like Wayland compositor
  • C++ Miriway - A Mir-based Wayland compositor
  • Python newm-atha - A Wayland compositor written with laptops and touchpads in mind
  • Rust niri - A scrollable tiling Wayland compositor
  • C phoc - A wlroots-based Wayland compositor mostly used on mobile phones
  • Zig river - A dynamic tiling Wayland compositor
  • C stagen - An experimental wlroots-based Wayland compositor
  • C SwayFX - Sway, but with eye candy
  • C sway - An i3-compatible Wayland compositor
  • C tinybox - A window manager based on tinywl inspired by Blackbox, Fluxbox, and Openbox
  • C tinywl+ - A stacking Wayland compositor based on tinywl and a great starting place for compositor development
  • C velox - A simple window manager based on swc, inspired by dwm and xmonad
  • C Vivarium - A dynamic tiling Wayland compositor using wlroots, with desktop semantics inspired by xmonad
  • C volare - A tiling, tabbed Wayland compositor
  • C Waybox - An openbox clone on Wayland
  • C++ Wayfire - A 3D wlroots-based Wayland compositor inspired by Compiz
  • C Weston - A Wayland compositor designed for correctness, reliability, predictability, and performance
  • C wlmaker - A Wayland compositor inspired by Window Maker
  • C Woodland - A minimal and lightweight wlroots-based stacking compositor, inspired by Wayfire and TinyWL

DISPLAY CONFIGURATION

  • C Kanshi - A dynamic display configuration tool for Wayland similar to autorandr, usable on Wayland compositors supporting the wlr-output-management protocol
  • Python nwg-displays - An output management utility for sway and Hyprland, inspired by wdisplays and wlay
  • Go Wallutils - A set of utilities to handle monitors, resolutions, wallpapers, and timed wallpapers
  • C++ wayland-displays - A GUI and CLI tool for managing display outputs on wlroots-based Wayland compositors implementing the wlr-output-management-unstable-v1 protocol
  • Rust wayout - A simple output management tool for wlroots-based compositors implementing wlr-output-management-unstable-v1
  • C wdisplays - A GUI application for configuring displays in wlroots-based compositors implementing the wlr-output-management-unstable-v1 protocol
  • C wlay - Graphical output management for Wayland
  • C wlr-randr - A utility to manage outputs of wlroots-based Wayland compositors, inspired by xrandr

EMULATION

  • Python Waydroid - A container-based approach to boot a full Android system on GNU/Linux

IMAGE VIEWING

  • C Swayimg - An image viewer for Sway/Wayland

LAUNCHERS

  • Rust Anyrun - A GTK-based Wayland-native launcher, customizable via CSS
  • C bemenu - A dynamic menu library and client program inspired by dmenu
  • C diowapplauncher - A simple application launcher for Wayland compositors implementing the xdg-shell protocol
  • C diowmenu - A simple quick launch menu for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C dmenu-wayland - A wlroots-based dynamic menu for Wayland
  • C emenu - An efficient menu for wlroots-based Wayland compositors
  • C fuzzel - An application launcher for wlroots-based Wayland compositors, similar to rofi's drun mode
  • Go gmenu - A desktop application launcher
  • Rust kickoff - A wlroots-based application launcher
  • C LavaLauncher - A simple launcher panel for Wayland desktops
  • C Mauncher - A GTK-based alternative to dmenu for Wayland which supports display scaling
  • C mew - A dmenu-like dynamic menu for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • Python mounch - A simple wofi/rofi launcher configured via YAML
  • C++ nwg-launchers - A GTK-based application grid launcher, button bar, and dmenu for Sway with a best effort for other Wayland environments
  • C rofi - A fork of rofi with Wayland support
  • Rust sirula - A simple application launcher for Wayland
  • C++ sysmenu - A simple program launcher for wlroots-based Wayland compositors, implementing the gtk4-layer-shell protocol
  • C tofi - A dynamic menu replacement for dmenu or rofi for wlroots-based Wayland compositors
  • Go walker - A GTK-based Wayland-native application runner
  • Python waypiedock - A launcher dock, in the shape of a pie, under the mouse
  • Rust wldash - A dashboard, launcher, or control panel for Wayland, using the wlr-layer-shell-unstable-v1 protocol
  • C wmenu - A dynamic menu for Sway and wlroots-based compositors inspired by dmenu
  • Rust yofi - A minimalistic menu for Wayland-based compositors

LIBRARIES

  • Rust client-toolkit - A toolkit for writing Wayland clients in Rust
  • C gtk4-layer-shell - A library to create panels and other desktop components for Wayland using GTK 4 and the wlr-layer-shell-unstable-v1 protocol
  • C gtk-layer-shell - A library to create panels and other desktop components for Wayland using GTK 3 and the wlr-layer-shell-unstable-v1 protocol
  • C++ Louvre - A library designed for building Wayland compositors in C++
  • C++ Mir - A set of libraries for building Wayland-based shells
  • OCaml ocaml-wayland - An implementation of the Wayland protocol in OCaml
  • Rust smithay - A compositor library for Wayland
  • C swc - A small Wayland compositor implemented as a library
  • Dart wayland-dart - A Dart implementation of the Wayland client protocols
  • Zig way-z - A client library and widget toolkit for wlroots-based Wayland applications written in Zig
  • C wld - A drawing library that targets Wayland
  • C wlroots - Pluggable, composable, and unopinionated modules for building a Wayland compositor
  • C++ Wrapland - A Qt-based wrapper library for the libwayland client and server APIs
  • Zig zig-wlroots - Bindings to wlroots for Zig for developing Wayland compositors and clients

NOTIFICATIONS

  • Vala Avizo - A simple notification daemon, mainly intended to be used for multimedia keys
  • C dunst - A highly configurable and lightweight notification daemon
  • C fnott - A keyboard-driven and lightweight notification daemon for wlroots-based Wayland compositors
  • C luft - A lightweight notification daemon for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C mako - A lightweight notification daemon for Wayland implementing the wlr-layer-shell-unstable-v1 protocol
  • Vala SwayNotificationCenter - A simple notification daemon with a GTK GUI for notifications and the control center implementing the wlr-layer-shell-unstable-v1 protocol
  • Rust SwayOSD - A GTK-based OSD window for common actions like volume and Caps Lock

ON-SCREEN KEYBOARDS

  • C++ wf-osk - A very, very basic on-screen keyboard using gtkmm and the virtual-keyboard-unstable-v1 and wlr-layer-shell-unstable-v1 protocols
  • Rust wkeys - An on-screen keyboard featuring a configurable layout and style for Wayland compositors supporting the gtk4-layer-shell protocol
  • C wshowkeys - Displays keypresses on screen on Wayland compositors supporting the wlr-layer-shell-unstable-v1 protocol
  • C wvkbd - An on-screen keyboard for wlroots-based compositors

REFERENCE APPLICATIONS

These are mainly for developers looking for example implementations.

  • Go go-wayland - A basic implementation of the Wayland protocol
  • Zig vkwayland - A reference application for Vulkan and Wayland
  • Python wayland-py - A pure Python implementation of a Wayland client
  • Zig zig-wayland - A basic implementation of the Wayland protocol for developing Wayland compositors and clients, including examples

SCREEN LOCKING

  • C chayang - A screen dimmer that can be used to implement a grace period before locking the session
  • Rust cthulock - A Slint-based customizable screen-locker for Wayland compositors implementing the ext-session-lock-v1 protocol
  • C gtklock - A GTK-based lockscreen for wlroots-based Wayland compositors using the wlr-layer-shell-unstable-v1 and wlr-input-inhibitor Wayland protocols
  • C++ hypridle - A wlroots-based idle management daemon implementing the ext-idle-notify-v1 protocol
  • C++ hyprlock - A multi-threaded and GPU-accelerated wlroots-based screen locking utility implementing the ext-session-lock-v1 and wlr-screencopy-unstable-v1 protocols
  • Rust Shaderlock - A wlroots-based screen-locker for Wayland utilizing GPU shaders
  • C swayidle - An idle management daemon for Wayland which implements the ext-idle-notify-v1 protocol
  • C swaylock-effects - A fork of swaylock which adds, built-in screenshots, image manipulation, and various other effects like blurring
  • C swaylock - A screen locking utility for Wayland which implements the ext-idle-notify-v1 protocol protocol
  • Zig waylock - A small screen-locker for Wayland compositors implementing the ext-session-lock-v1 protocol
  • C wlock - A simple screen-locker for Wayland compositors that support the ext-session-lock-v1 protocol

SCREENCASTS

  • Rust Kooha - Minimalistic screen recorder for Wayland sessions implementing the org.freedesktop.impl.portal.ScreenCast protocol
  • C++ ssr-wlroots - A fork of SimpleScreenRecorder with support for wlroots-based compositors (more specifically, those that support wlr-screencopy-unstable-v1 and xdg-output-unstable-v1) - doesn't support recording area selection and has issues with multiple screens
  • Vala wayfarer - A screen recorder for GNOME/Wayland/PipeWire implementing the org.freedesktop.impl.portal.ScreenCast protocol
  • C++ wayrec - A simple screen recorder using the org.freedesktop.impl.portal.ScreenCast protocol
  • C++ wf-recorder - A utility program for screen recording of wlroots-based compositors (more specifically, those that support wlr-screencopy-unstable-v1 and xdg-output-unstable-v1)
  • C wl-mirror - A simple Wayland output mirror client
  • C wlrobs - A plugin for OBS Studio that allows screen capture on wlroots-based Wayland compositors
  • Rust wl-screenrec - A screen recorder for wlroots-based Wayland compositors leveraging DMA-BUF and the DRM and implementing the wlr-output-management-unstable-v1 and wlr-screencopy-unstable-v1 protocols

SCREENSHOTS

  • C dulcepan - A screenshot tool for wlroots-based Wayland compositors, implementing the wlr-layer-shell-unstable-v1 and wlr-screencopy-unstable-v1 protocols
  • C grim - Grab images from a Wayland compositor
  • Rust haruhishot - A screenshot utility for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 and wlr-screencopy-unstable-v1 protocols
  • Go samurai-select - A screen selection tool for wlroots-based Wayland compositors implementing wlr-layer-shell-unstable-v1
  • Rust Satty - A screenshot annotation tool inspired by Swappy and Flameshot
  • Zig Seto - A hardware-accelerated and keyboard-driven screen selection tool implementing the wlr-layer-shell-unstable-v1 protocol
  • Rust shotman - A screenshot GUI for Wayland compositors implementing wlr-layer-shell-unstable-v1, wlr-screencopy-unstable-v1, and single-pixel-buffer-v1 protocols
  • C slurp - Select a region in a Wayland compositor and print it to the standard output
  • C swappy - A Wayland-native snapshot editing tool, inspired by Snappy on macOS
  • C Taiga - An animated screenshot program for wlroots-based Wayland compositors
  • Rust Watershot - A simple Wayland-native screenshot tool inspired by Flameshot
  • Rust Wayshot - A screenshot tool for wlroots-based compositors implementing wlr-screencopy-unstable-v1
  • Rust waysip - An area selector for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • Rust Weye - A lightweight screenshot tool for sway users

SESSION MANAGEMENT

  • Go nwg-bar - A Wayland-based logout menu implementing the gtk3-layer-shell protocol
  • Rust pwrmenu - A Wayland-based logout menu implementing the gtk4-layer-shell protocol
  • C++ SwayAudioIdleInhibit - Prevents swayidle from sleeping while any application is outputting or receiving audio, implementing the idle-inhibit-unstable-v1 protocol
  • Rust wleave - A Wayland-based logout menu implementing the gtk3-layer-shell protocol
  • C wlogout - A Wayland-based logout menu

THEMING

  • Go nwg-look - A GTK 3 settings editor designed to work properly in a wlroots-based environment

TOOLS

  • C clipcell - A clipboard manager with support for text and image preview for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C Door Knocker - A simple tool to check the availability of XDG portals in a running session
  • C++ hyprpicker - A wlroots-compatible Wayland color picker
  • Rust lan-mouse - A mouse and keyboard sharing software
  • C lswt - List Wayland toplevels in both human readable and machine parsable formats via the wlr-foreign-toplevel-management-unstable-v1 protocol
  • C scenefx - A drop-in replacement for the wlroots scene-graph API that allows Wayland compositors to render surfaces with eye-candy effects
  • Go sway-fader - A tool that can be used to control transparency for focus and window events
  • Rust Vigiland - An application implementing the idle-inhibit-unstable-v1 protocol
  • C++ Waycheck - A simple application that displays all of the Wayland protocols supported and unsupported by the running compositor
  • Rust waycorner - Hot corners for wlroots-based Wayland compositors implementing the xdg-output-unstable-v1 protocol
  • Rust waylevel - A simple debugging tool which prints Wayland toplevels and other compositor specific information
  • C waynergy - An implementation of a synergy client for Wayland compositors
  • C waypipe - A proxy for Wayland clients enabling application forwarding similar to ssh -X
  • Zig wayprompt - A multi-purpose prompt tool for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C wayvnc - A VNC server for wlroots-based Wayland compositors
  • C wev - A tool for debugging events on a Wayland window, analogous to the X11 tool xev
  • C++ wlcs - A protocol-conformance-verifying test suite usable by Wayland compositor implementors
  • C wlinhibit - A simple idle inhibitor implementing the idle-inhibit-unstable-v1 protocol
  • C wl-kbptr - A utility to help move the mouse pointer with the keyboard implementing the wlr-layer-shell-unstable-v1 and wlr-virtual-pointer-unstable-v1 protocols
  • C wlopm - A Wayland output power management tool implementing the wlr-output-power-management-unstable-v1 protocol
  • C wlrctl - A command line utility for miscellaneous wlroots-based Wayland extensions, supporting the wlr-foreign-toplevel-management-unstable-v1, virtual-keyboard-unstable-v1, and wlr-virtual-pointer-unstable-v1 protocols
  • Rust wlr-which-key - A keymap manager for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C wtw - A simple text widget for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C wtype - A Wayland tool that allows keyboard input simulation like xdotool
  • Python xwayland-run - A set of utilities revolving around running Xwayland and various Wayland compositors headless
  • C ydotool - A generic Linux command-line automation tool

WALLPAPER

  • Python Azote - A GTK 3-based picture browser and background setter supporting all wlroots-based Wayland compositors
  • Zig beanbag - A lightweight wallpaper application designed for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C++ glshell - A shader display implementing the wlr-layer-shell-unstable-v1 protocol that can be used to create a simple overlay for a Wayland compositor, a status bar, or a wallpaper
  • C++ Hyprpaper - A wallpaper utility with the ability to dynamically change wallpapers supporting all wlroots-based compositors
  • C mpvpaper - A video wallpaper program for wlroots-based Wayland compositors
  • Rust rwpspread - A multi-monitor wallpaper utility spanning input wallpapers across all monitors, supporting Wayland compositors implementing xdg-output-unstable-v1 with integrations for wpaperd, swaybg, hyprpaper, swaylock, and hyprlock
  • C swaybg - A wallpaper utility for Wayland compositors implementing the wl_output version 4 and wlr-layer-shell-unstable-v1 protocols
  • Rust swww - An animated wallpaper daemon for Wayland, controlled at runtime and implementing the wlr-layer-shell-unstable-v1 and xdg-output-unstable-v1 protocols
  • Go Wallutils - A set of utilities to manage monitors, resolutions, wallpapers and timed wallpapers
  • Python Waypaper - A GUI frontend for swaybg/swww to switch wallpapers
  • C wbg - A simple wallpaper application for Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • Rust wpaperd - A wallpaper daemon that shows random wallpapers from a directory and changes them after some time

WIDGETS (BARS, PANELS, ETC.)

  • TypeScript ags - A standalone library for creating GTK-based widgets
  • Zig beanclock - A simple clock overlay for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C chocobar - A simple status bar for wlroots-based Wayland compositors
  • Zig creek - A dwm-inspired fork of levee and minimalist status bar for the River compositor designed to be more malleable by allowing arbitrary text rather than built-in modules
  • C dam - A small status bar designed for River and wlroots-based Wayland compositors
  • C deburr - A dwm-like status bar for wlroots-based Wayland compositors
  • C diowpanel - A simple panel for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C diowwindowlist - A simple GUI application for listing and activating the currently opened toplevels (application windows) in wlroots-based Wayland compositors implementing the wlr-foreign-toplevel-management-unstable-v1 and wlr-layer-shell-unstable-v1 protocols
  • Rust dynisland - An extensible bar for wlroots-based Wayland compositors implementing the gtk4-layer-shell protocol
  • Rust Eww - A standalone widget system that allows for implementing custom widgets in any window manager
  • Python fabric - A GTK-based desktop widget framework
  • C++ gBar - A status bar written with GTK
  • Vala Hybridbar - A top panel forked from wingpanel for Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • Rust i3status-rust - A resource-friendly and feature-rich replacement for i3status
  • Python ignis - A widget system based on GTK 4 for Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • Rust Ironbar - A customizable and feature-rich GTK bar for wlroots-based compositors
  • Dart Rust kitshell - A Flutter-based panel for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • Zig levee - A status bar for the river Wayland compositor, providing support for workspace tags, volume, battery capacity, and screen brightness via built-in modules
  • Python nwg-panel - A GTK 3-based panel for Wayland compositors
  • C Root Bar - A bar for wlroots-based Wayland compositors such as sway
  • C SFWBar - A flexible taskbar application for Wayland compositors, designed with a stacking layout in mind
  • C++ sysbar - A modular status bar for wlroots-based Wayland compositors, implementing the gtk4-layer-shell protocol
  • C++ syshud - A system status indicator for wlroots-based Wayland compositors, implementing the gtk4-layer-shell protocol
  • Zig walrus-bar - A status bar for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C++ Wapanel - A simple panel/status bar/task bar for stacking Wayland-based desktops
  • C++ Waybar - A highly customizable bar for Sway and wlroots-based compositors
  • C wayloadmon - A load monitor widget for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • C wlclock - An analog clock for wlroots-based Wayland compositors, implementing the wlr-layer-shell-unstable-v1 protocol
  • C wob - A lightweight overlay volume/backlight/progress/anything bar for wlroots-based Wayland compositors implementing the wlr-layer-shell-unstable-v1 protocol
  • Go YaGoStatus - A replacement for i3status
  • C yambar - A lightweight and configurable status panel, inspired by polybar
  • C++ zenway - A sway bar alternative that overlays on top of workspaces