use openrgb2::{Color, DeviceType, OpenRgbClient, OpenRgbResult};
fn device_type_to_color(device_type: &DeviceType) -> openrgb2::Color {
match device_type {
DeviceType::Motherboard => Color::new(255, 0, 0), DeviceType::DRam => Color::new(0, 255, 0), DeviceType::Gpu => Color::new(0, 0, 255), DeviceType::Cooler => Color::new(255, 255, 0), DeviceType::LEDStrip => Color::new(255, 0, 255), DeviceType::Keyboard => Color::new(0, 255, 255), DeviceType::Mouse => Color::new(255, 255, 255), DeviceType::MouseMat => Color::new(255, 128, 0), DeviceType::Headset => Color::new(128, 0, 255), DeviceType::HeadsetStand => Color::new(255, 0, 128), DeviceType::Gamepad => Color::new(128, 255, 0), DeviceType::Light => Color::new(0, 128, 255), DeviceType::Speaker => Color::new(0, 255, 128), DeviceType::Virtual => Color::new(128, 128, 128), DeviceType::Unknown => Color::new(0, 0, 0), }
}
#[tokio::main]
async fn main() -> OpenRgbResult<()> {
let client = OpenRgbClient::connect().await?;
let controllers = client.get_all_controllers().await?;
let by_type = controllers.split_per_type();
for (device_type, group) in by_type {
let color = device_type_to_color(&device_type);
println!("{:?}: {} controllers", device_type, group.len());
for c in group {
println!(" controller {}: {:#?}", c.id(), c.name());
c.set_leds(vec![color; c.num_leds()]).await?;
c.set_all_leds(color).await?;
}
}
Ok(())
}