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

Miscellaneous

This chapter covers smaller configuration options that don’t warrant their own chapter.

Color Management

The Wayland color management protocol lets applications communicate color space information to the compositor. It is disabled by default.

[color-management]
enabled = true

Note

Changing this setting has no effect on applications that are already running.

The CLI and control center (Color Management pane) can also toggle it:

~$ jay color-management enable
~$ jay color-management disable
~$ jay color-management status

See HDR & Color Management for a complete guide to HDR output and the color management protocol.

Session Management

Jay implements the xdg_session_manager_v1 protocol. Applications that support it can ask the compositor to remember their windows across restarts. Jay stores each toplevel’s workspace, output, floating-window position, and fullscreen state, and restores them when the application re-creates the session after a compositor or application restart.

Session data is stored in a local SQLite database under Jay’s data directory (typically ~/.local/share/jay/db/).

The protocol is enabled by default. To disable it:

[session-management]
enabled = false

Note

Changing this setting has no effect on applications that are already running. Disabling session management only hides the global from newly connecting clients – previously stored session data is not deleted.

The control center’s Compositor pane has a Session Management toggle that flips this setting at runtime.

Libei

libei allows applications to emulate input events. By default, applications can only access libei through the portal (which prompts the user for permission). Setting enable-socket exposes an unauthenticated socket that any application can use without a prompt.

libei.enable-socket = false  # default

UI Drag

Controls whether workspaces and tiles can be dragged with the mouse, and how far the pointer must move before a drag begins.

ui-drag = { enabled = true, threshold = 10 }  # defaults

Set enabled = false to disable drag-and-drop rearrangement entirely. Increase threshold if you find yourself accidentally starting drags.

Floating Window Pin Icon

Floating windows can show a small pin icon. This is hidden by default.

[float]
show-pin-icon = true

Workspace Capture

Controls whether newly created workspaces can be captured (e.g. for screen sharing). The default is true.

workspace-capture = false

Simple Input Method

Jay includes a built-in XCompose-based input method. It is enabled by default but only activates when no external input method is running.

[simple-im]
enabled = true  # default

Related actions for use in shortcuts:

enable-simple-im
Enable the built-in input method
disable-simple-im
Disable the built-in input method
toggle-simple-im-enabled
Toggle the built-in input method
reload-simple-im
Reload XCompose files without restarting
enable-unicode-input
Start Unicode codepoint input (requires active IM)

Log Level

Sets the compositor’s log verbosity. Valid values: trace, debug, info, warn, error.

log-level = "info"

This setting cannot be changed by reloading the configuration. Use the CLI instead:

~$ jay set-log-level debug

Log File Cleanup

Jay creates a new log file each time it starts. Over time, old log files can accumulate. To automatically delete old log files on startup, use the clean-logs-older-than option:

clean-logs-older-than.days = 7

The table accepts weeks and days fields. At least one must be specified. They can be combined and accept fractional values:

[clean-logs-older-than]
weeks = 2
days = 3

Log files belonging to other running Jay instances (e.g. on another VT) are never deleted, even if they are older than the specified age.

Note

This setting only takes effect at compositor startup. It cannot be triggered by reloading the configuration.

Focus Follows Mouse

When enabled, moving the pointer over a window automatically gives it keyboard focus.

focus-follows-mouse = true  # default

Window Management Key

Designates a key that, while held, enables window management mode. In this mode, the left mouse button moves floating windows and the right mouse button resizes any window.

window-management-key = "Alt_L"

The value should be a keysym name (see the xkbcommon keysym list with the XKB_KEY_ prefix removed).

Middle-Click Paste

Controls whether middle-clicking pastes the primary selection. Changing this has no effect on running applications.

middle-click-paste = true  # default

Pointer Revert Key

Pressing this key cancels any active grabs, drags, or selections, returning the pointer to its default state. The default is Escape.

pointer-revert-key = "Escape"  # default

Set it to NoSymbol to disable this functionality entirely:

pointer-revert-key = "NoSymbol"

Fallback Output Mode

Determines which output is used when no particular output is specified – for example, when placing a newly opened window or choosing which workspace to move with move-to-output.

cursor
Use the output the cursor is on (default)
focus
Use the output the focused window is on
fallback-output-mode = "cursor"  # default

Focus History

Configures the behavior of the focus-prev and focus-next actions.

only-visible
Only cycle to windows that are already visible. Default: false.
same-workspace
Only cycle to windows on the current workspace. Default: false.

If only-visible is false, switching to a non-visible window will make it visible first.

[focus-history]
only-visible = true
same-workspace = true

Control Center Fonts

The [egui] table configures fonts used by the control center (an egui-based GUI).

[egui]
proportional-fonts = ["sans-serif", "Noto Sans", "Noto Color Emoji"]  # default
monospace-fonts = ["monospace", "Noto Sans Mono", "Noto Color Emoji"]  # default

Override these lists to use your preferred fonts in the control center UI.