zed-industries/zed · critical
wl_output below required version: {} < {}
Error message
wl_output below required version: {} < {} What it means
Analogous seat check for outputs: the Wayland client requires wl_output version >= 2 (the version that exposes complete geometry/mode/scale information it relies on) and clamps the advertised version into [2, 4]. A compositor advertising wl_output v1 causes an immediate startup panic with the advertised and required versions.
Source
Thrown at crates/gpui_linux/src/linux/wayland/client.rs:695
);
return;
};
let Some(wl_pointer) = self.wl_pointer.clone() else {
log::warn!(
"wayland: no wl_pointer to restore cursor style {:?} after hide; cursor may stay invisible",
style
);
return;
};
let scale = focused_window.primary_output_scale();
self.cursor.set_icon(
&wl_pointer,
serial.as_raw(),
cursor_style_to_icon_names(style),
scale,
);
}
}
#[derive(Clone)]
pub struct WaylandClient(Rc<RefCell<WaylandClientState>>);
impl Drop for WaylandClient {
fn drop(&mut self) {
let mut state = self.0.borrow_mut();
state.windows.clear();
if let Some(wl_pointer) = &state.wl_pointer {
wl_pointer.release();
}
if let Some(cursor_shape_device) = &state.cursor_shape_device {
cursor_shape_device.destroy();
}
if let Some(data_device) = &state.data_device {
data_device.release();
}View on GitHub (pinned to 9d272b0363)
Solutions
- Run Zed under the X11/XWayland session instead
- Update the compositor / Wayland stack so wl_output >= 2 is negotiated
- Report the compositor name and version if a current compositor still triggers it
Defensive patterns
Strategy: fallback
Validate before calling
# shell: check compositor wl_output version before launching wayland-info | grep -A1 wl_output # advertised version; need >= 2
Prevention
- Test exotic/nested compositors with the X11 backend before deploying Zed on them
- Keep the compositor and wayland libraries updated so v2+ is negotiated
- Report compositors that still advertise wl_output v1
When it happens
Trigger: Starting Zed on a Wayland session whose compositor binds wl_output with version 1 — very old or minimal compositors that predate the wl_output v2 additions.
Common situations: Ancient compositor versions; toy/reference compositors; environments where an outdated Wayland library stack caps negotiated versions.
Related errors
- wl_seat below required version: {} < {}
- blocking sender returned without value
- `{}` must be a positive normal number or `randr`. Got `{}`
- `{}` must be a positive number or `randr`. Got `{}`
- X11 connection: File descriptor passing failed
AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-08-20).
Data as JSON: /api/errors/4ebdf25a6d6e5d72.
Report an issue: GitHub.