use wayland_client::globals::registry_queue_init; use wayland_client::globals::GlobalListContents; use wayland_client::protocol::wl_registry::{Event, WlRegistry}; use wayland_client::{Connection, Dispatch, QueueHandle}; struct Ls; impl Dispatch for Ls { fn event( _state: &mut Self, _registry: &WlRegistry, _event: Event, _data: &GlobalListContents, _conn: &Connection, _qhandle: &QueueHandle, ) { } } fn main() { let conn = Connection::connect_to_env().unwrap(); let (globals, _queue) = registry_queue_init::(&conn).unwrap(); for g in globals.contents().clone_list() { println!("{}: {} v{}", g.name, g.interface, g.version); } }