Find a file
Colin Marc 4838c9a74e
Implement the xwayland shell protocol (#1351)
...and use it to associate wl_surfaces to X11 surfaces.

The xwayland shell protocol moves the responsibility of setting the
"xwayland_surface" role on the wl_surface from the x11 side of the connection to
the wayland side. Among other things, this avoids the xwm racing the lifecycle
of the surface.

Since we can check the serial with a commit hook, this also removes the need for
a ugly idle callback in the Xwm, and may allow for better separation of concerns in the
future, for example moving the association state tracking out of Xwm.
2024-05-09 18:34:19 +02:00
.github/workflows ci: Exclude use_bindgen from cargo hack check 2024-04-22 10:47:42 +02:00
anvil Implement the xwayland shell protocol (#1351) 2024-05-09 18:34:19 +02:00
benches Use a thread-local for thread ID in UserDataMap::get 2023-05-17 16:00:57 -07:00
examples egl: Propagate sync interrupt where possible 2024-04-06 17:25:26 +02:00
smallvil Call *grab::unset in *set_grab, before restoring focus 2024-04-16 12:00:38 +02:00
smithay-drm-extras Update drm, gbm, image; xkbcommon/x11rb deps of Anvil 2024-04-22 10:47:42 +02:00
src Implement the xwayland shell protocol (#1351) 2024-05-09 18:34:19 +02:00
wlcs_anvil anvil: get rid of the cursor image mutex 2024-04-07 09:31:08 +02:00
.gitignore Fix travis build with updated libinput 2017-12-15 19:22:40 +01:00
.rustfmt.toml Remove unstable rustfmt options 2018-04-17 17:48:20 +02:00
build.rs Use clippy to disallow e/print/ln macros 2023-11-08 11:08:10 +02:00
Cargo.toml Update drm, gbm, image; xkbcommon/x11rb deps of Anvil 2024-04-22 10:47:42 +02:00
CHANGELOG.md wayland: allow to always send a configure event 2023-05-06 22:19:14 +02:00
clippy.toml bumb msrv to 1.72 2024-02-15 15:50:05 +01:00
compile_wlcs.sh compile_wlcs: Bump WLCS version 2023-06-21 10:06:37 -07:00
CONTRIBUTING.md fix-3-typos 2022-11-25 12:11:48 +01:00
doc_index.html travis: add a redirect doc homepage 2017-10-01 20:34:24 +02:00
LICENSE.txt Update names 2022-06-23 16:46:15 +00:00
README.md fix: typo in README (#1372) 2024-03-31 21:49:26 +02:00
test_gbm_bo_create_with_modifiers2.c allocator/gbm: Allow customizing usage flags 2023-02-10 21:00:07 +01:00
test_gbm_bo_get_fd_for_plane.c gbm: detect gbm_bo_get_fd_for_plane 2022-10-03 09:54:07 +02:00

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

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.