About | Demo | Installation | License | Contribution
This library allows you control the state of code execution using blink(1) LED notifier.
You simply wrap the code you want to track with transition library:
use std::error::Error;
use std::thread;
use std::time::Duration;
use transition::Transition;
fn main() -> Result<(), Box<dyn Error>> {
    // start transition
    let notification = Transition::default().start()?;
    // our example code
    thread::sleep(Duration::from_secs(5));
    // task finished with success
    notification.notify_success()?;
    Ok(())
}- After calling start(), blink(1) starts blinking with blue light. This is done in a separate thread.
- Then our code is executing.
- At the end we call notification.notify_success()(ornotification.notify_failure()) which changes the color of LED to green (or red).
Supported colors:
use transition::Led;
let color = Led::Blue;
match color {
  Led::Red => println!("red"),
  Led::Green => println!("green"),
  Led::Blue => println!("blue"),
  Led::Yellow => println!("yellow"),
  Led::Orange => println!("orange"),
  Led::Pink => println!("pink"),
  Led::Cyan => println!("cyan"),
  Led::White => println!("white"),
  Led::Blank => println!("turn off the led"),
}See examples for more
Add as a dependency to your Cargo.toml:
[dependencies]
transition = "0.1.1"One of the dependency requires libusb-1.0 to be installed. On Linux you can install it by running:
sudo apt install libusb-1.0Make sure that you have correct access rights to access blink(1) device. See udev rules here.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.
