summaryrefslogtreecommitdiff
path: root/src/colours.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/colours.rs')
-rw-r--r--src/colours.rs44
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
+ }
+}