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

Control Center

The control center is Jay’s built-in graphical interface for inspecting and modifying compositor settings. It provides a convenient alternative to editing configuration files or running CLI commands – most settings that can be changed in config.toml or via the CLI can also be changed here.

Note

Changes made in the control center are not persisted across compositor restarts. To make settings permanent, add them to your config.toml.

Tip

The control center consumes GPU and CPU resources while open. Close it when not in use to avoid reducing compositor performance.

Opening the Control Center

  • Press alt-c (the default shortcut for the open-control-center action).

  • Run the CLI command:

    ~$ jay control-center
    

Interface Overview

The control center window has a sidebar on the left listing all available panes and a central panel area on the right.

  • Click a pane name in the sidebar to open it.
  • Multiple panes can be open at the same time – they appear as tabs in the panel area.
  • Drag pane tabs to rearrange them or to split the panel area into side-by-side or stacked layouts.
  • Close a pane by clicking its X button or middle-clicking its tab.

Panes

Compositor

General information and top-level controls for the running compositor.

Repository
Link to the Jay GitHub repository
Version
The running Jay version
PID
The compositor process ID
WAYLAND_DISPLAY
The Wayland socket name (shown when available)
Config DIR
Path to the active configuration directory (shown when available)
Libei Socket
Toggle the libei input emulation socket
LIBEI_SOCKET
The socket name (shown when the Libei Socket toggle is enabled)
Workspace Display Order
Dropdown to select how workspaces are ordered in the bar
Log Level
Dropdown to change the active log level at runtime (shown when the logger is available)
Log File
Click to copy the log file path to the clipboard (shown when the logger is available)

Buttons at the bottom:

  • Quit – stop the compositor.
  • Reload Config – reload the configuration file.
  • Switch to VT – switch to another virtual terminal (with a numeric input to select which one).

Outputs

The Outputs pane is the largest and most interactive pane. It has two sub-views: a visual arrangement editor and per-connector settings.

Arrangement editor

A 2D preview of your monitor layout. Monitors are drawn as labeled rectangles at their configured positions and sizes.

  • Click a monitor to select it (highlighted with a shadow).
  • Drag a selected monitor to reposition it.
  • Scroll to zoom in and out.
  • Middle-click drag or right-click drag to pan the viewport.
  • Arrow keys nudge the selected monitor by 1 pixel.
  • Snap to neighbor – when enabled, dragged monitors snap to the edges of neighboring monitors within a 10-pixel threshold. Hold Shift to temporarily invert the snapping behavior.
  • Guide lines – optional horizontal and vertical lines at the edges of all monitors, helping you align them precisely.

A Zoom To Fit checkbox in the top bar auto-scales the view to fit all monitors. It is disabled when you manually pan or zoom.

Arrangement settings (accessible via the Settings button):

Show guide lines
Draw alignment guide lines
Snap to neighbor
Snap edges when dragging (hold Shift to invert)
Show arrangement area
Toggle the visual arrangement sub-pane
Layout
How the arrangement and settings are split: Auto, Vertical, or Horizontal
Show disconnected heads
Include outputs that are no longer connected
Show disabled heads
Include outputs that are disabled

Staged changes

Changes made in the Outputs pane are staged – they are not applied immediately. Three buttons in the top bar control the workflow:

  • Test – validates the staged changes against the display backend without applying them. Errors are shown in the pane.
  • Commit – applies all staged changes. The pane title shows Outputs (*) when there are uncommitted changes.
  • Reset – discards all staged changes and reverts to the live state. This is displayed as a checkbox; checking it resets the staged changes.

When a staged value differs from the live value, the current (live) value is shown alongside with a ^ current annotation.

Per-connector settings

Each connected display appears as a collapsible section with the connector name, manufacturer, and model. Inside:

Serial Number
Read-only identifier
Enabled
Toggle the connector on or off
Position
X and Y coordinates in compositor space
Scale
Fractional scaling factor, with +/- buttons for fine adjustment
Mode
Resolution and refresh rate (dropdown when multiple modes are available)
Physical Size (mm)
Read-only physical dimensions in millimeters
Size
Read-only computed pixel dimensions of the output
Transform
Rotation and mirroring (none, rotate-90, rotate-180, rotate-270, flip, and flipped rotations)
Custom Brightness
Toggle whether to use a custom SDR content brightness
Brightness
Brightness value in cd/m^2 (shown when Custom Brightness is enabled)
Colorimetry
Color space (depends on monitor capabilities)
EOTF
Transfer function (depends on monitor capabilities)
Format
Framebuffer pixel format
Tearing
Tearing mode. When set to a “Fullscreen” mode, a Limit Windows checkbox appears; inside that, a Requests Tearing checkbox filters by whether the window has requested tearing.
VRR Active
Read-only indicator of whether VRR is currently active (only shown when the monitor supports VRR)
VRR
Variable refresh rate mode (only shown when the monitor supports VRR). When set to a “Fullscreen” mode, a Limit Windows checkbox appears; inside that, a Limit Content Types checkbox enables filtering by content type (Photos, Videos, Games checkboxes).
Non-desktop
Read-only indicator (Yes/No) of whether the connector is inherently non-desktop
Override
Force the connector to be treated as desktop or non-desktop
Blend Space
How colors are blended during compositing (sRGB or linear)
Use Native Gamut
Use the display’s advertised color primaries instead of assuming sRGB
Native Gamut
Read-only CIE xy primaries for red, green, blue, and white point
Limit Cursor HZ
Toggle to limit cursor-triggered refresh rate when VRR is active
Cursor HZ
Cursor refresh rate value (shown when Limit Cursor HZ is enabled)
Flip Margin (ms)
Read-only page-flip margin for this connector

Virtual Outputs

Manage headless virtual outputs. These are useful for screen sharing, testing, or running applications on a display without a physical monitor.

  • View the list of existing virtual outputs.
  • Add a new virtual output by entering a name and clicking Add.
  • Remove an existing virtual output by clicking its X button.

GPUs

Inspect and configure graphics cards (DRM devices). Each GPU appears as a collapsible section showing its device path and model name.

Vendor
Read-only GPU vendor name
Model
Read-only GPU model name
Devnode
Read-only device path
Syspath
Read-only sysfs path
PCI ID
Read-only vendor:model in hex
Dev
Read-only major:minor device numbers
API
Dropdown to select the graphics API – Vulkan (recommended) or the legacy OpenGL renderer
Primary Device
Checkbox to make this GPU the render device
Direct Scanout
Toggle direct scanout (bypasses composition for lower latency)
Flip Margin
Adjust the page-flip margin in milliseconds, with +/- buttons for 0.1 ms steps
Connectors
List of display connectors attached to this GPU

Input

The Input pane is divided into per-seat and per-device sections.

Per-seat settings

Each seat (typically just default) appears as a collapsible section:

Repeat Rate
Key repeat speed, with +/- 20 buttons
Repeat Delay
Initial delay before key repeat begins, with +/- 20 buttons
Cursor Size
Size of the seat cursor in pixels
Simple IM
Toggle the built-in XCompose-based input method
Hardware Cursor
Toggle hardware cursor rendering
Pointer Revert Key
Text field for the keysym name of the cancel key
Focus Follows Mouse
Toggle whether moving the pointer over a window gives it focus
Fallback Output Mode
Dropdown to choose between cursor-based and focus-based output selection

Below the settings grid:

  • Focus History – checkboxes for “Only Visible” and “Same Workspace”.
  • Reload Simple IM – button to reload XCompose files without restarting.
Keymap management

Each seat has a full keymap management section:

  • Copy Keymap – copies the current keymap text to the clipboard.
  • Load Default Keymap – restores the compositor’s default keymap.
  • Backup / Restore Keymap – save and restore a keymap backup.
  • Load Keymap from Clipboard – paste a keymap from the clipboard.
  • Create Keymap from Names – build a keymap from RMLVO (Rules, Model, Layout, Variant, Options) fields. Rules and Model have a text input and a “Default” checkbox; Layouts, Variants, and Options have text inputs only. Click Load to apply.

Per-device settings

Each input device appears as a collapsible section. The available settings depend on the device’s capabilities:

Seat
Dropdown to assign the device to a seat, with a Detach button. Shown for all devices.
Syspath / Devnode
Read-only device paths. Shown for all devices.
Capabilities
Read-only list (e.g. Keyboard, Pointer, Touch). Shown for all devices.
Natural Scrolling
Toggle scroll direction. Shown for devices that support it.
Scroll Distance (px)
Pixels per legacy scroll event. Shown for pointer devices.
Accel Profile
Dropdown: Flat or Adaptive. Shown for devices with acceleration.
Accel Speed
Numeric input (0.0 to 1.0). Shown for devices with acceleration.
Click Method
Dropdown: none, button-areas, clickfinger. Shown for devices that support it.
Tap Enabled
Toggle tap-to-click. Shown for touchpads.
Tap Drag Enabled
Toggle tap-and-drag. Shown for touchpads.
Tap Drag Lock Enabled
Toggle tap-drag lock. Shown for touchpads.
Left Handed
Swap primary and secondary buttons. Shown for devices that support it.
Middle Button Emulation
Simultaneous left+right produces middle click. Shown for devices that support it.
Output
Dropdown to map the device to a specific output (only has effect for touch and tablet devices), with a Detach button. Shown for all devices.
Transform Matrix
2x2 matrix applied to relative motion. Shown for pointer devices.
Calibration Matrix
2x3 matrix for absolute input calibration. Shown for devices that support it.
Device Keymap
Override the seat keymap for this device, with full keymap management UI and a “Use Seat Keymap” button to revert. Shown for keyboards.

Idle

Configure the screensaver and idle behavior:

Interval
Minutes and seconds of inactivity before the on-idle action fires
Grace period
Minutes and seconds of the warning phase (screen goes black but is not yet locked)
Inhibitors
Collapsible list showing which applications are currently preventing idle (e.g. video players), with a count in the header

Look and Feel

Visual customization with live preview. Changes take effect immediately.

Show Bar
Toggle the status bar
Bar Position
Dropdown to select the bar position
Show Titles
Toggle window title bars
Primary Selection
Toggle middle-click paste (requires application restart to take effect)
UI Drag
Toggle whether workspaces and tiles can be dragged
UI Drag Threshold (px)
Minimum distance in pixels before a drag begins
Float Pin Icon
Show the pin icon on floating windows even when not pinned
Float Above Fullscreen
Show floating windows above fullscreen windows
Font
Text field for the main compositor font family
Title Font
Override font for window title bars (empty = use main font)
Bar Font
Override font for the status bar (empty = use main font)

Three reset buttons at the bottom: Reset Sizes, Reset Colors, and Reset Fonts.

Sizes

A collapsible section with numeric inputs for every theme size: border widths, title heights, bar height, gaps, and other spacing values.

Colors

A collapsible section with color pickers for every theme color. Click a color swatch to open a full RGBA color picker with sliders and hex input. This includes colors for backgrounds, borders, text, the status bar, focused and unfocused windows, attention indicators, and more.

Clients

Inspect and manage connected Wayland clients.

A Filter toggle at the top enables the composable filter builder (see Filtering below). When filtering is off, all clients are shown.

Each client appears as a collapsible section showing its ID and process name. Expand it to see:

ID
Client identifier
PID
Process ID
UID
User ID
comm
Process name
exe
Executable path
Sandboxed
Whether the client is sandboxed (only shown for sandboxed clients)
Secure
Whether the client uses the privileged socket (only shown for secure clients)
Xwayland
Shown only for X11 clients
Sandbox Engine
Sandbox engine name (shown when sandboxed)
App ID
Sandbox application ID (shown when sandboxed)
Instance ID
Sandbox instance ID (shown when sandboxed)
Tag
The connection tag, if any
Kill
Button to forcefully disconnect the client
Capabilities
Collapsible list of effective Wayland capabilities
Windows
Collapsible list of all windows owned by this client

Click the open in new pane icon on any client to open a dedicated pane for that client, allowing you to keep it visible while browsing other panes.

Search and filter windows across the compositor using the composable filter builder (see Filtering below).

Each matching window appears as a collapsible section showing its title. Expand it to see:

ID
Window identifier
Title
Window title
Workspace
Which workspace the window is on
Type
Container, xdg_toplevel, X Window, or Placeholder
Tag
Toplevel tag (set via window rules); only shown for xdg_toplevel windows
X11 properties
Class, Instance, and Role (only shown for Xwayland windows)
App ID
Application identifier
Floating
Whether the window is floating
Visible
Whether the window is visible
Urgent
Whether the window has the urgency flag
Fullscreen
Whether the window is fullscreen
Content Type
The content type hint (photo, video, game), if set
Client
Full client details (same as the Clients pane)

Click the open in new pane icon on any window to open a dedicated pane for that window.

Xwayland

Manage the Xwayland compatibility layer for running X11 applications:

Enabled
Toggle Xwayland on or off
Scaling Mode
Dropdown: default or downscaled (renders at highest integer scale then downscales for sharper text on HiDPI)
DISPLAY
Read-only X11 display number (only shown when Xwayland is running)
Running
Whether Xwayland is currently running
PID
Xwayland process ID (only shown when Xwayland is running)
Kill
Button to forcefully terminate Xwayland (only shown when Xwayland is running)
Client
Collapsible section with full client details for the Xwayland process (only shown when Xwayland is running)

Color Management

Configure the Wayland color management protocol:

Enabled
Toggle the color management protocol for clients
Available
Read-only indicator of whether color management is available with the current renderer and hardware

Filtering

The Clients and Window Search panes share a composable filter system for narrowing down results. The filter builder works as follows:

At the top level, select a combinator or a leaf criterion from the dropdown:

  • Not – inverts a single child criterion.
  • All – all child criteria must match (AND).
  • Any – at least one child criterion must match (OR).
  • Exactly(n) – exactly n child criteria must match (with a numeric input for n).

Compound criteria contain a list of children. Click Add to append a new criterion; click the X button on any child to remove it. Criteria can be nested to arbitrary depth.

Leaf criteria vary by context:

Client criteria: Comm, Exe, Tag, Sandbox Engine, Sandbox App ID, Sandbox Instance ID (all regex-matched text fields with a “Regex” checkbox), Sandboxed, Is Xwayland (boolean), UID, PID (numeric inputs).

Window criteria: Title, App ID, Tag, Workspace, X Class, X Instance, X Role (all regex-matched text fields), Floating, Visible, Urgent, Fullscreen (boolean), Content Types (checkboxes for Photo, Video, Game), and Client (a nested client criterion builder for filtering by the owning client’s properties).

Text-matching criteria have a Regex checkbox. When unchecked, the input is matched as a literal string. When checked, it is treated as a regular expression. Invalid regex patterns show an error message.