Diff
diff --git a/src/bar/bar.rs b/src/bar/bar.rs
index 36eae4a..4d6d2ee 100644
--- a/src/bar/bar.rs
+++ b/src/bar/bar.rs
@@ -1,7 +1,7 @@
use super::blocks::Block;
use super::font::{Font, FontDraw};
use crate::Config;
-use crate::window_manager::X11Error;
+use crate::errors::X11Error;
use std::time::Instant;
use x11rb::COPY_DEPTH_FROM_PARENT;
use x11rb::connection::Connection;
diff --git a/src/bar/font.rs b/src/bar/font.rs
index a382f81..8cfe7f1 100644
--- a/src/bar/font.rs
+++ b/src/bar/font.rs
@@ -3,7 +3,7 @@ use x11::xft::{XftColor, XftDraw, XftDrawStringUtf8, XftFont, XftFontOpenName};
use x11::xlib::{Colormap, Display, Drawable, Visual};
use x11::xrender::XRenderColor;
-use crate::window_manager::X11Error;
+use crate::errors::X11Error;
pub struct Font {
xft_font: *mut XftFont,
diff --git a/src/errors.rs b/src/errors.rs
new file mode 100644
index 0000000..e6ec4fc
--- /dev/null
+++ b/src/errors.rs
@@ -0,0 +1,87 @@
+#[derive(Debug)]
+pub enum WmError {
+ X11(X11Error),
+ Io(std::io::Error),
+ Anyhow(anyhow::Error),
+}
+
+#[derive(Debug)]
+pub enum X11Error {
+ ConnectError(x11rb::errors::ConnectError),
+ ConnectionError(x11rb::errors::ConnectionError),
+ ReplyError(x11rb::errors::ReplyError),
+ ReplyOrIdError(x11rb::errors::ReplyOrIdError),
+ DisplayOpenFailed,
+ FontLoadFailed(String),
+ DrawCreateFailed,
+}
+
+impl std::fmt::Display for WmError {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ Self::X11(error) => write!(f, "{}", error),
+ Self::Io(error) => write!(f, "{}", error),
+ Self::Anyhow(error) => write!(f, "{}", error),
+ }
+ }
+}
+
+impl std::error::Error for WmError {}
+
+impl std::fmt::Display for X11Error {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ Self::ConnectError(err) => write!(f, "{}", err),
+ Self::ConnectionError(err) => write!(f, "{}", err),
+ Self::ReplyError(err) => write!(f, "{}", err),
+ Self::ReplyOrIdError(err) => write!(f, "{}", err),
+ Self::DisplayOpenFailed => write!(f, "failed to open X11 display"),
+ Self::FontLoadFailed(font_name) => write!(f, "failed to load Xft font: {}", font_name),
+ Self::DrawCreateFailed => write!(f, "failed to create XftDraw"),
+ }
+ }
+}
+
+impl std::error::Error for X11Error {}
+
+impl<T: Into<X11Error>> From<T> for WmError {
+ fn from(value: T) -> Self {
+ Self::X11(value.into())
+ }
+}
+
+impl From<std::io::Error> for WmError {
+ fn from(value: std::io::Error) -> Self {
+ Self::Io(value)
+ }
+}
+
+impl From<anyhow::Error> for WmError {
+ fn from(value: anyhow::Error) -> Self {
+ Self::Anyhow(value)
+ }
+}
+
+impl From<x11rb::errors::ConnectError> for X11Error {
+ fn from(value: x11rb::errors::ConnectError) -> Self {
+ X11Error::ConnectError(value)
+ }
+}
+
+impl From<x11rb::errors::ConnectionError> for X11Error {
+ fn from(value: x11rb::errors::ConnectionError) -> Self {
+ X11Error::ConnectionError(value)
+ }
+}
+
+impl From<x11rb::errors::ReplyError> for X11Error {
+ fn from(value: x11rb::errors::ReplyError) -> Self {
+ X11Error::ReplyError(value)
+ }
+}
+
+impl From<x11rb::errors::ReplyOrIdError> for X11Error {
+ fn from(value: x11rb::errors::ReplyOrIdError) -> Self {
+ X11Error::ReplyOrIdError(value)
+ }
+}
diff --git a/src/keyboard/handlers.rs b/src/keyboard/handlers.rs
index 6f615d4..a97d9e4 100644
--- a/src/keyboard/handlers.rs
+++ b/src/keyboard/handlers.rs
@@ -4,7 +4,7 @@ use std::process::Command;
use x11rb::connection::Connection;
use x11rb::protocol::xproto::*;
-use crate::window_manager::X11Error;
+use crate::errors::X11Error;
#[derive(Debug, Copy, Clone)]
pub enum KeyAction {
diff --git a/src/lib.rs b/src/lib.rs
index 03d3910..5a16b85 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,4 +1,5 @@
pub mod bar;
+pub mod errors;
pub mod keyboard;
pub mod layout;
pub mod window_manager;
diff --git a/src/window_manager.rs b/src/window_manager.rs
index b5f3e96..27ca7e2 100644
--- a/src/window_manager.rs
+++ b/src/window_manager.rs
@@ -1,5 +1,6 @@
use crate::Config;
use crate::bar::Bar;
+use crate::errors::WmError;
use crate::keyboard::{self, Arg, KeyAction, handlers};
use crate::layout::GapConfig;
use crate::layout::Layout;
@@ -34,94 +35,8 @@ pub struct WindowManager {
bar: Bar,
}
-#[derive(Debug)]
-pub enum WmError {
- X11(X11Error),
- Io(std::io::Error),
- Anyhow(anyhow::Error),
-}
-
-#[derive(Debug)]
-pub enum X11Error {
- ConnectError(x11rb::errors::ConnectError),
- ConnectionError(x11rb::errors::ConnectionError),
- ReplyError(x11rb::errors::ReplyError),
- ReplyOrIdError(x11rb::errors::ReplyOrIdError),
- DisplayOpenFailed,
- FontLoadFailed(String),
- DrawCreateFailed,
-}
-
type WmResult<T> = Result<T, WmError>;
-impl std::fmt::Display for WmError {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- match self {
- Self::X11(error) => write!(f, "{}", error),
- Self::Io(error) => write!(f, "{}", error),
- Self::Anyhow(error) => write!(f, "{}", error),
- }
- }
-}
-
-impl std::error::Error for WmError {}
-
-impl std::fmt::Display for X11Error {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- match self {
- Self::ConnectError(err) => write!(f, "{}", err),
- Self::ConnectionError(err) => write!(f, "{}", err),
- Self::ReplyError(err) => write!(f, "{}", err),
- Self::ReplyOrIdError(err) => write!(f, "{}", err),
- Self::DisplayOpenFailed => write!(f, "failed to open X11 display"),
- Self::FontLoadFailed(font_name) => write!(f, "failed to load Xft font: {}", font_name),
- Self::DrawCreateFailed => write!(f, "failed to create XftDraw"),
- }
- }
-}
-
-impl<T: Into<X11Error>> From<T> for WmError {
- fn from(value: T) -> Self {
- Self::X11(value.into())
- }
-}
-
-impl From<std::io::Error> for WmError {
- fn from(value: std::io::Error) -> Self {
- Self::Io(value)
- }
-}
-
-impl From<anyhow::Error> for WmError {
- fn from(value: anyhow::Error) -> Self {
- Self::Anyhow(value)
- }
-}
-
-impl From<x11rb::errors::ConnectError> for X11Error {
- fn from(value: x11rb::errors::ConnectError) -> Self {
- X11Error::ConnectError(value)
- }
-}
-
-impl From<x11rb::errors::ConnectionError> for X11Error {
- fn from(value: x11rb::errors::ConnectionError) -> Self {
- X11Error::ConnectionError(value)
- }
-}
-
-impl From<x11rb::errors::ReplyError> for X11Error {
- fn from(value: x11rb::errors::ReplyError) -> Self {
- X11Error::ReplyError(value)
- }
-}
-
-impl From<x11rb::errors::ReplyOrIdError> for X11Error {
- fn from(value: x11rb::errors::ReplyOrIdError) -> Self {
- X11Error::ReplyOrIdError(value)
- }
-}
-
impl WindowManager {
pub fn new(config: Config) -> WmResult<Self> {
let (connection, screen_number) = x11rb::connect(None)?;