8 releases (stable)

1.6.0 Oct 25, 2024
1.5.0 Sep 25, 2024
1.3.0 Jul 7, 2024
1.2.0 May 5, 2024
0.1.0 May 2, 2022

#577 in GUI


Used in 2 crates

GPL-3.0-only

300KB
6.5K SLoC

Jay

crates.io

Jay is a Wayland compositor.

screenshot.png

Features

See features.md.

Configuration

See config.md.

Building and Setup

See setup.md.

License

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


lib.rs:

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.

Dependencies

~7–15MB
~199K SLoC