docs.rs failed to build spice-client-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
๐ spice-client
A modern SPICE (Simple Protocol for Independent Computing Environments) client implementation in pure Rust with WebAssembly support.
โ ๏ธ Experimental: This library is under active development and APIs are subject to change. We're working on stabilizing the interface and will have a detailed roadmap available soon.
โจ Features
- Pure Rust - No C dependencies, memory safe implementation
- Cross-platform - Native support for Linux, macOS, Windows*, and WebAssembly
- Async/Await - Modern async API using Tokio
- WebAssembly Ready - Run SPICE clients directly in web browsers
- Multiple Channels - Display, input, cursor, and main channel support
* Windows support is included but currently untested. Contributions welcome!
๐๏ธ Architecture
Modern Design with Platform Flexibility
๐ฅ๏ธ Native App ๐ Web Browser
โ โ
โโโโโโผโโโโโ โโโโโโผโโโโโ
โ Tokio โ โ WASM โ
โ TCP โ โWebSocketโ
โโโโโโฌโโโโโ โโโโโโฌโโโโโ
โ โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ
โโโโโโโผโโโโโโ
โ SPICE โ
โ Server โ
โโโโโโโโโโโโโ
๐ Getting Started
Prerequisites
- ๐ฆ Rust 1.75+
- ๐ฅ๏ธ SPICE-enabled VM (QEMU/libvirt)
Installation
Add to your Cargo.toml
:
[]
= "0.1.0"
Quick Example
use ;
async
๐ฆ Supported Channels
Channel | Status | Description |
---|---|---|
Main | โ | Connection setup and control |
Display | โ | Screen rendering and updates |
Inputs | โ | Keyboard and mouse input |
Cursor | โ | Hardware cursor support |
Audio | ๐ง | Coming soon |
USB | ๐ง | Planned |
๐ ๏ธ Building
Native Build
# Standard build
# Run tests
WebAssembly Build
# Install wasm-pack
|
# Build for web
๐ WebSocket Proxy
For browser deployments, a WebSocket-to-TCP proxy is required:
# Example proxy setup
๐ Current Status
This is an experimental implementation focusing on core functionality:
Working:
- Basic SPICE protocol handshake
- Display channel with drawing operations
- Keyboard and mouse input
- Cursor updates
- WebAssembly compilation
In Progress:
- Audio channels
- Clipboard integration
- Performance optimizations
- Comprehensive testing
Planned:
- USB redirection
- File transfer
- Enhanced compression (LZ4)
- TLS encryption
๐ค Contributing
We welcome contributions! Please:
- ๐ Report bugs via GitHub issues
- ๐ก Discuss major changes before implementing
- ๐งช Add tests for new functionality
- ๐ Update documentation as needed
๐ License
GPL v3 License ๐
Part of the โก Quickemu Manager project