Crate jay_config

source ·
Expand description

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());


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

crate-type = ["cdylib"]

After compiling it, copy the shared library to $HOME/.config/jay/ 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.


  • Tools to configure the compositor in embedded environments.
  • Tools for spawning programs.
  • Tools for configuring input devices.
  • Tools for IO operations.
  • Tools affecting the keyboard behavior.
  • Tools for modifying the logging behavior of the compositor.
  • Knobs for changing the status text.
  • Tools for async task management.
  • Tools for configuring the look of the compositor.
  • Timers for one-time or repeated actions.
  • Tools for configuring graphics cards and monitors.


  • Declares the entry point of the configuration.