diff options
Diffstat (limited to 'src/colours.rs')
-rw-r--r-- | src/colours.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/colours.rs b/src/colours.rs new file mode 100644 index 0000000..6f862c3 --- /dev/null +++ b/src/colours.rs @@ -0,0 +1,44 @@ +use crate::error::*; +use xcb::{ + x::{AllocColor, Colormap}, + Connection, +}; + +pub struct Colours { + cmap: Colormap, + border_normal: u32, + border_focused: u32, +} + +impl Colours { + pub fn new_with(conn: &Connection, cmap: Colormap) -> Result<Self> { + let (border_normal, border_focused) = ( + conn.wait_for_reply(conn.send_request(&AllocColor { + cmap, + red: 0, + green: 0, + blue: 0, + }))?, + conn.wait_for_reply(conn.send_request(&AllocColor { + cmap, + red: u16::MAX, + green: 0, + blue: u16::MAX, + }))?, + ); + + Ok(Self { + cmap, + border_normal: border_normal.pixel(), + border_focused: border_focused.pixel(), + }) + } + + pub fn border_normal(&self) -> u32 { + self.border_normal + } + + pub fn border_focused(&self) -> u32 { + self.border_focused + } +} |