C++ Wayland

Open-source C++ projects categorized as Wayland

Top 19 C++ Wayland Projects

  • Hyprland

    Hyprland is a highly customizable dynamic tiling Wayland compositor that doesn't sacrifice on its looks.

    Project mention: RubyWM – an X11 window manager in pure Ruby | news.ycombinator.com | 2024-01-22

    I've been an X11 holdout since forever, but after nvidia proprietary drivers broke for the millionth time on a system upgrade, I switched over to Nouveau and the "Hyprland" tiling compositor on Wayland. It's the only setup that felt worth the upgrade to me. Setup was easy, animations are very slick (scroll down on the link below for a sample), and I've had no bugs or quirks. Highly recommend checking it out if you're bored or curious.


  • conky

    Light-weight system monitor for X, Wayland, and other things, too

    Project mention: False lead on memory leak | /r/kde | 2023-08-10
  • JetBrains Dev Survey

    What’s up with the C++ ecosystem in 2023? JetBrains Developer Ecosystem Survey 2023 has given us many interesting insights. The Embedded (37%) and Games (39%) industries are already working with C++20, developers are incorporating static analysis in their CI, and ChatGPT usage among coders is flourishing. Read on for more!

  • Waybar

    Highly customizable Wayland bar for Sway and Wlroots based compositors. :v: :tada:

    Project mention: Hyprland waybar custom modules on-click never works | /r/hyprland | 2023-12-07
  • wayfire

    A modular and extensible wayland compositor

    Project mention: Wayfire (a Wayland compositor) 0.8.0 announcement | news.ycombinator.com | 2023-10-10

    One of the developers just responded on the github issue referecing this thread.

    "After a bit of discussion on HackerNews, I got a bit better understanding of the actual problem. People don't want to just configure the keys according to a particular layout - the actual 'issue' here is that they expect the key binding changes together with the layout. Unfortunately, the 0.8.0 changes didn't make this possible to implement as a plugin.

    I would reconsider adding this as an option if there are enough interested people. React with a thumbs up to this comment if you are interested in having this option (though the defaults will certainly remain as they are now). Please, react only if you actually use Wayfire or would use it if it had this feature :)"


  • ksnip

    ksnip the cross-platform screenshot and annotation tool

    Project mention: Some might not see how much work is/was to maintain xorg server | news.ycombinator.com | 2023-11-29

    can also be used in non-KDE X11 desktop environments.

    which doesn't really explicitly say much, and in fact the only tool I could find that claimed to be able to support everything was ksnip, which seems to work fine with wlroots but beyond that https://github.com/ksnip/ksnip#known-issues outlines the situation well enough; KDE is at least only temporarily broken, but GNOME isn't going to improve because GNOME did that on purpose. Now, that readme says you can use xdg-desktop-portal, but I have a GNOME+Wayland machine on hand, and I couldn't get it to actually work. I think what's supposed to happen is that every time I do a screenshot it prompts for permission, which I wanted to verify so I could complain that that was totally unreasonable, but what actually happens is that it just fails, which is... not better. Oh, and while searching for solutions to that I found flameshot, but that just refuses to even run. So... maybe someday the portal solution will work; in the meantime, I feel comfortable describing the situation as Wayland not having a uniform working way of taking screenshots.

    [0] In particular, so we can avoid the situation from X11 where a load of drawing primitives are baked in that nobody has any use for anymore.

  • sddm

    QML based X11 and Wayland display manager

    Project mention: Plasma users rejoice: SDDM just had a new release! | /r/archlinux | 2023-06-23

    Well, it seems it is still considered experimental https://github.com/sddm/sddm/pull/1737

  • hawck

    Key-rebinding daemon for Linux (Wayland/X11/Console)

    Project mention: Unpacking Elixir: Syntax | news.ycombinator.com | 2023-09-08

    That is actually very smart and helpful, thanks! :) My only gripe with autokey is that it's the only thing holding me back from wayland. Hawck is supposed to work with wayland but I never got it to work, was a while ago I though


  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • hyprpaper

    Hyprpaper is a blazing fast wayland wallpaper utility with IPC controls.

    Project mention: Hyprpaper not loading wallpaper - Could not connect to sock | /r/hyprland | 2023-12-06

    # Hyperland Configuration # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=DP-2,[email protected],auto,1 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch exec-once=waybar exec-once=hyprpaper exec-once=swaync # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # source = ~/.zshrc# Some default env vars. env = XCURSOR_SIZE,24 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 touchpad { natural_scroll = yes } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 4 gaps_out = 4 border_size = 1 col.active_border = rgba(a7c080ff) col.inactive_border = rgba(3d484dff) layout = dwindle } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 5 blur { enabled = true size = 3 passes = 1 } drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } animations { enabled = yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = yes # you probably want this } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_is_master = true } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = off } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more device:epic-mouse-v1 { sensitivity = -0.5 } # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # Turn off default hypr-chan wallpaper misc { disable_hyprland_logo = true force_default_wallpaper = 0 } # Wallpaper Variables per: https://github.com/hyprwm/hyprpaper # set variables to be used as shortcuts in the bind command $w1 = DP-2,/home/bit/dotfiles/walls/walls-01.jpg $w2 = DP-2,/home/bit/dotfiles/walls/walls-02.jpg $w3 = DP-2,/home/bit/dotfiles/walls/walls-03.png $w4 = DP-2,/home/bit/dotfiles/walls/walls-04.jpg $w5 = DP-2,/home/bit/dotfiles/walls/walls-05.jpg $w6 = DP-2,/home/bit/dotfiles/walls/walls-06.png $w7 = DP-2,/home/bit/dotfiles/walls/walls-07.jpg $w8 = DP-2,/home/bit/dotfiles/walls/walls-08.jpg $w9 = DP-2,/home/bit/dotfiles/walls/walls-09.jpg $w10 = DP-2,/home/bit/dotfiles/walls/walls-10.png $w11 = DP-2,/home/bit/dotfiles/walls/walls-11.jpg $w12 = DP-2,/home/bit/dotfiles/walls/walls-12.jpg $w13 = DP-2,/home/bit/dotfiles/walls/walls-13.jpg $w14 = DP-2,/home/bit/dotfiles/walls/walls-14.png $w15 = DP-2,/home/bit/dotfiles/walls/walls-15.jpg $w16 = DP-2,/home/bit/dotfiles/walls/walls-16.jpg $w17 = DP-2,/home/bit/dotfiles/walls/walls-17.png $w18 = DP-2,/home/bit/dotfiles/walls/walls-18.jpg $w19 = DP-2,/home/bit/dotfiles/walls/walls-19.jpg # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER $mainModShift = SUPER_SHIFT # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainModShift, R, exec, hyprctl reload hyprland bind = $mainMod, P, exec, alacritty -e tmux bind = $mainMod, Q, killactive, bind = $mainMod, C, exit, bind = $mainMod, F, exec, dolphin bind = $mainMod, V, togglefloating, bind = $mainMod, D, exec, wofi --show drun bind = $mainMod, A, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 1, exec, $w1 # change the wallpaper when we switch workspace bind = $mainMod, 2, workspace, 2 bind = $mainMod, 2, exec, $w2 # change the wallpaper when we switch workspace bind = $mainMod, 3, workspace, 3 bind = $mainMod, 3, exec, $w3 # change the wallpaper when we switch workspace bind = $mainMod, 4, workspace, 4 bind = $mainMod, 4, exec, $w4 # change the wallpaper when we switch workspacebind = $mainMod, 5, workspace, 5 bind = $mainMod, 5, exec, $w5 # change the wallpaper when we switch workspace bind = $mainMod, 6, workspace, 6 bind = $mainMod, 6, exec, $w6 # change the wallpaper when we switch workspace bind = $mainMod, 7, workspace, 7 bind = $mainMod, 7, exec, $w7 # change the wallpaper when we switch workspace bind = $mainMod, 8, workspace, 8 bind = $mainMod, 8, exec, $w8 # change the wallpaper when we switch workspace bind = $mainMod, 9, workspace, 9 bind = $mainMod, 9, exec, $w9 # change the wallpaper when we switch workspace bind = $mainMod, 0, workspace, 1 bind = $mainMod, 0, exec, $w10 # change the wallpaper when we switch workspace # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $SUPERSHIFT, 1, exec, $w1 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $SUPERSHIFT, 2, exec, $w2 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $SUPERSHIFT, 3, exec, $w3 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $SUPERSHIFT, 4, exec, $w4 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $SUPERSHIFT, 5, exec, $w5 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $SUPERSHIFT, 6, exec, $w6 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $SUPERSHIFT, 7, exec, $w7 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $SUPERSHIFT, 8, exec, $w8 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $SUPERSHIFT, 9, exec, $w9 # maintain wallpaper switching when move a window to another workspace bind = $mainMod SHIFT, 0, movetoworkspace, 10 bind = $SUPERSHIFT, 0, exec, $w10 # maintain wallpaper switching when move a window to another workspace # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Take screenshots with Hyprshot # Screenshot a window bind = $mainMod, PRINT, exec, hyprshot -m window # Screenshot a monitor bind = , PRINT, exec, hyprshot -m output # Screenshot a region bind = $mainMod SHIFT, PRINT, exec, hyprshot -m region

  • hyprpicker

    A wlroots-compatible Wayland color picker that does not suck.

  • Louvre

    C++ library for building Wayland compositors. (by CuarzoSoftware)

    Project mention: The shiny future of wayland & linux desktop. | /r/linuxmemes | 2023-12-11

    🔶 Wayland a minimal and secure display server 🔷Louvre high-performance C++ library designed for building Wayland compositors Phoronix analysis for Louvre i know wlroots exist but i'm excited to try new compositors build by Louvre.

  • gBar

    Blazingly fast status bar written with GTK

    Project mention: flake help! basic flake | /r/NixOS | 2023-09-05

    as a noob I set up my system without flakes (configuration.nix) but gBar is only as flake available. I guess this particular flake isn't hard to configure but I don't get it.

  • shell

    :shell: Convergent shell for desktops, phones and tables built with QtQuick, Wayland and Material Design (by lirios)

  • Discord-Screenshare-Linux

    Updating Discord's shit because they won't do it themselves 2: Electric Boogaloo

    Project mention: Do you guys prefer wayland or x11? | /r/Fedora | 2023-06-09
  • ivi-homescreen

    Embedded Flutter runtime targeting Embedded Linux with Wayland

    Project mention: Flutter on TV or Auto | /r/FlutterDev | 2023-12-11
  • keymapper

    A cross-platform context-aware key remapper. (by houmain)

    Project mention: No errors but also no process | /r/systemd | 2023-05-31
  • swayfire

    Sway/I3 inspired tiling window manager for Wayfire

  • wapanel

    Desktop-dedicated wayland bar for wayfire and other wlroots based compositors. Mir compatible.

  • interception-vimproved

    Unofficial plugin for Interception Tools combining features of caps2esc and space cadet for making held space work as a special fn key. Now configurable!

  • im-emoji-picker

    emoji picker compatible with Linux systems using either XServer or Wayland with either Fcitx5 or IBus

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2024-01-22.

C++ Wayland related posts


What are some of the best open-source Wayland projects in C++? This list will help you:

Project Stars
1 Hyprland 14,791
2 conky 6,749
3 Waybar 5,026
4 wayfire 2,155
5 ksnip 1,832
6 sddm 1,745
7 hawck 505
8 hyprpaper 502
9 hyprpicker 474
10 Louvre 403
11 gBar 327
12 shell 230
13 Discord-Screenshare-Linux 215
14 ivi-homescreen 212
15 keymapper 196
16 swayfire 171
17 wapanel 52
18 interception-vimproved 38
19 im-emoji-picker 31
ChatGPT with full context of any GitHub repo.
Onboard AI learns any GitHub repo in minutes and lets you chat with it to locate functionality, understand different parts, and generate new code. Use it for free at app.getonboardai.com.