| Crates.io | lamco-wayland |
| lib.rs | lamco-wayland |
| version | 0.2.4 |
| created_at | 2025-12-15 20:49:14.685669+00 |
| updated_at | 2026-01-15 14:40:49.192346+00 |
| description | Wayland screen capture, XDG Portal integration, and video processing for Rust |
| homepage | https://lamco.ai |
| repository | https://github.com/lamco-admin/lamco-wayland |
| max_upload_size | |
| id | 1986745 |
| size | 86,191 |
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 |
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 | ⚠️ Should work | xdg-desktop-portal-hyprland |
| Other Wayland | ⚠️ May work | 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 --open
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.
Licensed under either of:
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.