Rust libraries for Wayland screen capture, XDG Portal integration, and video processing.
| Crate | Version | Description |
|---|---|---|
| lamco-wayland | Meta-crate with all libraries | |
| lamco-portal | XDG Desktop Portal integration | |
| lamco-pipewire | PipeWire screen capture | |
| lamco-video | Video processing & RDP bitmap conversion |
[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(())
}| 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 |
- 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
- 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.
┌─────────────────────────────────────────────────────────────────┐
│ 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
| Compositor | Status | Backend |
|---|---|---|
| GNOME | ✅ Tested | xdg-desktop-portal-gnome |
| KDE Plasma | ✅ Tested | xdg-desktop-portal-kde |
| Sway / wlroots | ✅ Tested | xdg-desktop-portal-wlr |
| Hyprland | xdg-desktop-portal-hyprland | |
| Other Wayland | Depends on portal backend | |
| X11 | ❌ Not supported | Wayland only |
# 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 --openThese 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.
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
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.