diff --git a/Cargo.toml b/Cargo.toml index 41b6a70..32c068e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ workspaces = ["futures-lite"] "workspaces+hyprland" = ["workspaces", "hyprland"] "workspaces+niri" = ["workspaces"] -sway = ["swayipc-async"] +sway = ["swayipc-async", "futures-lite"] schema = ["dep:schemars"] diff --git a/src/clients/compositor/hyprland.rs b/src/clients/compositor/hyprland.rs index ec612b0..d7bb91c 100644 --- a/src/clients/compositor/hyprland.rs +++ b/src/clients/compositor/hyprland.rs @@ -1,7 +1,4 @@ -use super::{ - KeyboardLayoutClient, KeyboardLayoutUpdate, Visibility, Workspace, WorkspaceClient, - WorkspaceUpdate, -}; +use super::{KeyboardLayoutClient, KeyboardLayoutUpdate, Visibility, Workspace, WorkspaceUpdate}; use crate::{arc_mut, lock, send, spawn_blocking}; use color_eyre::Result; use hyprland::ctl::switch_xkb_layout; @@ -326,7 +323,8 @@ impl Client { } } -impl WorkspaceClient for Client { +#[cfg(feature = "workspaces")] +impl super::WorkspaceClient for Client { fn focus(&self, id: i64) { let identifier = WorkspaceIdentifierWithSpecial::Id(id as i32); diff --git a/src/clients/compositor/mod.rs b/src/clients/compositor/mod.rs index 4c574fa..2f8751f 100644 --- a/src/clients/compositor/mod.rs +++ b/src/clients/compositor/mod.rs @@ -7,17 +7,17 @@ use std::sync::Arc; use tokio::sync::broadcast; use tracing::debug; -#[cfg(feature = "workspaces+hyprland")] +#[cfg(any(feature = "keyboard+hyprland", feature = "workspaces+hyprland"))] pub mod hyprland; #[cfg(feature = "workspaces+niri")] pub mod niri; -#[cfg(feature = "workspaces+sway")] +#[cfg(any(feature = "keyboard+sway", feature = "workspaces+sway"))] pub mod sway; pub enum Compositor { - #[cfg(feature = "workspaces+sway")] + #[cfg(any(feature = "keyboard+sway", feature = "workspaces+sway"))] Sway, - #[cfg(feature = "workspaces+hyprland")] + #[cfg(any(feature = "keyboard+hyprland", feature = "workspaces+hyprland"))] Hyprland, #[cfg(feature = "workspaces+niri")] Niri, @@ -30,9 +30,9 @@ impl Display for Compositor { f, "{}", match self { - #[cfg(feature = "workspaces+sway")] + #[cfg(any(feature = "keyboard+sway", feature = "workspaces+sway"))] Self::Sway => "Sway", - #[cfg(feature = "workspaces+hyprland")] + #[cfg(any(feature = "keyboard+sway", feature = "workspaces+hyprland"))] Self::Hyprland => "Hyprland", #[cfg(feature = "workspaces+niri")] Self::Niri => "Niri", diff --git a/src/clients/compositor/sway.rs b/src/clients/compositor/sway.rs index d39f650..42d7176 100644 --- a/src/clients/compositor/sway.rs +++ b/src/clients/compositor/sway.rs @@ -1,14 +1,12 @@ -use super::{ - KeyboardLayoutClient, KeyboardLayoutUpdate, Visibility, Workspace, WorkspaceClient, - WorkspaceUpdate, -}; +use super::{KeyboardLayoutClient, KeyboardLayoutUpdate, Visibility, Workspace, WorkspaceUpdate}; use crate::clients::sway::Client; use crate::{await_sync, error, send, spawn}; use color_eyre::Report; use swayipc_async::{InputChange, InputEvent, Node, WorkspaceChange, WorkspaceEvent}; use tokio::sync::broadcast::{Receiver, channel}; -impl WorkspaceClient for Client { +#[cfg(feature = "workspaces")] +impl super::WorkspaceClient for Client { fn focus(&self, id: i64) { let client = self.connection().clone(); spawn(async move { @@ -215,7 +213,7 @@ impl KeyboardLayoutClient for Client { impl TryFrom for KeyboardLayoutUpdate { type Error = (); - fn try_from(value: InputEvent) -> std::result::Result { + fn try_from(value: InputEvent) -> Result { match value.change { InputChange::XkbLayout => { if let Some(layout) = value.input.xkb_active_layout_name {