Environment Variables
Jay can set environment variables that are inherited by all programs it spawns.
Note
This page covers variables you set for spawned programs. For the variables that influence Jay’s own behavior, see Env Variables Read by Jay.
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.