stray 0.1.3

A freedesktop StatusNotifierWatcher implementation
Documentation
use stray::StatusNotifierWatcher;
use tokio::join;
use tokio::sync::mpsc;

#[tokio::main]
async fn main() -> stray::error::Result<()> {
    let (_cmd_tx, cmd_rx) = mpsc::channel(10);
    let tray = StatusNotifierWatcher::new(cmd_rx).await?;

    let mut host_one = tray.create_notifier_host("host_one").await.unwrap();
    let mut host_two = tray.create_notifier_host("host_two").await.unwrap();

    let one = tokio::spawn(async move {
        while let Ok(mesage) = host_one.recv().await {
            println!("Message from host one {:?}", mesage);
        }
    });

    let two = tokio::spawn(async move {
        let mut count = 0;
        while let Ok(mesage) = host_two.recv().await {
            count += 1;
            if count > 5 {
                break;
            }
            println!("Message from host two {:?}", mesage);
        }

        host_two.destroy().await?;
        stray::error::Result::<()>::Ok(())
    });

    let _ = join!(one, two);
    Ok(())
}