1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//! Crate for easily creating system bars/panels/docks.
//!
//! The goal of this crate is to make it as simple as possible to create complex bars/panels/docks
//! for linux without having to worry about anything but rendering.
//!
//! To get started with the crate, a new bar needs to be created. This is done using the [`load`]
//! method in the [`Bar`]. Once this is acquired the [`recv`], [`try_recv`] and [`lock`] methods
//! should be all that is required to receive events and render the bar.
//!
//! [`Bar`]: struct.Bar.html
//! [`load`]: struct.Bar.html#method.load
//! [`recv`]: struct.Bar.html#method.recv
//! [`try_recv`]: struct.Bar.html#method.try_recv
//! [`lock`]: struct.Bar.html#method.lock
//!
//! # Examples
//!
//! ```no_run
//! use std::io::Cursor;
//!
//! use bar_config::Bar;
//!
//! fn main() {
//! let input = Cursor::new(String::from(
//! "\
//! height: 30\n\
//! monitors:\n\
//! - { name: \"DVI-1\" }\n\
//! left:\n\
//! - { text: \"Hello, World!\" }\n\
//! center:\n\
//! - { name: \"clock\" }\n\
//! right:\n\
//! - { text: \"VOLUME\" }",
//! ));
//!
//! let mut bar = Bar::load(input).unwrap();
//!
//! print_bar(&bar);
//! loop {
//! let _ = bar.recv();
//! print_bar(&bar);
//! }
//! }
//!
//! fn print_bar(bar: &Bar) {
//! let config = bar.lock();
//! for comp in config
//! .left
//! .iter()
//! .chain(&config.center)
//! .chain(&config.right)
//! {
//! if let Some(text) = comp.text() {
//! print!("{}\t", text);
//! }
//! }
//! println!("");
//! }
//! ```
extern crate serde_derive;
pub use crate*;