Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Environment Variables

Jay can set environment variables that are inherited by all programs it spawns.

Setting environment variables at startup

Use the [env] table in your config to define variables that apply to every application launched by the compositor:

[env]
GTK_THEME = "Adwaita:dark"
QT_QPA_PLATFORM = "wayland"
MOZ_ENABLE_WAYLAND = "1"

These variables are set when the config is loaded. Programs started after that point will inherit them.

Changing variables at runtime

set-env

Use the set-env action to add or update environment variables while the compositor is running. This affects all programs started after the action runs:

[shortcuts]
alt-F11 = {
    type = "set-env",
    env = { GTK_THEME = "Adwaita:dark" },
}
alt-F12 = {
    type = "set-env",
    env = { GTK_THEME = "Adwaita" },
}

unset-env

Use the unset-env action to remove environment variables:

[shortcuts]
alt-F10 = { type = "unset-env", env = ["GTK_THEME"] }

You can unset multiple variables at once with an array:

[shortcuts]
alt-F10 = {
    type = "unset-env",
    env = ["GTK_THEME", "QT_QPA_PLATFORM"],
}

Per-process environment variables

When using the table form of the exec action, you can set environment variables that apply only to that specific process:

[shortcuts]
alt-Return = {
    type = "exec",
    exec = {
        prog = "alacritty",
        env = { TERM = "xterm-256color" },
    },
}

These per-process variables are merged with (and override) the global environment for that single execution.