winvd

Crates.iowinvd
lib.rswinvd
version0.0.46
sourcesrc
created_at2020-06-30 22:53:54.197869
updated_at2024-01-25 19:58:50.688135
descriptionProvides functions for accessing Windows 11 virtual desktop API, requires at least 22621 build.
homepagehttps://github.com/ciantic/VirtualDesktopAccessor/tree/rust/
repositoryhttps://github.com/ciantic/VirtualDesktopAccessor/tree/rust/
max_upload_size
id260061
size106,864
Jari Pennanen (Ciantic)

documentation

README

winvd - Windows 11 virtual desktop bindings for Rust

The implementation abstracts the annoying COM API into simple functions.

https://crates.io/crates/winvd https://github.com/ciantic/VirtualDesktopAccessor/tree/rust/

Example

use winvd::{switch_desktop, get_desktop_count, DesktopEvent, listen_desktop_events};

fn main() {
    // Desktop count
    println!("Desktops: {:?}", get_desktop_count().unwrap());

    // Go to second desktop, index = 1
    switch_desktop(1).unwrap();

    // To listen for changes, use crossbeam, mpsc or winit proxy as a sender
    let (tx, rx) = std::sync::mpsc::channel::<DesktopEvent>();
    let _notifications_thread = listen_desktop_events(tx);

    // Keep the _notifications_thread alive for as long as you wish to listen changes
    std::thread::spawn(|| {
        for item in rx {
            println!("{:?}", item);
        }
    });

    // Wait for keypress
    println!("⛔ Press enter to stop");
    let mut input = String::new();
    std::io::stdin().read_line(&mut input).unwrap();
}

WIP see more examples from the testbin sources 🢅.

Notes

cargo clean
cargo doc --all-features
cargo build --release --workspace
Commit count: 0

cargo fmt