|
@@ -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]) {
|