11 stable releases

Uses new Rust 2024

1.10.0 Mar 16, 2026
1.9.0 Jul 26, 2025
1.8.0 Apr 22, 2025
1.7.0 Jan 27, 2025
0.1.0 May 2, 2022

#589 in Hardware support


Used in 2 crates

GPL-3.0-only

385KB
8K SLoC

This crate allows you to configure the Jay compositor.

A minimal example configuration looks as follows:

use jay_config::{config, quit, reload};
use jay_config::input::get_default_seat;
use jay_config::keyboard::mods::ALT;
use jay_config::keyboard::syms::{SYM_q, SYM_r};

fn configure() {
    let seat = get_default_seat();
    // Create a key binding to exit the compositor.
    seat.bind(ALT | SYM_q, || quit());
    // Reload the configuration.
    seat.bind(ALT | SYM_r, || reload());
}

config!(configure);

You should configure your crate to be compiled as a shared library:

[lib]
crate-type = ["cdylib"]

After compiling it, copy the shared library to $HOME/.config/jay/config.so and restart the compositor. It should then use your configuration file.

Note that you do not have to restart the compositor every time you want to reload your configuration afterwards. Instead, simply invoke the reload function via a shortcut.


Jay

crates.io

Jay is a Wayland compositor for Linux with an i3-like tiling layout, Vulkan and OpenGL rendering, multi-GPU support, screen sharing, and more.

screenshot.png

Quick Start

~$ cargo install --locked jay-compositor
~$ jay run

See the Jay Book for detailed installation instructions (including dependencies), configuration, features, and more.

The auto-generated Configuration Spec provides an exhaustive reference of every TOML config option.

License

Jay is free software licensed under the GNU General Public License v3.0.

Community

Community Discord server (unofficial)

Dependencies

~12MB
~234K SLoC