12 unstable releases (5 breaking)

new 0.6.0 Apr 25, 2025
0.5.1 Feb 27, 2025
0.4.4 Jan 24, 2025
0.3.0 Jul 25, 2021
0.1.0 Oct 1, 2017

#591 in GUI

Download history 17/week @ 2025-01-08 8/week @ 2025-01-15 687/week @ 2025-01-22 30/week @ 2025-01-29 93/week @ 2025-02-05 33/week @ 2025-02-12 49/week @ 2025-02-19 376/week @ 2025-02-26 182/week @ 2025-03-05 202/week @ 2025-03-12 161/week @ 2025-03-19 165/week @ 2025-03-26 302/week @ 2025-04-02 276/week @ 2025-04-09 170/week @ 2025-04-16 333/week @ 2025-04-23

1,102 downloads per month

MIT license

3.5MB
70K SLoC

Smithay

Crates.io docs.rs Build Status Join the chat on matrix at #smithay:matrix.org Join the chat via bridge on #smithay on libera.chat

A smithy for rusty wayland compositors

Goals

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 functionalities that pretty much any compositor will need, in a generic fashion.

It supports the core Wayland protocols, the official protocol extensions, and some external extensions, such as those made by and for wlroots and KDE

Also:

  • Documented: Smithay strives to maintain a clear and detailed documentation of its API and its functionalities. Compiled documentations are available on docs.rs for released versions, and here for the master branch.
  • Safety: Smithay will target to be safe to use, because Rust.
  • Modularity: Smithay is not a framework, and will not be constraining. If there is a part you don't want to use, you should not be forced to use it.
  • High-level: You should be able to not have to worry about gory low-level stuff (but Smithay won't stop you if you really want to dive into it).

Anvil

Smithay as a compositor library has its own sample compositor: anvil.

To get informations about it and how you can run it visit anvil README

Other compositors that use Smithay

  • Cosmic: Next generation Cosmic desktop environment
  • Catacomb: A Wayland Mobile Compositor
  • MagmaWM: A versatile and customizable Wayland Compositor
  • Niri: A scrollable-tiling Wayland compositor
  • Strata: A cutting-edge, robust and sleek Wayland compositor
  • Pinnacle: A WIP Wayland compositor, inspired by AwesomeWM
  • Sudbury: Compositor designed for ChromeOS
  • wprs: Like xpra, but for Wayland, and written in Rust.

System Dependencies

(This list can depend on features you enable)

  • libwayland
  • libxkbcommon
  • libudev
  • libinput
  • libgbm
  • libseat
  • xwayland

Contact us

If you have questions or want to discuss the project with us, our main chatroom is on Matrix: #smithay:matrix.org.

Dependencies

~6–29MB
~442K SLoC