zed-industries/zed · critical
wl_seat below required version: {} < {}
Error message
wl_seat below required version: {} < {} What it means
The Wayland client negotiates wl_seat versions and requires at least version 5 because it depends on the wl_pointer.frame event (introduced in wl_seat v5); it clamps the advertised version into [5, 9]. If the compositor binds wl_seat with a lower version, the client panics at startup with the advertised and required versions instead of continuing without frame events.
Source
Thrown at crates/gpui_linux/src/linux/wayland/client.rs:681
return;
}
let Some(style) = self.cursor_style else {
return;
};
let serial = self.serial_tracker.get(SerialKind::MouseEnter);
if let Some(cursor_shape_device) = &self.cursor_shape_device {
cursor_shape_device.set_shape(serial.as_raw(), to_shape(style));
return;
}
let Some(focused_window) = self.mouse_focused_window.clone() else {
log::warn!(
"wayland: no focused surface to restore cursor style {:?} after hide; cursor may stay invisible",
style
);
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>>);
View on GitHub (pinned to 9d272b0363)
Solutions
- Run Zed under XWayland/X11 instead of native Wayland (log out and pick the X11 session, or force the X11 backend per Zed's platform docs)
- Update the compositor to a version that binds wl_seat >= 5
- Report the compositor name and version so the minimum can be revisited or the check relaxed
Defensive patterns
Strategy: fallback
Validate before calling
# shell: check compositor wl_seat version before launching (wayland-info from wayland-utils) wayland-info | grep -A1 wl_seat # shows advertised version; need >= 5
Prevention
- On compositors older than wl_seat v5, use the X11/XWayland session for Zed
- Keep the compositor updated; wl_seat >= 5 has been standard for years
- Include compositor name/version in bug reports so the requirement can be revisited
When it happens
Trigger: Starting Zed on a Wayland compositor that advertises wl_seat version < 5 — old compositor builds, minimal/nested Wayland servers, or remote-desktop compositors with stale protocol support.
Common situations: Older distro compositors; nested compositors (e.g. for testing); compositors that never bumped wl_seat despite supporting pointer events otherwise.
Related errors
- wl_output 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/68a631ea36de5f37.
Report an issue: GitHub.