|  | @@ -1,8 +1,10 @@
 | 
	
		
			
				|  |  |  use std::rc::Rc;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  use xcb;
 | 
	
		
			
				|  |  | +use xcb::render::Color;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  use config::Config;
 | 
	
		
			
				|  |  | +use ui::color;
 | 
	
		
			
				|  |  |  use ui::context::Context;
 | 
	
		
			
				|  |  |  use ui::ext;
 | 
	
		
			
				|  |  |  use ui::ext::ConnectionExt;
 | 
	
	
		
			
				|  | @@ -14,6 +16,8 @@ pub struct Window {
 | 
	
		
			
				|  |  |      pub window: xcb::Window,
 | 
	
		
			
				|  |  |      pub height: u16,
 | 
	
		
			
				|  |  |      pub width: u16,
 | 
	
		
			
				|  |  | +    pub text_color: Color,
 | 
	
		
			
				|  |  | +    pub bg_color: Color,
 | 
	
		
			
				|  |  |      fonts: Rc<font::FontLoader>,
 | 
	
		
			
				|  |  |      picture: xcb::render::Picture
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -25,6 +29,14 @@ impl Window {
 | 
	
		
			
				|  |  |          let picture = conn.generate_id();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          let height = cfg.lookup("bar.height").and_then(|v| v.as_integer()).expect("bar.height is not set") as u16;
 | 
	
		
			
				|  |  | +        let text_color = cfg.lookup("bar.text_color")
 | 
	
		
			
				|  |  | +            .and_then(|v| v.as_str())
 | 
	
		
			
				|  |  | +            .and_then(|s| color::from_str(s))
 | 
	
		
			
				|  |  | +            .unwrap_or(color::WHITE);
 | 
	
		
			
				|  |  | +        let bg_color = cfg.lookup("bar.bg_color")
 | 
	
		
			
				|  |  | +            .and_then(|v| v.as_str())
 | 
	
		
			
				|  |  | +            .and_then(|s| color::from_str(s))
 | 
	
		
			
				|  |  | +            .unwrap_or(color::BLACK);
 | 
	
		
			
				|  |  |          let width = conn.default_screen().width;
 | 
	
		
			
				|  |  |          let font_loader = Rc::new(font::FontLoader::from_config(conn.clone(), cfg));
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -32,6 +44,8 @@ impl Window {
 | 
	
		
			
				|  |  |              conn: conn,
 | 
	
		
			
				|  |  |              height: height,
 | 
	
		
			
				|  |  |              width: width,
 | 
	
		
			
				|  |  | +            text_color: text_color,
 | 
	
		
			
				|  |  | +            bg_color: bg_color,
 | 
	
		
			
				|  |  |              window: window,
 | 
	
		
			
				|  |  |              fonts: font_loader,
 | 
	
		
			
				|  |  |              picture: picture
 | 
	
	
		
			
				|  | @@ -55,7 +69,7 @@ impl Window {
 | 
	
		
			
				|  |  |              xcb::WINDOW_CLASS_INPUT_OUTPUT as u16,
 | 
	
		
			
				|  |  |              xcb::COPY_FROM_PARENT,
 | 
	
		
			
				|  |  |              &[
 | 
	
		
			
				|  |  | -                (xcb::CW_BACK_PIXEL, 0xFF000000),
 | 
	
		
			
				|  |  | +                (xcb::CW_BACK_PIXEL, color::as_u32(self.bg_color)),
 | 
	
		
			
				|  |  |                  (xcb::CW_EVENT_MASK, xcb::EVENT_MASK_EXPOSURE | xcb::EVENT_MASK_PROPERTY_CHANGE | xcb::EVENT_MASK_STRUCTURE_NOTIFY | xcb::EVENT_MASK_BUTTON_PRESS)
 | 
	
		
			
				|  |  |              ]
 | 
	
		
			
				|  |  |          );
 | 
	
	
		
			
				|  | @@ -74,7 +88,15 @@ impl Window {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      pub fn make_context(&self) -> Context {
 | 
	
		
			
				|  |  | -        Context::new(self.conn.clone(), self.height, self.window, self.picture, self.fonts.clone())
 | 
	
		
			
				|  |  | +        Context::new(
 | 
	
		
			
				|  |  | +            self.conn.clone(),
 | 
	
		
			
				|  |  | +            self.height,
 | 
	
		
			
				|  |  | +            self.window,
 | 
	
		
			
				|  |  | +            self.picture,
 | 
	
		
			
				|  |  | +            self.text_color,
 | 
	
		
			
				|  |  | +            self.bg_color,
 | 
	
		
			
				|  |  | +            self.fonts.clone()
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      pub fn set_property<T>(&self, name: xcb::Atom, type_: xcb::Atom, format: u8, data: &[T]) {
 |