2212 lines
61 KiB
YAML
2212 lines
61 KiB
YAML
Keymap:
|
|
description: |
|
|
A keymap.
|
|
kind: variable
|
|
variants:
|
|
- kind: string
|
|
description: |
|
|
Defines a keymap by its XKB representation.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
keymap = """
|
|
xkb_keymap {
|
|
xkb_keycodes { include "evdev+aliases(qwerty)" };
|
|
xkb_types { include "complete" };
|
|
xkb_compat { include "complete" };
|
|
xkb_symbols { include "pc+us+inet(evdev)" };
|
|
};
|
|
"""
|
|
```
|
|
- kind: table
|
|
description: |
|
|
Defines or references a keymap.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
keymap.name = "my-keymap"
|
|
|
|
[[keymaps]]
|
|
name = "my-keymap"
|
|
path = "./my-keymap.xkb"
|
|
```
|
|
fields:
|
|
name:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
Defines a keymap name or references a defined keymap.
|
|
|
|
If the value is set in the top-level `keymaps` array, it defines a named
|
|
keymap.
|
|
|
|
Otherwise it references a named keymap that should have been defined in the
|
|
`keymaps` array.
|
|
map:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
Defines a keymap by its XKB representation.
|
|
|
|
For each keymap defined in the top-level `keymaps` array, exactly one of `map`
|
|
and `path` has to be defined.
|
|
path:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
Loads a keymap's XKB representation from a file.
|
|
|
|
If the path is relative, it will be interpreted relative to the Jay config
|
|
directory.
|
|
|
|
For each keymap defined in the top-level `keymaps` array, exactly one of `map`
|
|
and `path` has to be defined.
|
|
|
|
|
|
Action:
|
|
description: |
|
|
An `Action` is an action performed by the compositor.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = "quit"
|
|
```
|
|
kind: variable
|
|
variants:
|
|
- kind: string
|
|
ref: SimpleActionName
|
|
description: |
|
|
The value should be the name of a `simple` action. See the description of that
|
|
variant for more details.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = "quit"
|
|
```
|
|
- kind: array
|
|
items:
|
|
ref: Action
|
|
description: |
|
|
A list of actions to execute in sequence.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = [
|
|
{ type = "exec", exec = ["notify-send", "exiting"] },
|
|
"quit",
|
|
]
|
|
```
|
|
- kind: table
|
|
description: ''
|
|
types:
|
|
simple:
|
|
description: |
|
|
A simple action that takes no arguments. These are usually written as plain
|
|
strings instead.
|
|
|
|
- Example 1:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = { type = "simple", cmd = "quit" }
|
|
```
|
|
|
|
- Example 2:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = "quit"
|
|
```
|
|
fields:
|
|
cmd:
|
|
description: The simple action to execute.
|
|
required: true
|
|
ref: SimpleActionName
|
|
multi:
|
|
description: |
|
|
A list of actions to execute in sequence. These are usually written as plain
|
|
arrays instead.
|
|
|
|
- Example 1:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = { type = "multi", actions = ["quit", "quit"] }
|
|
```
|
|
|
|
- Example 2:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = ["quit", "quit"]
|
|
```
|
|
fields:
|
|
actions:
|
|
description: The actions to execute.
|
|
required: true
|
|
kind: array
|
|
items:
|
|
ref: Action
|
|
exec:
|
|
description: |
|
|
Executes a program.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-a = { type = "exec", exec = "alacritty" }
|
|
ctrl-b = { type = "exec", exec = ["notify-send", "hello world"] }
|
|
```
|
|
fields:
|
|
exec:
|
|
description: The command to execute.
|
|
required: true
|
|
ref: Exec
|
|
switch-to-vt:
|
|
description: |
|
|
Switches to a virtual terminal.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-alt-F1 = { type = "switch-to-vt", num = 1 }
|
|
```
|
|
fields:
|
|
num:
|
|
description: |
|
|
The VT number to switch to.
|
|
required: true
|
|
kind: number
|
|
integer_only: true
|
|
minimum: 1
|
|
show-workspace:
|
|
description: |
|
|
Switches to a workspace.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-F1 = { type = "show-workspace", name = "1" }
|
|
```
|
|
fields:
|
|
name:
|
|
description: The name of the workspace.
|
|
required: true
|
|
kind: string
|
|
move-to-workspace:
|
|
description: |
|
|
Moves the currently focused window to a workspace.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-F1 = { type = "move-to-workspace", name = "1" }
|
|
```
|
|
fields:
|
|
name:
|
|
description: The name of the workspace.
|
|
required: true
|
|
kind: string
|
|
move-to-output:
|
|
description: |
|
|
Moves a workspace to a different output.
|
|
|
|
- Example 1:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-F1 = { type = "move-to-output", workspace = "1", output.name = "right" }
|
|
```
|
|
|
|
- Example 2:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-F1 = { type = "move-to-output", output.name = "right" }
|
|
```
|
|
fields:
|
|
workspace:
|
|
description: |
|
|
The name of the workspace.
|
|
|
|
If this is omitted, the currently active workspace is moved.
|
|
required: false
|
|
kind: string
|
|
output:
|
|
description: |
|
|
The output to move to.
|
|
|
|
If multiple outputs match, the workspace is moved to the first matching
|
|
output.
|
|
required: true
|
|
ref: OutputMatch
|
|
configure-connector:
|
|
description: |
|
|
Applies a configuration to connectors.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "configure-connector", connector = { match.name = "eDP-1", enabled = false } }
|
|
alt-k = { type = "configure-connector", connector = { match.name = "eDP-1", enabled = true } }
|
|
```
|
|
fields:
|
|
connector:
|
|
description: The connector configuration.
|
|
required: true
|
|
ref: Connector
|
|
configure-input:
|
|
description: |
|
|
Applies a configuration to input devices.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-l = { type = "configure-input", input = { match.tag = "mouse", left-handed = true } }
|
|
alt-r = { type = "configure-input", input = { match.tag = "mouse", left-handed = false } }
|
|
|
|
[[inputs]]
|
|
tag = "mouse"
|
|
match.is-pointer = true
|
|
```
|
|
fields:
|
|
input:
|
|
description: The input configuration.
|
|
required: true
|
|
ref: Input
|
|
configure-idle:
|
|
description: |
|
|
Configures the idle timeout.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-l = { type = "configure-idle", idle.minutes = 0 }
|
|
alt-r = { type = "configure-idle", idle.minutes = 10 }
|
|
```
|
|
fields:
|
|
idle:
|
|
description: The idle timeout.
|
|
required: true
|
|
ref: Idle
|
|
configure-output:
|
|
description: |
|
|
Applies a configuration to input devices.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-l = { type = "configure-output", output = { match.name = "right", transform = "none" } }
|
|
alt-r = { type = "configure-output", output = { match.name = "right", transform = "rotate-90" } }
|
|
|
|
[[outputs]]
|
|
name = "right"
|
|
match.serial-number = "33K03894SL0"
|
|
```
|
|
fields:
|
|
output:
|
|
description: The output configuration.
|
|
required: true
|
|
ref: Output
|
|
set-env:
|
|
description: |
|
|
Sets environment variables for all programs started afterwards.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-l = { type = "set-env", env.GTK_THEME = "Adwaita:dark" }
|
|
```
|
|
fields:
|
|
env:
|
|
description: The environment variables.
|
|
required: true
|
|
kind: map
|
|
values:
|
|
kind: string
|
|
unset-env:
|
|
description: |
|
|
Unsets environment variables for all programs started afterwards.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-l = { type = "unset-env", env = ["Adwaita:dark"] }
|
|
```
|
|
fields:
|
|
env:
|
|
description: The environment variables.
|
|
required: true
|
|
kind: array
|
|
items:
|
|
kind: string
|
|
set-keymap:
|
|
description: |
|
|
Sets the keymap.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "set-keymap", keymap.name = "laptop" }
|
|
alt-k = { type = "set-keymap", keymap.name = "external" }
|
|
|
|
[[keymaps]]
|
|
name = "laptop"
|
|
path = "./laptop-keymap.xkb"
|
|
|
|
[[keymaps]]
|
|
name = "external"
|
|
path = "./external-keymap.xkb"
|
|
```
|
|
fields:
|
|
keymap:
|
|
description: The keymap.
|
|
required: true
|
|
ref: Keymap
|
|
set-repeat-rate:
|
|
description: |
|
|
Sets the keyboard repeat rate.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-x = { type = "set-repeat-rate", rate = { rate = 25, delay = 250 } }
|
|
```
|
|
fields:
|
|
rate:
|
|
description: The rate.
|
|
required: true
|
|
ref: RepeatRate
|
|
set-status:
|
|
description: |
|
|
Sets the status command.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "set-status", status = { exec = "i3status" } }
|
|
```
|
|
fields:
|
|
status:
|
|
description: |
|
|
The status setting.
|
|
|
|
Omitting this causes the status to be reset to empty.
|
|
required: false
|
|
ref: Status
|
|
set-theme:
|
|
description: |
|
|
Sets the theme.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "set-theme", theme.bg-color = "#ff0000" }
|
|
```
|
|
fields:
|
|
theme:
|
|
description: The theme.
|
|
required: true
|
|
ref: Theme
|
|
set-log-level:
|
|
description: |
|
|
Sets the log level of the compositor..
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "set-log-level", level = "debug" }
|
|
```
|
|
fields:
|
|
theme:
|
|
description: The log level.
|
|
required: true
|
|
ref: LogLevel
|
|
set-gfx-api:
|
|
description: |
|
|
Sets the graphics API used by new DRM devices.
|
|
|
|
Setting this after the compositor has started usually has no effect.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "set-gfx-api", api = "Vulan" }
|
|
```
|
|
fields:
|
|
api:
|
|
description: The API.
|
|
required: true
|
|
ref: GfxApi
|
|
configure-direct-scanout:
|
|
description: |
|
|
Configure whether the compositor attempts direct scanout of client surfaces.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "configure-direct-scanout", enabled = false }
|
|
```
|
|
fields:
|
|
enabled:
|
|
description: Whether direct scanout is enabled.
|
|
required: true
|
|
kind: boolean
|
|
configure-drm-device:
|
|
description: |
|
|
Applies a configuration to DRM devices.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "configure-drm-device", dev = { match.name = "integrated", gfx-api = "Vulkan" } }
|
|
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.syspath = "/sys/devices/pci0000:00/0000:00:08.1/0000:14:00.0"
|
|
```
|
|
fields:
|
|
dev:
|
|
description: The DRM device configuration.
|
|
required: true
|
|
ref: DrmDevice
|
|
set-render-device:
|
|
description: |
|
|
Sets the render device used for compositing.
|
|
|
|
Changing this after the compositor has started might cause client windows to
|
|
become invisible until they are resized.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-j = { type = "set-render-device", dev.name = "integrated" }
|
|
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.syspath = "/sys/devices/pci0000:00/0000:00:08.1/0000:14:00.0"
|
|
```
|
|
fields:
|
|
dev:
|
|
description: |
|
|
The rule to find the device.
|
|
|
|
The first matching device is used.
|
|
required: true
|
|
ref: DrmDeviceMatch
|
|
|
|
|
|
Exec:
|
|
description: |
|
|
Describes how to execute a program.
|
|
|
|
- Example 1:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-a = { type = "exec", exec = "alacritty" }
|
|
```
|
|
|
|
- Example 2:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-a = { type = "exec", exec = ["notify-send", "hello world"] }
|
|
```
|
|
|
|
- Example 3:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-a = { type = "exec", exec = { prog = "notify-send", args = ["hello world"], env.WAYLAND_DISPLAY = "2" } }
|
|
```
|
|
kind: variable
|
|
variants:
|
|
- kind: string
|
|
description: |
|
|
The name of the executable to execute.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-a = { type = "exec", exec = "alacritty" }
|
|
```
|
|
- kind: array
|
|
items:
|
|
kind: string
|
|
description: |
|
|
The name and arguments of the executable to execute.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-a = { type = "exec", exec = ["notify-send", "hello world"] }
|
|
```
|
|
- kind: table
|
|
description: |
|
|
The name, arguments, and environment variables of the executable to execute.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
ctrl-a = { type = "exec", exec = { prog = "notify-send", args = ["hello world"], env.WAYLAND_DISPLAY = "2" } }
|
|
```
|
|
fields:
|
|
prog:
|
|
kind: string
|
|
required: true
|
|
description: The name of the executable.
|
|
args:
|
|
kind: array
|
|
required: false
|
|
items:
|
|
kind: string
|
|
description: The arguments to pass to the executable.
|
|
env:
|
|
kind: map
|
|
required: false
|
|
values:
|
|
kind: string
|
|
description: The environment variables to pass to the executable.
|
|
privileged:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
If `true`, the executable gets access to privileged wayland protocols.
|
|
|
|
The default is `false`.
|
|
|
|
|
|
SimpleActionName:
|
|
description: |
|
|
The name of a `simple` Action.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = "quit"
|
|
```
|
|
kind: string
|
|
values:
|
|
- value: focus-left
|
|
description: Move the keyboard focus to the left of the currently focused window.
|
|
- value: focus-down
|
|
description: Move the keyboard focus down from the currently focused window.
|
|
- value: focus-up
|
|
description: Move the keyboard focus up from the currently focused window.
|
|
- value: focus-right
|
|
description: Move the keyboard focus to the right of the currently focused window.
|
|
- value: move-left
|
|
description: Move the currently focused window one to the left.
|
|
- value: move-down
|
|
description: Move the currently focused window one down.
|
|
- value: move-up
|
|
description: Move the currently focused window one up.
|
|
- value: move-right
|
|
description: Move the currently focused window one to the right.
|
|
- value: move-right
|
|
description: Move the currently focused window one to the right.
|
|
- value: split-horizontal
|
|
description: Split the currently focused window horizontally.
|
|
- value: split-vertical
|
|
description: Split the currently focused window vertically.
|
|
- value: toggle-split
|
|
description: |
|
|
Toggle the split of the currently focused container between vertical and
|
|
horizontal.
|
|
- value: toggle-mono
|
|
description: |
|
|
Toggle the currently focused container between showing a single and all children.
|
|
- value: toggle-fullscreen
|
|
description: Toggle the currently focused window between fullscreen and windowed.
|
|
- value: focus-parent
|
|
description: Focus the parent of the currently focused window.
|
|
- value: close
|
|
description: Close the currently focused window.
|
|
- value: disable-pointer-constraint
|
|
description: |
|
|
Disable the currently active pointer constraint, allowing you to move the pointer
|
|
outside the window.
|
|
|
|
The constraint will be re-enabled when the pointer re-enters the window.
|
|
- value: toggle-floating
|
|
description: Toggle the currently focused window between floating and tiled.
|
|
- value: quit
|
|
description: Terminate the compositor.
|
|
- value: reload-config-toml
|
|
description: Reload the `config.toml`.
|
|
- value: reload-config-to
|
|
description: Reload the `config.so`.
|
|
- value: consume
|
|
description: |
|
|
Consume the current key event. Don't forward it to the focused application.
|
|
|
|
This action only has an effect in shortcuts.
|
|
|
|
Key-press events events that trigger shortcuts are consumed by default.
|
|
Key-release events events that trigger shortcuts are forwarded by default.
|
|
|
|
Note that consuming key-release events can cause keys to get stuck in the focused
|
|
application.
|
|
|
|
See the `forward` action to achieve the opposite effect.
|
|
- value: forward
|
|
description: |
|
|
Forward the current key event to the focused application.
|
|
|
|
See the `consume` action for more details.
|
|
- value: none
|
|
description: |
|
|
Perform no action.
|
|
|
|
As a special case, if this is the action of a shortcut, the shortcut will be
|
|
unbound. This can be used in modes to unbind a key.
|
|
|
|
|
|
Color:
|
|
kind: string
|
|
description: |
|
|
A color.
|
|
|
|
The format should be one of the following:
|
|
|
|
- `#rgb`
|
|
- `#rrggbb`
|
|
- `#rgba`
|
|
- `#rrggbba`
|
|
|
|
|
|
ConnectorMatch:
|
|
kind: variable
|
|
description: |
|
|
Rules to match one of the connectors used by the compositor.
|
|
variants:
|
|
- kind: array
|
|
items:
|
|
ref: ConnectorMatch
|
|
description: |
|
|
This rule matches if any of the rules in the array match.
|
|
- kind: table
|
|
description: |
|
|
Describes a rule that matches a subset of connectors.
|
|
|
|
This rule matches if all of the specified fields match.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[connectors]]
|
|
match.name = "DP-1"
|
|
```
|
|
fields:
|
|
name:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The name of the connector.
|
|
|
|
These values are not necessarily stable. You can find out the value by running
|
|
`jay randr`.
|
|
|
|
|
|
Connector:
|
|
kind: table
|
|
description: |
|
|
Describes configuration to apply to a connector.
|
|
|
|
- Example: To disable the built-in display of a laptop:
|
|
|
|
```toml
|
|
[[connectors]]
|
|
match.name = "eDP-1"
|
|
enabled = false
|
|
```
|
|
fields:
|
|
match:
|
|
ref: ConnectorMatch
|
|
required: true
|
|
description: |
|
|
The rule by which the connectors to modify are selected.
|
|
enabled:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
If specified, enables or disables the connector.
|
|
|
|
|
|
DrmDeviceMatch:
|
|
kind: variable
|
|
description: |
|
|
Rules to match one of the DRM devices (graphics cards) used by the compositor.
|
|
variants:
|
|
- kind: array
|
|
items:
|
|
ref: DrmDeviceMatch
|
|
description: |
|
|
This rule matches if any of the rules in the array match.
|
|
- kind: table
|
|
description: |
|
|
Describes a rule that matches a subset of DRM devices.
|
|
|
|
This rule matches if all of the specified fields match.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
name = "dedicated"
|
|
match = { pci-vendor = 0x1002, pci-model = 0x73ff }
|
|
```
|
|
fields:
|
|
name:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The name of another DrmDeviceMatch rule.
|
|
|
|
For this rule to match, the referenced rule must match. The name of the rule
|
|
should have been defined in the top-level `drm-devices` array.
|
|
|
|
This can be used to easily refer to DRM devices.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-v = { type = "configure-drm-device", dev = { match.name = "dedicated", gfx-api = "Vulkan" } }
|
|
alt-o = { type = "configure-drm-device", dev = { match.name = "dedicated", gfx-api = "OpenGl" } }
|
|
|
|
[[drm-devices]]
|
|
name = "dedicated"
|
|
match = { pci-vendor = 0x1002, pci-model = 0x73ff }
|
|
```
|
|
syspath:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The syspath of the device.
|
|
|
|
This is useful if you have multiple copies of the same device installed so that
|
|
the PCI numbers are not unique.
|
|
|
|
The values are usually stable unless you re-configure your hardware.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.syspath = "/sys/devices/pci0000:00/0000:00:08.1/0000:14:00.0"
|
|
```
|
|
devnode:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The devnode of the device.
|
|
|
|
The values are usually not-stable across PC restarts.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.devnode = "/dev/dri/card0"
|
|
```
|
|
vendor:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The name of the vendor.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.vendor = "Advanced Micro Devices, Inc. [AMD/ATI]"
|
|
```
|
|
model:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The name of the model.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.vendor = "Raphael"
|
|
```
|
|
pci-vendor:
|
|
kind: number
|
|
integer_only: true
|
|
required: false
|
|
description: |
|
|
The PCI number of the vendor.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.pci-vendor = 0x1002
|
|
```
|
|
pci-model:
|
|
kind: number
|
|
integer_only: true
|
|
required: false
|
|
description: |
|
|
The PCI number of the model.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match.pci-model = 0x164e
|
|
```
|
|
|
|
|
|
DrmDevice:
|
|
kind: table
|
|
description: |
|
|
Describes configuration to apply to a DRM device (graphics card).
|
|
|
|
- Example: To disable direct scanout on a device:
|
|
|
|
```toml
|
|
[[drm-devices]]
|
|
match = { pci-vendor = 0x1002, pci-model = 0x73ff }
|
|
direct-scanout = false
|
|
```
|
|
fields:
|
|
name:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
Assigns a name to the rule in the `match` field.
|
|
|
|
This only has an effect when used in the top-level `drm-devices` array.
|
|
match:
|
|
ref: DrmDeviceMatch
|
|
required: true
|
|
description: |
|
|
The rule by which the DRM devices to modify are selected.
|
|
direct-scanout:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
If specified, enables or disables direct scanout on this device.
|
|
gfx-api:
|
|
ref: GfxApi
|
|
required: false
|
|
description: |
|
|
If specified, sets the graphics API to use for this device.
|
|
|
|
|
|
GfxApi:
|
|
kind: string
|
|
description: A graphics API used for rendering.
|
|
values:
|
|
- value: OpenGl
|
|
description: The OpenGL API.
|
|
- value: Vulkan
|
|
description: |
|
|
The Vulkan API.
|
|
|
|
Note that this API has the following restriction: If any of the DRM devices in
|
|
the system use Vulkan, then all devices must support DRM format modifiers. This
|
|
is usually the case but not for AMD devices older than RX 5xxx.
|
|
|
|
|
|
InputMatch:
|
|
kind: variable
|
|
description: |
|
|
Rules to match one of the input devices used by the compositor.
|
|
variants:
|
|
- kind: array
|
|
items:
|
|
ref: InputMatch
|
|
description: |
|
|
This rule matches if any of the rules in the array match.
|
|
- kind: table
|
|
description: |
|
|
Describes a rule that matches a subset of input devices.
|
|
|
|
This rule matches if all of the specified fields match.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-pointer = true
|
|
left-handed = true
|
|
```
|
|
fields:
|
|
tag:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The tag of another InputMatch rule.
|
|
|
|
For this rule to match, the referenced rule must match. The name of the rule
|
|
should have been defined in the top-level `inputs` array.
|
|
|
|
This can be used to easily refer to input devices.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-l = { type = "configure-input", input = { match.tag = "mouse", left-handed = true } }
|
|
alt-r = { type = "configure-input", input = { match.tag = "mouse", left-handed = false } }
|
|
|
|
[[inputs]]
|
|
tag = "mouse"
|
|
match.is-pointer = true
|
|
```
|
|
name:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The libinput name of the device.
|
|
|
|
You can find out the name of the devices by running `jay input`.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.name = "Logitech G300s Optical Gaming Mouse"
|
|
left-handed = true
|
|
```
|
|
syspath:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The syspath of the device.
|
|
|
|
This is useful if you have multiple copies of the same device installed so that
|
|
the name is not unique.
|
|
|
|
The values are usually stable unless you re-configure your hardware.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.syspath = "/sys/devices/pci0000:00/0000:00:08.1/0000:14:00.4/usb5/5-1/5-1.1/5-1.1.2/5-1.1.2:1.0"
|
|
left-handed = true
|
|
```
|
|
devnode:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The devnode of the device.
|
|
|
|
The values are usually not-stable across PC restarts.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.devnode = "/dev/input/event4"
|
|
left-handed = true
|
|
```
|
|
is-keyboard:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the devices has been identified as a keyboard.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-keyboard = false
|
|
left-handed = true
|
|
```
|
|
is-pointer:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the devices has been identified as a pointer.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-pointer = false
|
|
left-handed = true
|
|
```
|
|
is-touch:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the devices has been identified as a touch device.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-touch = true
|
|
tap-enabled = true
|
|
```
|
|
is-tablet-tool:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the devices has been identified as a tablet tool.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-tablet-tool = true
|
|
tap-enabled = true
|
|
```
|
|
is-tablet-pad:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the devices has been identified as a tablet pad.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-tablet-tool = true
|
|
tap-enabled = true
|
|
```
|
|
is-gesture:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the devices has been identified as a switch.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-switch = true
|
|
```
|
|
|
|
|
|
Input:
|
|
kind: table
|
|
description: |
|
|
Describes configuration to apply to an input device.
|
|
|
|
- Example: To make mice left handed:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-pointer = true
|
|
left-handed = true
|
|
```
|
|
fields:
|
|
tag:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
Assigns a name to the rule in the `match` field.
|
|
|
|
This only has an effect when used in the top-level `inputs` array.
|
|
match:
|
|
ref: InputMatch
|
|
required: true
|
|
description: |
|
|
The rule by which the input devices to modify are selected.
|
|
accel-profile:
|
|
ref: AccelProfile
|
|
required: false
|
|
description: |
|
|
The acceleration profile to use.
|
|
|
|
See the libinput documentation for more details.
|
|
accel-speed:
|
|
kind: number
|
|
required: false
|
|
description: |
|
|
The acceleration speed to use.
|
|
|
|
Values should be in the range -1 to 1.
|
|
|
|
See the libinput documentation for more details.
|
|
tap-enabled:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether tap is enabled for this device.
|
|
|
|
See the libinput documentation for more details.
|
|
tap-drag-enabled:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether tap drag is enabled for this device.
|
|
|
|
See the libinput documentation for more details.
|
|
tap-drag-lock-enabled:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether tap drag lock is enabled for this device.
|
|
|
|
See the libinput documentation for more details.
|
|
left-handed:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the device is left handed.
|
|
|
|
See the libinput documentation for more details.
|
|
natural-scrolling:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Whether the device uses natural scrolling.
|
|
|
|
See the libinput documentation for more details.
|
|
px-per-wheel-scroll:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
The number of pixels to scroll for each scroll wheel dedent.
|
|
transform-matrix:
|
|
kind: array
|
|
items:
|
|
kind: array
|
|
items:
|
|
kind: number
|
|
required: false
|
|
description: |
|
|
A transformation matrix to apply to each motion event of this device.
|
|
The matrix should be 2x2.
|
|
|
|
- Example: To slow down the mouse to 35% of normal speed:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.is-pointer = true
|
|
transform-matrix = [[0.35, 0], [0, 0.35]]
|
|
```
|
|
keymap:
|
|
ref: Keymap
|
|
required: false
|
|
description: |
|
|
The keymap to use for this device.
|
|
|
|
This overrides the global keymap. The keymap becomes active when a key is pressed.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.name = "ZSA Technology Labs Inc ErgoDox EZ"
|
|
keymap.name = "external"
|
|
```
|
|
on-lid-closed:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute when the laptop lid is closed.
|
|
|
|
This should only be used in the top-level inputs array.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.name = "<switch name>"
|
|
on-lid-closed = { type = "configure-connector", connector = { match.name = "eDP-1", enabled = false } }
|
|
on-lid-opened = { type = "configure-connector", connector = { match.name = "eDP-1", enabled = true } }
|
|
```
|
|
on-lid-opened:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute when the laptop lid is opened.
|
|
|
|
This should only be used in the top-level inputs array.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[inputs]]
|
|
match.name = "<switch name>"
|
|
on-lid-closed = { type = "configure-connector", connector = { match.name = "eDP-1", enabled = false } }
|
|
on-lid-opened = { type = "configure-connector", connector = { match.name = "eDP-1", enabled = true } }
|
|
```
|
|
on-converted-to-laptop:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute when the convertible device is converted to a laptop.
|
|
|
|
This should only be used in the top-level inputs array.
|
|
on-converted-to-tablet:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute when the convertible device is converted to a tablet.
|
|
|
|
This should only be used in the top-level inputs array.
|
|
|
|
|
|
AccelProfile:
|
|
kind: string
|
|
values:
|
|
- value: Flat
|
|
description: The flat profile.
|
|
- value: Adaptive
|
|
description: The adaptive profile.
|
|
description: |
|
|
The acceleration profile to apply to an input device.
|
|
|
|
See the libinput documentation for more details.
|
|
|
|
|
|
LogLevel:
|
|
kind: string
|
|
description: A log level.
|
|
values:
|
|
- value: trace
|
|
description: Trace log level.
|
|
- value: debug
|
|
description: Debug log level.
|
|
- value: info
|
|
description: Info log level.
|
|
- value: warn
|
|
description: Warn log level.
|
|
- value: error
|
|
description: Error log level.
|
|
|
|
|
|
Mode:
|
|
kind: table
|
|
description: |
|
|
The mode of a display.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[outputs]]
|
|
match.serial-number = "33K03894SL0"
|
|
mode = { width = 1920, height = 1080, refresh-rate = 59.94 }
|
|
```
|
|
fields:
|
|
width:
|
|
kind: number
|
|
integer_only: true
|
|
required: true
|
|
description: The width of the mode.
|
|
height:
|
|
kind: number
|
|
integer_only: true
|
|
required: true
|
|
description: The height of the mode.
|
|
refresh-rate:
|
|
kind: number
|
|
required: false
|
|
description: The refresh rate of the mode in HZ.
|
|
|
|
|
|
OutputMatch:
|
|
kind: variable
|
|
description: |
|
|
Rules to match one of the outputs used by the compositor.
|
|
variants:
|
|
- kind: array
|
|
items:
|
|
ref: OutputMatch
|
|
description: |
|
|
This rule matches if any of the rules in the array match.
|
|
- kind: table
|
|
description: |
|
|
Describes a rule that matches a subset of outputs.
|
|
|
|
This rule matches if all of the specified fields match.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[outputs]]
|
|
name = "right"
|
|
match.serial-number = "33K03894SL0"
|
|
x = 1920
|
|
y = 0
|
|
```
|
|
fields:
|
|
name:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The name of another OutputMatch rule.
|
|
|
|
For this rule to match, the referenced rule must match. The name of the rule
|
|
should have been defined in the top-level `outputs` array.
|
|
|
|
This can be used to easily refer to outputs.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-l = { type = "configure-output", output = { match.name = "right", transform = "none" } }
|
|
alt-r = { type = "configure-output", output = { match.name = "right", transform = "rotate-90" } }
|
|
|
|
[[outputs]]
|
|
name = "right"
|
|
match.serial-number = "33K03894SL0"
|
|
```
|
|
connector:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The name of the connector the output is connected to.
|
|
|
|
You can find out the name of the connector by running `jay randr`.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[outputs]]
|
|
match.connector = "DP-1"
|
|
scale = 1.25
|
|
```
|
|
serial-number:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The serial number of the output.
|
|
|
|
You can find out the serial number by running `jay randr`.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[outputs]]
|
|
match.serial-number = "33K03894SL0"
|
|
scale = 1.25
|
|
```
|
|
manufacturer:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The manufacturer of the output.
|
|
|
|
You can find out the manufacturer by running `jay randr`.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[outputs]]
|
|
match.manufacturer = "BNQ"
|
|
scale = 1.25
|
|
```
|
|
model:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The model of the output.
|
|
|
|
You can find out the model by running `jay randr`.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[outputs]]
|
|
match.model = "BenQ GW2480"
|
|
scale = 1.25
|
|
```
|
|
|
|
|
|
Output:
|
|
kind: table
|
|
description: |
|
|
Describes configuration to apply to an output.
|
|
|
|
- Example: To set the scale of an output.
|
|
|
|
```toml
|
|
[[outputs]]
|
|
match.serial-number = "33K03894SL0"
|
|
scale = 1.25
|
|
```
|
|
|
|
fields:
|
|
name:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
Assigns a name to the rule in the `match` field.
|
|
|
|
This only has an effect when used in the top-level `outputs` array.
|
|
match:
|
|
ref: OutputMatch
|
|
required: true
|
|
description: |
|
|
The rule by which the outputs to modify are selected.
|
|
x:
|
|
kind: number
|
|
integer_only: true
|
|
minimum: 0
|
|
required: false
|
|
description: |
|
|
The x coordinate of the output in compositor space.
|
|
y:
|
|
kind: number
|
|
integer_only: true
|
|
minimum: 0
|
|
required: false
|
|
description: |
|
|
The y coordinate of the output in compositor space.
|
|
scale:
|
|
kind: number
|
|
minimum: 0
|
|
exclusive_minimum: true
|
|
required: false
|
|
description: |
|
|
The scale of the output.
|
|
transform:
|
|
ref: Transform
|
|
required: false
|
|
description: |
|
|
The transform of the output.
|
|
mode:
|
|
ref: Mode
|
|
required: false
|
|
description: |
|
|
The mode of the output.
|
|
|
|
If the refresh rate is not specified, the first mode with the specified width and
|
|
height is used.
|
|
|
|
|
|
Transform:
|
|
kind: string
|
|
description: An output transformation.
|
|
values:
|
|
- value: none
|
|
description: No transformation.
|
|
- value: rotate-90
|
|
description: The content of the output is rotated 90 degrees counter clockwise.
|
|
- value: rotate-180
|
|
description: The content of the output is rotated 180 degrees counter clockwise.
|
|
- value: rotate-270
|
|
description: The content of the output is rotated 270 degrees counter clockwise.
|
|
- value: flip
|
|
description: The content of the output is flipped around the vertical axis.
|
|
- value: flip-rotate-90
|
|
description: |
|
|
The content of the output is flipped around the vertical axis and then rotated
|
|
90 degrees counter clockwise.
|
|
- value: flip-rotate-180
|
|
description: |
|
|
The content of the output is flipped around the vertical axis and then rotated
|
|
180 degrees counter clockwise.
|
|
- value: flip-rotate-270
|
|
description: |
|
|
The content of the output is flipped around the vertical axis and then rotated
|
|
270 degrees counter clockwise.
|
|
|
|
|
|
MessageFormat:
|
|
kind: string
|
|
description: A message format used by status programs.
|
|
values:
|
|
- value: plain
|
|
description: The messages are in plain text.
|
|
- value: pango
|
|
description: The messages contain pango markup.
|
|
- value: i3bar
|
|
description: The messages are in i3bar format.
|
|
|
|
|
|
Status:
|
|
kind: table
|
|
description: |
|
|
The configuration of a status program whose output will be shown in the bar.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[status]
|
|
format = "i3bar"
|
|
exec = "i3status"
|
|
```
|
|
fields:
|
|
format:
|
|
ref: MessageFormat
|
|
required: false
|
|
description: The format used by the program.
|
|
exec:
|
|
ref: Exec
|
|
required: true
|
|
description: The program that will emit the status messages.
|
|
i3bar-separator:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The separator to be used between i3bar components.
|
|
|
|
The default is ` | `.
|
|
|
|
|
|
Theme:
|
|
kind: table
|
|
description: |
|
|
The theme of the compositor.
|
|
fields:
|
|
attention-requested-bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of title that have requested attention.
|
|
bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of the desktop.
|
|
bar-bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of the bar.
|
|
bar-status-text-color:
|
|
ref: Color
|
|
required: false
|
|
description: The color of the status text in the bar.
|
|
border-color:
|
|
ref: Color
|
|
required: false
|
|
description: The color of the borders between windows.
|
|
captured-focused-title-bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of focused titles that are being recorded.
|
|
captured-unfocused-title-bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of unfocused titles that are being recorded.
|
|
focused-inactive-title-bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of focused titles that are inactive.
|
|
focused-inactive-title-text-color:
|
|
ref: Color
|
|
required: false
|
|
description: The text color of focused titles that are inactive.
|
|
focused-title-bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of focused titles.
|
|
focused-title-text-color:
|
|
ref: Color
|
|
required: false
|
|
description: The text color of focused titles.
|
|
separator-color:
|
|
ref: Color
|
|
required: false
|
|
description: The color of the separator between titles and window content.
|
|
unfocused-title-bg-color:
|
|
ref: Color
|
|
required: false
|
|
description: The background color of unfocused titles.
|
|
unfocused-title-text-color:
|
|
ref: Color
|
|
required: false
|
|
description: The text color of unfocused titles.
|
|
highlight-color:
|
|
ref: Color
|
|
required: false
|
|
description: Color used to highlight parts of the UI.
|
|
border-width:
|
|
kind: number
|
|
integer_only: true
|
|
minimum: 0
|
|
required: false
|
|
description: The width of borders between windows.
|
|
title-height:
|
|
kind: number
|
|
integer_only: true
|
|
minimum: 0
|
|
required: false
|
|
description: The height of tabs.
|
|
font:
|
|
kind: string
|
|
required: false
|
|
description: The name of the font to use.
|
|
|
|
|
|
|
|
Config:
|
|
kind: table
|
|
description: |
|
|
This is the top-level table.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
keymap = """
|
|
xkb_keymap {
|
|
xkb_keycodes { include "evdev+aliases(qwerty)" };
|
|
xkb_types { include "complete" };
|
|
xkb_compat { include "complete" };
|
|
xkb_symbols { include "pc+us+inet(evdev)" };
|
|
};
|
|
"""
|
|
|
|
on-graphics-initialized = { type = "exec", exec = "mako" }
|
|
|
|
[shortcuts]
|
|
alt-h = "focus-left"
|
|
alt-j = "focus-down"
|
|
alt-k = "focus-up"
|
|
alt-l = "focus-right"
|
|
|
|
alt-shift-h = "move-left"
|
|
alt-shift-j = "move-down"
|
|
alt-shift-k = "move-up"
|
|
alt-shift-l = "move-right"
|
|
|
|
alt-d = "split-horizontal"
|
|
alt-v = "split-vertical"
|
|
|
|
alt-t = "toggle-split"
|
|
alt-m = "toggle-mono"
|
|
alt-u = "toggle-fullscreen"
|
|
|
|
alt-f = "focus-parent"
|
|
alt-shift-c = "close"
|
|
alt-shift-f = "toggle-floating"
|
|
Super_L = { type = "exec", exec = "alacritty" }
|
|
alt-p = { type = "exec", exec = "bemenu-run" }
|
|
alt-q = "quit"
|
|
alt-shift-r = "reload-config-toml"
|
|
|
|
ctrl-alt-F1 = { type = "switch-to-vt", num = 1 }
|
|
ctrl-alt-F2 = { type = "switch-to-vt", num = 2 }
|
|
# ...
|
|
|
|
alt-F1 = { type = "show-workspace", name = "1" }
|
|
alt-F2 = { type = "show-workspace", name = "2" }
|
|
# ...
|
|
|
|
alt-shift-F1 = { type = "move-to-workspace", name = "1" }
|
|
alt-shift-F2 = { type = "move-to-workspace", name = "2" }
|
|
# ...
|
|
```
|
|
fields:
|
|
keymap:
|
|
ref: Keymap
|
|
required: false
|
|
description: |
|
|
The keymap to use.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
keymap = """
|
|
xkb_keymap {
|
|
xkb_keycodes { include "evdev+aliases(qwerty)" };
|
|
xkb_types { include "complete" };
|
|
xkb_compat { include "complete" };
|
|
xkb_symbols { include "pc+us+inet(evdev)" };
|
|
};
|
|
"""
|
|
```
|
|
repeat-rate:
|
|
ref: RepeatRate
|
|
required: false
|
|
description: |
|
|
The keyboard repeat rate.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
repeat-rate = { rate = 25, delay = 250 }
|
|
```
|
|
shortcuts:
|
|
kind: map
|
|
values:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
The compositor shortcuts.
|
|
|
|
The keys should be in the following format:
|
|
|
|
```
|
|
(MOD-)*KEYSYM
|
|
```
|
|
|
|
`MOD` should be one of `shift`, `lock`, `ctrl`, `mod1`, `mod2`, `mod3`, `mod4`,
|
|
`mod5`, `caps`, `alt`, `num`, `logo`, or `release`.
|
|
|
|
Using the `release` modifier causes the shortcut to trigger when the key is
|
|
released.
|
|
|
|
`KEYSYM` should be the name of a keysym. The authorative location for these names
|
|
is [1] with the `XKB_KEY_` prefix removed.
|
|
|
|
The keysym should be the unmodified keysym. E.g. `shift-q` not `shift-Q`.
|
|
|
|
[1]: https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[shortcuts]
|
|
alt-q = "quit"
|
|
```
|
|
complex-shortcuts:
|
|
kind: map
|
|
values:
|
|
ref: ComplexShortcut
|
|
required: false
|
|
description: |
|
|
Complex compositor shortcuts.
|
|
|
|
The keys should have the same format as in the `shortcuts` table.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[complex-shortcuts.XF86AudioRaiseVolume]
|
|
mod-mask = "alt"
|
|
action = { type = "exec", exec = ["pactl", "set-sink-volume", "0", "+10%"] }
|
|
```
|
|
on-graphics-initialized:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute when the graphics have been initialized for the first time.
|
|
|
|
This is a good place to start graphical applications.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
on-graphics-initialized = { type = "exec", exec = "mako" }
|
|
```
|
|
status:
|
|
ref: Status
|
|
required: false
|
|
description: |
|
|
The status program that will be used for the status text.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[status]
|
|
format = "i3bar"
|
|
exec = "i3status"
|
|
```
|
|
outputs:
|
|
kind: array
|
|
items:
|
|
ref: Output
|
|
required: false
|
|
description: |
|
|
An array of output configurations.
|
|
|
|
This can be used to configure outputs and create named outputs that can be
|
|
referred to in actions.
|
|
|
|
The configurations defined here will only be applied the first time matching
|
|
outputs are connected to the compositor after the compositor has started.
|
|
If you want change the configuration afterwards, use `jay randr` or a
|
|
`configure-output` action.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[outputs]]
|
|
name = "left"
|
|
match.serial-number = "33K03894SL0"
|
|
x = 0
|
|
y = 0
|
|
|
|
[[outputs]]
|
|
name = "right"
|
|
match.serial-number = "ETW1M02062SL0"
|
|
x = 1920
|
|
y = 0
|
|
```
|
|
connectors:
|
|
kind: array
|
|
items:
|
|
ref: Connector
|
|
required: false
|
|
description: |
|
|
An array of connector configurations.
|
|
|
|
This can be used to configure connectors.
|
|
|
|
The configurations defined here will only be applied when the connector is first
|
|
discovered by the compositor. This usually never happens after the compositor has
|
|
started unless you attach an external graphics card.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[[connectors]]
|
|
name = "eDP-1"
|
|
enabled = false
|
|
```
|
|
workspace-capture:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Configures whether newly created workspaces can be captured.
|
|
|
|
The default is `true`.
|
|
env:
|
|
kind: map
|
|
values:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
Defines environment variables that will be set for all applications.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[env]
|
|
GTK_THEME = "Adwaita:dark"
|
|
```
|
|
on-startup:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute as early as possible when the compositor starts.
|
|
|
|
At this point, graphics have not yet been initialized. You should not use this
|
|
to start graphical applications. See `on-graphics-initialized`.
|
|
|
|
This setting has no effect during configuration reloads.
|
|
keymaps:
|
|
kind: array
|
|
items:
|
|
ref: Keymap
|
|
required: false
|
|
description: |
|
|
Defines named keymaps.
|
|
|
|
These keymaps can be used to easily switch between keymaps for different
|
|
keyboards.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
keymap.name = "laptop"
|
|
|
|
[shortcuts]
|
|
alt-j = { type = "set-keymap", keymap.name = "laptop" }
|
|
alt-k = { type = "set-keymap", keymap.name = "external" }
|
|
|
|
[[keymaps]]
|
|
name = "laptop"
|
|
path = "./laptop-keymap.xkb"
|
|
|
|
[[keymaps]]
|
|
name = "external"
|
|
path = "./external-keymap.xkb"
|
|
```
|
|
log-level:
|
|
ref: LogLevel
|
|
required: false
|
|
description: |
|
|
Sets the log level of the compositor.
|
|
|
|
This setting cannot be changed by re-loading the configuration. Use
|
|
`jay set-log-level` instead.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
log-level = "debug"
|
|
```
|
|
theme:
|
|
ref: Theme
|
|
required: false
|
|
description: |
|
|
Sets the theme of the compositor.
|
|
gfx-api:
|
|
ref: GfxApi
|
|
required: false
|
|
description: |
|
|
Sets the graphics API used for newly discovered DRM devices.
|
|
|
|
Changing this setting after the compositor has started usually has no effect
|
|
unless you attach an external graphics card. Use `jay randr` to change the API
|
|
used by individual devices at runtime.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
gfx-api = "Vulkan"
|
|
```
|
|
drm-devices:
|
|
kind: array
|
|
items:
|
|
ref: DrmDevice
|
|
required: false
|
|
description: |
|
|
Names and configures DRM devices.
|
|
|
|
These settings are only applied to devices discovered after the configuration
|
|
has been loaded. Therefore changing these settings usually has no effect at
|
|
runtime unless you attach an external graphics card. You can use `jay randr` or
|
|
a `configure-drm-device` Action to change these settings at runtime.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
render-device.name = "dedicated"
|
|
|
|
[[drm-devices]]
|
|
name = "dedicated"
|
|
match = { pci-vendor = 0x1002, pci-model = 0x73ff }
|
|
|
|
[[drm-devices]]
|
|
name = "integrated"
|
|
match = { pci-vendor = 0x1002, pci-model = 0x164e }
|
|
gfx-api = "OpenGl"
|
|
```
|
|
direct-scanout:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Configured whether the compositor attempts direct scanout.
|
|
explicit-sync:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Configures whether the compositor supports explicit sync.
|
|
|
|
This cannot be changed after the compositor has started.
|
|
|
|
The default is `true`.
|
|
render-device:
|
|
ref: DrmDeviceMatch
|
|
required: false
|
|
description: |
|
|
Selects the device to use for rendering in a system with multiple GPUs.
|
|
|
|
The first device that matches will be used.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
render-device.name = "dedicated"
|
|
|
|
[[drm-devices]]
|
|
name = "dedicated"
|
|
match = { pci-vendor = 0x1002, pci-model = 0x73ff }
|
|
```
|
|
inputs:
|
|
kind: array
|
|
items:
|
|
ref: Input
|
|
required: false
|
|
description: |
|
|
Names and configures input devices.
|
|
|
|
These settings are only applied to devices connected after the configuration
|
|
has been loaded. You can apply setting without re-connecting the device by using
|
|
`jay input` or a `configure-input` Action.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
render-device.name = "dedicated"
|
|
|
|
[[inputs]]
|
|
match.is-pointer = true
|
|
left-handed = true
|
|
transform-matrix = [[0.35, 0], [0, 0.35]]
|
|
tap-enabled = true
|
|
```
|
|
on-idle:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute when the compositor becomes idle.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
on-idle = { type = "exec", exec = "lock" }
|
|
```
|
|
idle:
|
|
ref: Idle
|
|
required: false
|
|
description: |
|
|
The configuration of the idle timeout.
|
|
|
|
Changing thise field after compositor startup has no effect. Use `jay idle`
|
|
or a `configure-idle` action to change the idle timeout at runtime.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
idle.minutes = 10
|
|
```
|
|
focus-follows-mouse:
|
|
kind: boolean
|
|
required: false
|
|
description: |
|
|
Configures whether moving the mouse over a window automatically moves the keyboard
|
|
focus to that window.
|
|
|
|
The default is `true`.
|
|
|
|
|
|
Idle:
|
|
kind: table
|
|
description: |
|
|
The definition of an idle timeout.
|
|
|
|
Omitted values are set to 0. If all values are 0, the idle timeout is disabled.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
idle.minutes = 10
|
|
```
|
|
fields:
|
|
minutes:
|
|
description: The number of minutes before going idle.
|
|
kind: number
|
|
integer_only: true
|
|
minimum: 0
|
|
required: false
|
|
seconds:
|
|
description: The number of seconds before going idle.
|
|
kind: number
|
|
integer_only: true
|
|
minimum: 0
|
|
required: false
|
|
|
|
|
|
RepeatRate:
|
|
kind: table
|
|
description: |
|
|
Describes a keyboard repeat rate.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
repeat-rate = { rate = 25, delay = 250 }
|
|
```
|
|
fields:
|
|
rate:
|
|
kind: number
|
|
integer_only: true
|
|
required: true
|
|
description: The number of times to repeat per second.
|
|
delay:
|
|
kind: number
|
|
integer_only: true
|
|
required: true
|
|
description: |
|
|
The number of milliseconds after a key is pressed before repeating begins.
|
|
|
|
|
|
ComplexShortcut:
|
|
kind: table
|
|
description: |
|
|
Describes a complex shortcut.
|
|
|
|
- Example:
|
|
|
|
```toml
|
|
[complex-shortcuts.XF86AudioRaiseVolume]
|
|
mod-mask = "alt"
|
|
action = { type = "exec", exec = ["pactl", "set-sink-volume", "0", "+10%"] }
|
|
```
|
|
fields:
|
|
mod-mask:
|
|
kind: string
|
|
required: false
|
|
description: |
|
|
The mod mask to apply to this shortcut.
|
|
|
|
Should be a string containing modifiers concatenated by `-`. See the description
|
|
of `Config.shortcuts` for more details.
|
|
|
|
If this field is omitted, all modifiers are included in the mask.
|
|
|
|
- Example:
|
|
|
|
To raise the volume whenever the XF86AudioRaiseVolume key is pressed regardless
|
|
of any modifiers except `alt`:
|
|
|
|
```toml
|
|
[complex-shortcuts.XF86AudioRaiseVolume]
|
|
mod-mask = "alt"
|
|
action = { type = "exec", exec = ["pactl", "set-sink-volume", "0", "+10%"] }
|
|
```
|
|
|
|
Set `mod-mask = ""` to ignore all modifiers.
|
|
action:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
The action to execute.
|
|
|
|
Omitting this is the same as setting it to `"none"`.
|
|
latch:
|
|
ref: Action
|
|
required: false
|
|
description: |
|
|
An action to execute when the key is released.
|
|
|
|
This registers an action to be executed when the key triggering the shortcut is
|
|
released. The active modifiers are ignored for this purpose.
|
|
|
|
- Example:
|
|
|
|
To mute audio while the key is pressed:
|
|
|
|
```toml
|
|
[complex-shortcuts.alt-x]
|
|
action = { type = "exec", exec = ["pactl", "set-sink-mute", "0", "1"] }
|
|
latch = { type = "exec", exec = ["pactl", "set-sink-mute", "0", "0"] }
|
|
```
|
|
|
|
Audio will be un-muted once `x` key is released, regardless of any other keys
|
|
that are pressed at the time.
|