YaWC is a personal manual Wayland compositor spread amongst a group of friends trying to make a desktop which fits their needs.
Nix is stupid when it comes to submodules, so you may need to append “‘git+file:..?dir=..’”.
An example being:
nix develop 'git+file:..?dir=..'to enter a devshell from this directory.
This project will require the following packages to build:
- pipewire
- seatd
- libdisplay-info
- alsa-lib
- jack2
- udev
- pixman
- libxkbcommon
- libinput
- libgbm
These can also be fetched by entering a nix development environment using:
nix developAfter you have the build prerequisites, run:
cargo build --releaseWhich can also be shorthanded to:
cargo b -rThis segment includes various different things.
There are certain dependencies you may need to install for some things to work with respective features enabled:
- fontconfig
- udev
- OpenGL
- x11 (for xwayland)
- libxkbcommon
There are certain environment variables which can be used by and for YaWC.
| Variable | Use Case | Reference |
|---|---|---|
| YAWC_XWAYLAND_SCALE | Evidently - it changes Xwayland scaling | ./src/state.rs |
| YAWC_NO_VULKAN | Skips Vulkan for X11 | ./src/x11.rs |
| YAWC_DISABLE_10BIT | Skips 10-bit Color for udev rendering | ./src/udev.rs |
| YAWC_DRM_DEVICE | Specify DRI device e.g /dev/dri/card1 | ./src/udev.rs |
| YAWC_GLES_DISABLE_INSTANCING | Disables gles instancing | ./src/udev.rs |
| YAWC_DISABLE_DIRECT_SCANOUT | Disables Direct Scanout | ./src/udev.rs |
| YAWC_CONFIG_PATH | Specify config file path | ./src/config/mod.rs |
These only apply when running in a udev instance, so all can be found in `./src/udev.rs`.
| Variable | Value | Use Case |
|---|---|---|
| XDG_CURRENT_DESKTOP | YaWC | Identify that it is us as the desktop |
| XDG_SESSION_DESKTOP | YaWC | Identify that it is us as the desktop |
| XDG_SESSION_TYPE | wayland | Identify that it is a Wayland instance |
| QT_QPA_PLATFORM | wayland;xcb | Get QT apps to attempt to load QT’s Wayland plugin, fallback to xcb |
| ELECTRON_OZONE_PLATFORM_HINT | wayland | Hint to Electron that our session is Wayland |
| GTK_BACKEND | wayland | For GTK3.0-or-later to know we are wayland |
You can add more of these using your configuration file:
env {
MY_ENV_NAME "VARIABLE_CONTENT"
}The start of this project was created with the help of Anvil, the example compositor which Smithay uses to test, which was MIT.
The project state as it stands today is under AGPL-v3.0.