1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-08-16 14:21:03 +02:00

build: fix more coupling issues with keyboard/workspace/sway

This commit is contained in:
Jake Stanger 2025-03-28 20:47:18 +00:00
parent caa288656c
commit 557ef4c898
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
4 changed files with 14 additions and 18 deletions

View file

@ -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"]

View file

@ -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);

View file

@ -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",

View file

@ -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<InputEvent> for KeyboardLayoutUpdate {
type Error = ();
fn try_from(value: InputEvent) -> std::result::Result<Self, Self::Error> {
fn try_from(value: InputEvent) -> Result<Self, Self::Error> {
match value.change {
InputChange::XkbLayout => {
if let Some(layout) = value.input.xkb_active_layout_name {