lamco-wayland

Crates.iolamco-wayland
lib.rslamco-wayland
version0.2.4
created_at2025-12-15 20:49:14.685669+00
updated_at2026-01-15 14:40:49.192346+00
descriptionWayland screen capture, XDG Portal integration, and video processing for Rust
homepagehttps://lamco.ai
repositoryhttps://github.com/lamco-admin/lamco-wayland
max_upload_size
id1986745
size86,191
(glamberson)

documentation

https://docs.rs/lamco-wayland

README

Lamco Wayland Libraries

Rust libraries for Wayland screen capture, XDG Portal integration, and video processing.

Crates.io Documentation CI License

Crates

Crate Version Description
lamco-wayland Crates.io Meta-crate with all libraries
lamco-portal Crates.io XDG Desktop Portal integration
lamco-pipewire Crates.io PipeWire screen capture
lamco-video Crates.io Video processing & RDP bitmap conversion

Quick Start

[dependencies]
# Use everything
lamco-wayland = "0.1"

# Or select what you need
lamco-wayland = { version = "0.1", default-features = false, features = ["portal"] }
use lamco_wayland::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create portal manager
    let manager = PortalManager::with_default().await?;

    // Create session (triggers permission dialog)
    let session = manager.create_session("my-session".to_string(), None).await?;

    // Access PipeWire for video capture
    let fd = session.pipewire_fd();
    let streams = session.streams();

    println!("Capturing {} streams on PipeWire FD {}", streams.len(), fd);

    Ok(())
}

Features

Feature Default Description
portal Yes XDG Desktop Portal integration
pipewire Yes PipeWire screen capture
video Yes Video frame processing
full No All features from all sub-crates

Use Cases

  • RDP servers - Lamco RDP Server, custom implementations
  • VNC servers - Wayland support for VNC
  • Screen recording tools - Capture Wayland displays
  • Video conferencing - Screen sharing applications
  • Computer vision - Process Wayland screen content
  • Accessibility tools - Screen readers, automation

Requirements

  • Wayland compositor - GNOME, KDE Plasma, Sway, etc.
  • xdg-desktop-portal - Desktop Portal implementation
  • PipeWire - For video streaming (lamco-pipewire only)

Not compatible with X11 - Wayland only.

Architecture

┌─────────────────────────────────────────────────────────────────┐
│                        lamco-wayland                            │
├─────────────────┬─────────────────────┬─────────────────────────┤
│   lamco-portal  │   lamco-pipewire    │      lamco-video        │
│                 │                     │                         │
│  PortalManager  │  PipeWireManager    │  BitmapConverter        │
│  SessionHandle  │  VideoFrame         │  FrameProcessor         │
│  PortalConfig   │  PipeWireConfig     │  FrameDispatcher        │
└────────┬────────┴──────────┬──────────┴────────────┬────────────┘
         │                   │                       │
         ▼                   ▼                       ▼
   XDG Desktop Portal   PipeWire API            RDP Bitmap Format

Platform Support

Compositor Status Backend
GNOME ✅ Tested xdg-desktop-portal-gnome
KDE Plasma ✅ Tested xdg-desktop-portal-kde
Sway / wlroots ✅ Tested xdg-desktop-portal-wlr
Hyprland ⚠️ Should work xdg-desktop-portal-hyprland
Other Wayland ⚠️ May work Depends on portal backend
X11 ❌ Not supported Wayland only

Development

# Clone repository
git clone https://github.com/lamco-admin/lamco-wayland.git
cd lamco-wayland

# Build all crates
cargo build --workspace

# Run tests
cargo test --workspace

# Build documentation
cargo doc --no-deps --workspace --open

About

These libraries are extracted from the Lamco RDP Server project but designed for general use. They work with any Wayland compositor and are not RDP-specific.

Built with production-tested code from real-world remote desktop deployment.

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Links

Commit count: 0

cargo fmt