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 theopen-control-centeraction). -
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.
- 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.
Window Search
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:
defaultordownscaled(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.