From 81451cb17aed7bea3805c45be8b3dc70efd358a8 Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Mon, 15 Jul 2024 17:08:15 -0700 Subject: [PATCH] refactor(client): use public interface exclusively This commit demotes the komorebi-core crate to a module (core) inside of the komorebi lib, resulting in the komorebi-client crate lib becoming the single public interface for programming in Rust against komorebi. komorebic and komorebi-gui now consume komorebi-client exclusively as the means for sending and receiving messages to and from komorebi, so that anyone wishing to integrate with komorebi will have all of the same functionality to them as I do. --- Cargo.lock | 32 +- Cargo.toml | 2 +- README.md | 4 +- komorebi-client/Cargo.toml | 1 - komorebi-client/src/lib.rs | 39 +- komorebi-core/Cargo.toml | 18 - komorebi/Cargo.toml | 4 +- komorebi/src/animation.rs | 4 +- komorebi/src/border_manager/border.rs | 4 +- komorebi/src/border_manager/mod.rs | 6 +- .../src => komorebi/src/core}/animation.rs | 0 .../src => komorebi/src/core}/arrangement.rs | 12 +- .../src/core}/config_generation.rs | 2 +- .../src/core}/custom_layout.rs | 2 +- .../src/core}/cycle_direction.rs | 0 .../src/core}/default_layout.rs | 6 +- .../src => komorebi/src/core}/direction.rs | 12 +- .../src => komorebi/src/core}/layout.rs | 8 +- .../src/lib.rs => komorebi/src/core/mod.rs | 0 .../src/core}/operation_direction.rs | 4 +- .../src => komorebi/src/core}/rect.rs | 0 komorebi/src/lib.rs | 13 +- komorebi/src/monitor.rs | 2 +- komorebi/src/monitor_reconciliator/mod.rs | 2 +- komorebi/src/process_command.rs | 34 +- komorebi/src/process_event.rs | 8 +- komorebi/src/process_movement.rs | 2 +- komorebi/src/stackbar_manager/mod.rs | 4 +- komorebi/src/stackbar_manager/stackbar.rs | 6 +- komorebi/src/static_config.rs | 44 +- komorebi/src/window.rs | 12 +- komorebi/src/window_manager.rs | 36 +- komorebi/src/windows_api.rs | 2 +- komorebi/src/workspace.rs | 14 +- komorebic/Cargo.toml | 1 - komorebic/src/main.rs | 693 ++++++++---------- 36 files changed, 479 insertions(+), 554 deletions(-) delete mode 100644 komorebi-core/Cargo.toml rename {komorebi-core/src => komorebi/src/core}/animation.rs (100%) rename {komorebi-core/src => komorebi/src/core}/arrangement.rs (99%) rename {komorebi-core/src => komorebi/src/core}/config_generation.rs (99%) rename {komorebi-core/src => komorebi/src/core}/custom_layout.rs (99%) rename {komorebi-core/src => komorebi/src/core}/cycle_direction.rs (100%) rename {komorebi-core/src => komorebi/src/core}/default_layout.rs (98%) rename {komorebi-core/src => komorebi/src/core}/direction.rs (98%) rename {komorebi-core/src => komorebi/src/core}/layout.rs (88%) rename komorebi-core/src/lib.rs => komorebi/src/core/mod.rs (100%) rename {komorebi-core/src => komorebi/src/core}/operation_direction.rs (97%) rename {komorebi-core/src => komorebi/src/core}/rect.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index d14f4cef..1a067ff7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -742,13 +742,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9711f33475c22aab363b05564a17d7b789bf3dfec5ebabb586adee56f0e271b5" +checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -2325,10 +2324,10 @@ dependencies = [ "crossbeam-utils", "ctrlc", "dirs", + "dunce", "getset", "hex_color", "hotwatch", - "komorebi-core", "lazy_static", "miow", "nanoid", @@ -2340,6 +2339,7 @@ dependencies = [ "schemars", "serde", "serde_json_lenient", + "serde_yaml", "shadow-rs", "strum", "sysinfo", @@ -2362,27 +2362,10 @@ name = "komorebi-client" version = "0.1.29" dependencies = [ "komorebi", - "komorebi-core", "serde_json_lenient", "uds_windows", ] -[[package]] -name = "komorebi-core" -version = "0.1.28" -dependencies = [ - "clap", - "color-eyre", - "dirs", - "dunce", - "schemars", - "serde", - "serde_json_lenient", - "serde_yaml", - "strum", - "windows 0.54.0", -] - [[package]] name = "komorebi-gui" version = "0.1.29" @@ -2406,7 +2389,6 @@ dependencies = [ "dunce", "fs-tail", "komorebi-client", - "komorebi-core", "lazy_static", "miette", "paste", @@ -3216,7 +3198,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "petgraph", - "redox_syscall 0.5.2", + "redox_syscall 0.5.3", "smallvec", "thread-id", "windows-targets 0.52.6", @@ -3533,9 +3515,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] diff --git a/Cargo.toml b/Cargo.toml index f7c6f82b..6ae588cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,6 @@ resolver = "2" members = [ "komorebi", "komorebi-client", - "komorebi-core", "komorebi-gui", "komorebic", "komorebic-no-console", @@ -16,6 +15,7 @@ dirs = "5" dunce = "1" serde = { version = "1", features = ["derive"] } serde_json = { package = "serde_json_lenient", version = "0.2" } +serde_yaml = "0.9" sysinfo = "0.30" uds_windows = "1" win32-display-data = { git = "https://github.com/LGUG2Z/win32-display-data", rev = "32a45cebf132c3d651ee22c0c40033a6b7edc945" } diff --git a/README.md b/README.md index 3cd974eb..4c2197fc 100644 --- a/README.md +++ b/README.md @@ -279,7 +279,7 @@ If the named pipe exists, `komorebi` will start pushing JSON data of successfull You may then filter on the `type` key to listen to the events that you are interested in. For a full list of possible notification types, refer to the enum variants of `WindowManagerEvent` in `komorebi` and `SocketMessage` -in `komorebi-core`. +in `komorebi::core`. Below is an example of how you can subscribe to and filter on events using a named pipe in `nodejs`. @@ -414,7 +414,7 @@ A TCP listener can optionally be exposed on a port of your choosing with the `-- provided to `komorebi` or `komorebic start`, no TCP listener will be created. Once created, your client may send -any [SocketMessage](https://github.com/LGUG2Z/komorebi/blob/master/komorebi-core/src/lib.rs#L37) to `komorebi` in the +any [SocketMessage](https://github.com/LGUG2Z/komorebi/blob/master/komorebi/src/core/mod.rs#L37) to `komorebi` in the same way that `komorebic` would. This can be used if you would like to create your own alternative to `komorebic` which incorporates scripting and diff --git a/komorebi-client/Cargo.toml b/komorebi-client/Cargo.toml index 5b6409b9..3575eba1 100644 --- a/komorebi-client/Cargo.toml +++ b/komorebi-client/Cargo.toml @@ -7,6 +7,5 @@ edition = "2021" [dependencies] komorebi = { path = "../komorebi" } -komorebi-core = { path = "../komorebi-core" } uds_windows = "1" serde_json = { workspace = true } diff --git a/komorebi-client/src/lib.rs b/komorebi-client/src/lib.rs index 760349c5..e57e5e0c 100644 --- a/komorebi-client/src/lib.rs +++ b/komorebi-client/src/lib.rs @@ -4,6 +4,31 @@ pub use komorebi::colour::Colour; pub use komorebi::colour::Rgb; pub use komorebi::container::Container; +pub use komorebi::core::config_generation::ApplicationConfigurationGenerator; +pub use komorebi::core::resolve_home_path; +pub use komorebi::core::AnimationStyle; +pub use komorebi::core::ApplicationIdentifier; +pub use komorebi::core::Arrangement; +pub use komorebi::core::Axis; +pub use komorebi::core::BorderImplementation; +pub use komorebi::core::BorderStyle; +pub use komorebi::core::CustomLayout; +pub use komorebi::core::CycleDirection; +pub use komorebi::core::DefaultLayout; +pub use komorebi::core::Direction; +pub use komorebi::core::FocusFollowsMouseImplementation; +pub use komorebi::core::HidingBehaviour; +pub use komorebi::core::Layout; +pub use komorebi::core::MoveBehaviour; +pub use komorebi::core::OperationBehaviour; +pub use komorebi::core::OperationDirection; +pub use komorebi::core::Rect; +pub use komorebi::core::Sizing; +pub use komorebi::core::SocketMessage; +pub use komorebi::core::StackbarLabel; +pub use komorebi::core::StackbarMode; +pub use komorebi::core::StateQuery; +pub use komorebi::core::WindowKind; pub use komorebi::monitor::Monitor; pub use komorebi::ring::Ring; pub use komorebi::window::Window; @@ -18,20 +43,6 @@ pub use komorebi::StackbarConfig; pub use komorebi::State; pub use komorebi::StaticConfig; pub use komorebi::TabsConfig; -pub use komorebi_core::Arrangement; -pub use komorebi_core::Axis; -pub use komorebi_core::BorderStyle; -pub use komorebi_core::CustomLayout; -pub use komorebi_core::CycleDirection; -pub use komorebi_core::DefaultLayout; -pub use komorebi_core::Direction; -pub use komorebi_core::Layout; -pub use komorebi_core::OperationDirection; -pub use komorebi_core::Rect; -pub use komorebi_core::SocketMessage; -pub use komorebi_core::StackbarLabel; -pub use komorebi_core::StackbarMode; -pub use komorebi_core::WindowKind; use komorebi::DATA_DIR; diff --git a/komorebi-core/Cargo.toml b/komorebi-core/Cargo.toml deleted file mode 100644 index 96fad768..00000000 --- a/komorebi-core/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "komorebi-core" -version = "0.1.28" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -clap = { version = "4", features = ["derive"] } -serde = { version = "1", features = ["derive"] } -serde_json = { workspace = true } -serde_yaml = "0.9" -strum = { version = "0.26", features = ["derive"] } -schemars = "0.8" -color-eyre = { workspace = true } -windows = { workspace = true } -dunce = { workspace = true } -dirs = { workspace = true } diff --git a/komorebi/Cargo.toml b/komorebi/Cargo.toml index 309cb886..7e46925e 100644 --- a/komorebi/Cargo.toml +++ b/komorebi/Cargo.toml @@ -11,8 +11,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -komorebi-core = { path = "../komorebi-core" } - bitflags = { version = "2", features = ["serde"] } clap = { version = "4", features = ["derive"] } color-eyre = { workspace = true } @@ -20,6 +18,7 @@ crossbeam-channel = "0.5" crossbeam-utils = "0.8" ctrlc = { version = "3", features = ["termination"] } dirs = { workspace = true } +dunce = { workspace = true } getset = "0.1" hex_color = { version = "3", features = ["serde"] } hotwatch = "0.5" @@ -34,6 +33,7 @@ regex = "1" schemars = "0.8" serde = { version = "1", features = ["derive"] } serde_json = { workspace = true } +serde_yaml = { workspace = true } strum = { version = "0.26", features = ["derive"] } sysinfo = { workspace = true } tracing = "0.1" diff --git a/komorebi/src/animation.rs b/komorebi/src/animation.rs index a9e81207..3ebdd00e 100644 --- a/komorebi/src/animation.rs +++ b/komorebi/src/animation.rs @@ -1,6 +1,6 @@ +use crate::core::AnimationStyle; +use crate::core::Rect; use color_eyre::Result; -use komorebi_core::AnimationStyle; -use komorebi_core::Rect; use schemars::JsonSchema; diff --git a/komorebi/src/border_manager/border.rs b/komorebi/src/border_manager/border.rs index 65feecce..ba07c0bd 100644 --- a/komorebi/src/border_manager/border.rs +++ b/komorebi/src/border_manager/border.rs @@ -8,8 +8,8 @@ use crate::border_manager::Z_ORDER; use crate::WindowsApi; use crate::WINDOWS_11; -use komorebi_core::BorderStyle; -use komorebi_core::Rect; +use crate::core::BorderStyle; +use crate::core::Rect; use std::sync::atomic::Ordering; use std::sync::mpsc; diff --git a/komorebi/src/border_manager/mod.rs b/komorebi/src/border_manager/mod.rs index d1606f0a..f59deebf 100644 --- a/komorebi/src/border_manager/mod.rs +++ b/komorebi/src/border_manager/mod.rs @@ -2,12 +2,12 @@ mod border; +use crate::core::BorderImplementation; +use crate::core::BorderStyle; use crossbeam_channel::Receiver; use crossbeam_channel::Sender; use crossbeam_utils::atomic::AtomicCell; use crossbeam_utils::atomic::AtomicConsume; -use komorebi_core::BorderImplementation; -use komorebi_core::BorderStyle; use lazy_static::lazy_static; use parking_lot::Mutex; use schemars::JsonSchema; @@ -23,6 +23,7 @@ use std::sync::Arc; use std::sync::OnceLock; use windows::Win32::Foundation::HWND; +use crate::core::WindowKind; use crate::ring::Ring; use crate::workspace_reconciliator::ALT_TAB_HWND; use crate::Colour; @@ -31,7 +32,6 @@ use crate::WindowManager; use crate::WindowsApi; use border::border_hwnds; use border::Border; -use komorebi_core::WindowKind; pub static BORDER_WIDTH: AtomicI32 = AtomicI32::new(8); pub static BORDER_OFFSET: AtomicI32 = AtomicI32::new(-1); diff --git a/komorebi-core/src/animation.rs b/komorebi/src/core/animation.rs similarity index 100% rename from komorebi-core/src/animation.rs rename to komorebi/src/core/animation.rs diff --git a/komorebi-core/src/arrangement.rs b/komorebi/src/core/arrangement.rs similarity index 99% rename from komorebi-core/src/arrangement.rs rename to komorebi/src/core/arrangement.rs index 0c3b3b04..150b308a 100644 --- a/komorebi-core/src/arrangement.rs +++ b/komorebi/src/core/arrangement.rs @@ -7,12 +7,12 @@ use serde::Serialize; use strum::Display; use strum::EnumString; -use crate::custom_layout::Column; -use crate::custom_layout::ColumnSplit; -use crate::custom_layout::ColumnSplitWithCapacity; -use crate::CustomLayout; -use crate::DefaultLayout; -use crate::Rect; +use super::custom_layout::Column; +use super::custom_layout::ColumnSplit; +use super::custom_layout::ColumnSplitWithCapacity; +use super::CustomLayout; +use super::DefaultLayout; +use super::Rect; pub trait Arrangement { fn calculate( diff --git a/komorebi-core/src/config_generation.rs b/komorebi/src/core/config_generation.rs similarity index 99% rename from komorebi-core/src/config_generation.rs rename to komorebi/src/core/config_generation.rs index 6a69a53d..71ea8f9d 100644 --- a/komorebi-core/src/config_generation.rs +++ b/komorebi/src/core/config_generation.rs @@ -6,7 +6,7 @@ use serde::Serialize; use strum::Display; use strum::EnumString; -use crate::ApplicationIdentifier; +use super::ApplicationIdentifier; #[derive( Clone, Copy, Debug, Serialize, Deserialize, Display, EnumString, ValueEnum, JsonSchema, diff --git a/komorebi-core/src/custom_layout.rs b/komorebi/src/core/custom_layout.rs similarity index 99% rename from komorebi-core/src/custom_layout.rs rename to komorebi/src/core/custom_layout.rs index 756fd652..45d439f7 100644 --- a/komorebi-core/src/custom_layout.rs +++ b/komorebi/src/core/custom_layout.rs @@ -12,7 +12,7 @@ use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use crate::Rect; +use super::Rect; #[derive(Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq)] pub struct CustomLayout(Vec); diff --git a/komorebi-core/src/cycle_direction.rs b/komorebi/src/core/cycle_direction.rs similarity index 100% rename from komorebi-core/src/cycle_direction.rs rename to komorebi/src/core/cycle_direction.rs diff --git a/komorebi-core/src/default_layout.rs b/komorebi/src/core/default_layout.rs similarity index 98% rename from komorebi-core/src/default_layout.rs rename to komorebi/src/core/default_layout.rs index acb2a450..45db31f3 100644 --- a/komorebi-core/src/default_layout.rs +++ b/komorebi/src/core/default_layout.rs @@ -5,9 +5,9 @@ use serde::Serialize; use strum::Display; use strum::EnumString; -use crate::OperationDirection; -use crate::Rect; -use crate::Sizing; +use super::OperationDirection; +use super::Rect; +use super::Sizing; #[derive( Clone, diff --git a/komorebi-core/src/direction.rs b/komorebi/src/core/direction.rs similarity index 98% rename from komorebi-core/src/direction.rs rename to komorebi/src/core/direction.rs index 5a640893..0f55272f 100644 --- a/komorebi-core/src/direction.rs +++ b/komorebi/src/core/direction.rs @@ -1,9 +1,9 @@ -use crate::custom_layout::Column; -use crate::custom_layout::ColumnSplit; -use crate::custom_layout::ColumnSplitWithCapacity; -use crate::custom_layout::CustomLayout; -use crate::DefaultLayout; -use crate::OperationDirection; +use super::custom_layout::Column; +use super::custom_layout::ColumnSplit; +use super::custom_layout::ColumnSplitWithCapacity; +use super::custom_layout::CustomLayout; +use super::DefaultLayout; +use super::OperationDirection; pub trait Direction { fn index_in_direction( diff --git a/komorebi-core/src/layout.rs b/komorebi/src/core/layout.rs similarity index 88% rename from komorebi-core/src/layout.rs rename to komorebi/src/core/layout.rs index f22dd8a4..7c8d70b5 100644 --- a/komorebi-core/src/layout.rs +++ b/komorebi/src/core/layout.rs @@ -2,10 +2,10 @@ use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use crate::Arrangement; -use crate::CustomLayout; -use crate::DefaultLayout; -use crate::Direction; +use super::Arrangement; +use super::CustomLayout; +use super::DefaultLayout; +use super::Direction; #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] pub enum Layout { diff --git a/komorebi-core/src/lib.rs b/komorebi/src/core/mod.rs similarity index 100% rename from komorebi-core/src/lib.rs rename to komorebi/src/core/mod.rs diff --git a/komorebi-core/src/operation_direction.rs b/komorebi/src/core/operation_direction.rs similarity index 97% rename from komorebi-core/src/operation_direction.rs rename to komorebi/src/core/operation_direction.rs index 7ef0ae04..2fdda9bc 100644 --- a/komorebi-core/src/operation_direction.rs +++ b/komorebi/src/core/operation_direction.rs @@ -7,8 +7,8 @@ use serde::Serialize; use strum::Display; use strum::EnumString; -use crate::direction::Direction; -use crate::Axis; +use super::direction::Direction; +use super::Axis; #[derive( Clone, Copy, Debug, Serialize, Deserialize, Display, EnumString, ValueEnum, JsonSchema, diff --git a/komorebi-core/src/rect.rs b/komorebi/src/core/rect.rs similarity index 100% rename from komorebi-core/src/rect.rs rename to komorebi/src/core/rect.rs diff --git a/komorebi/src/lib.rs b/komorebi/src/lib.rs index 88d76054..3d15dc56 100644 --- a/komorebi/src/lib.rs +++ b/komorebi/src/lib.rs @@ -8,6 +8,7 @@ pub mod com; pub mod ring; pub mod colour; pub mod container; +pub mod core; pub mod focus_manager; pub mod monitor; pub mod monitor_reconciliator; @@ -48,6 +49,7 @@ use std::sync::Arc; pub use animation::*; pub use animation_manager::*; pub use colour::*; +pub use core::*; pub use process_command::*; pub use process_event::*; pub use static_config::*; @@ -57,15 +59,10 @@ pub use window_manager_event::*; pub use windows_api::WindowsApi; pub use windows_api::*; +use crate::core::config_generation::IdWithIdentifier; +use crate::core::config_generation::MatchingRule; +use crate::core::config_generation::MatchingStrategy; use color_eyre::Result; -use komorebi_core::config_generation::IdWithIdentifier; -use komorebi_core::config_generation::MatchingRule; -use komorebi_core::config_generation::MatchingStrategy; -use komorebi_core::AnimationStyle; -use komorebi_core::ApplicationIdentifier; -use komorebi_core::HidingBehaviour; -use komorebi_core::Rect; -use komorebi_core::SocketMessage; use os_info::Version; use parking_lot::Mutex; use regex::Regex; diff --git a/komorebi/src/monitor.rs b/komorebi/src/monitor.rs index 7ea7c013..2127a7e2 100644 --- a/komorebi/src/monitor.rs +++ b/komorebi/src/monitor.rs @@ -12,7 +12,7 @@ use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use komorebi_core::Rect; +use crate::core::Rect; use crate::container::Container; use crate::ring::Ring; diff --git a/komorebi/src/monitor_reconciliator/mod.rs b/komorebi/src/monitor_reconciliator/mod.rs index e854a9f2..06d99926 100644 --- a/komorebi/src/monitor_reconciliator/mod.rs +++ b/komorebi/src/monitor_reconciliator/mod.rs @@ -1,6 +1,7 @@ #![deny(clippy::unwrap_used, clippy::expect_used)] use crate::border_manager; +use crate::core::Rect; use crate::monitor; use crate::monitor::Monitor; use crate::monitor_reconciliator::hidden::Hidden; @@ -10,7 +11,6 @@ use crate::WindowsApi; use crossbeam_channel::Receiver; use crossbeam_channel::Sender; use crossbeam_utils::atomic::AtomicConsume; -use komorebi_core::Rect; use parking_lot::Mutex; use std::collections::HashMap; use std::sync::atomic::AtomicBool; diff --git a/komorebi/src/process_command.rs b/komorebi/src/process_command.rs index d00b3fcb..00e624f3 100644 --- a/komorebi/src/process_command.rs +++ b/komorebi/src/process_command.rs @@ -21,23 +21,23 @@ use schemars::gen::SchemaSettings; use schemars::schema_for; use uds_windows::UnixStream; -use komorebi_core::config_generation::ApplicationConfiguration; -use komorebi_core::config_generation::IdWithIdentifier; -use komorebi_core::config_generation::MatchingRule; -use komorebi_core::config_generation::MatchingStrategy; -use komorebi_core::ApplicationIdentifier; -use komorebi_core::Axis; -use komorebi_core::BorderImplementation; -use komorebi_core::FocusFollowsMouseImplementation; -use komorebi_core::Layout; -use komorebi_core::MoveBehaviour; -use komorebi_core::OperationDirection; -use komorebi_core::Rect; -use komorebi_core::Sizing; -use komorebi_core::SocketMessage; -use komorebi_core::StateQuery; -use komorebi_core::WindowContainerBehaviour; -use komorebi_core::WindowKind; +use crate::core::config_generation::ApplicationConfiguration; +use crate::core::config_generation::IdWithIdentifier; +use crate::core::config_generation::MatchingRule; +use crate::core::config_generation::MatchingStrategy; +use crate::core::ApplicationIdentifier; +use crate::core::Axis; +use crate::core::BorderImplementation; +use crate::core::FocusFollowsMouseImplementation; +use crate::core::Layout; +use crate::core::MoveBehaviour; +use crate::core::OperationDirection; +use crate::core::Rect; +use crate::core::Sizing; +use crate::core::SocketMessage; +use crate::core::StateQuery; +use crate::core::WindowContainerBehaviour; +use crate::core::WindowKind; use crate::border_manager; use crate::border_manager::IMPLEMENTATION; diff --git a/komorebi/src/process_event.rs b/komorebi/src/process_event.rs index bba4a100..cd546b50 100644 --- a/komorebi/src/process_event.rs +++ b/komorebi/src/process_event.rs @@ -9,10 +9,10 @@ use color_eyre::Result; use crossbeam_utils::atomic::AtomicConsume; use parking_lot::Mutex; -use komorebi_core::OperationDirection; -use komorebi_core::Rect; -use komorebi_core::Sizing; -use komorebi_core::WindowContainerBehaviour; +use crate::core::OperationDirection; +use crate::core::Rect; +use crate::core::Sizing; +use crate::core::WindowContainerBehaviour; use crate::border_manager; use crate::border_manager::BORDER_OFFSET; diff --git a/komorebi/src/process_movement.rs b/komorebi/src/process_movement.rs index f5f8d75d..47dceebb 100644 --- a/komorebi/src/process_movement.rs +++ b/komorebi/src/process_movement.rs @@ -5,7 +5,7 @@ use winput::message_loop; use winput::message_loop::Event; use winput::Action; -use komorebi_core::FocusFollowsMouseImplementation; +use crate::core::FocusFollowsMouseImplementation; use crate::window_manager::WindowManager; diff --git a/komorebi/src/stackbar_manager/mod.rs b/komorebi/src/stackbar_manager/mod.rs index 06efd04c..26415041 100644 --- a/komorebi/src/stackbar_manager/mod.rs +++ b/komorebi/src/stackbar_manager/mod.rs @@ -1,6 +1,8 @@ mod stackbar; use crate::container::Container; +use crate::core::StackbarLabel; +use crate::core::StackbarMode; use crate::stackbar_manager::stackbar::Stackbar; use crate::WindowManager; use crate::WindowsApi; @@ -9,8 +11,6 @@ use crossbeam_channel::Receiver; use crossbeam_channel::Sender; use crossbeam_utils::atomic::AtomicCell; use crossbeam_utils::atomic::AtomicConsume; -use komorebi_core::StackbarLabel; -use komorebi_core::StackbarMode; use lazy_static::lazy_static; use parking_lot::Mutex; use std::collections::hash_map::Entry; diff --git a/komorebi/src/stackbar_manager/stackbar.rs b/komorebi/src/stackbar_manager/stackbar.rs index a688d3fb..46e147c8 100644 --- a/komorebi/src/stackbar_manager/stackbar.rs +++ b/komorebi/src/stackbar_manager/stackbar.rs @@ -2,6 +2,9 @@ use crate::border_manager::BORDER_OFFSET; use crate::border_manager::BORDER_WIDTH; use crate::border_manager::STYLE; use crate::container::Container; +use crate::core::BorderStyle; +use crate::core::Rect; +use crate::core::StackbarLabel; use crate::stackbar_manager::STACKBARS_CONTAINERS; use crate::stackbar_manager::STACKBAR_FOCUSED_TEXT_COLOUR; use crate::stackbar_manager::STACKBAR_FONT_FAMILY; @@ -15,9 +18,6 @@ use crate::WindowsApi; use crate::DEFAULT_CONTAINER_PADDING; use crate::WINDOWS_11; use crossbeam_utils::atomic::AtomicConsume; -use komorebi_core::BorderStyle; -use komorebi_core::Rect; -use komorebi_core::StackbarLabel; use std::os::windows::ffi::OsStrExt; use std::sync::atomic::Ordering; use std::sync::mpsc; diff --git a/komorebi/src/static_config.rs b/komorebi/src/static_config.rs index d81f5313..65483aae 100644 --- a/komorebi/src/static_config.rs +++ b/komorebi/src/static_config.rs @@ -4,6 +4,9 @@ use crate::border_manager::IMPLEMENTATION; use crate::border_manager::STYLE; use crate::border_manager::Z_ORDER; use crate::colour::Colour; +use crate::core::BorderImplementation; +use crate::core::StackbarLabel; +use crate::core::StackbarMode; use crate::current_virtual_desktop; use crate::monitor::Monitor; use crate::monitor_reconciliator; @@ -41,33 +44,30 @@ use crate::REGEX_IDENTIFIERS; use crate::TRAY_AND_MULTI_WINDOW_IDENTIFIERS; use crate::WINDOWS_11; use crate::WORKSPACE_RULES; -use komorebi_core::BorderImplementation; -use komorebi_core::StackbarLabel; -use komorebi_core::StackbarMode; +use crate::core::config_generation::ApplicationConfiguration; +use crate::core::config_generation::ApplicationConfigurationGenerator; +use crate::core::config_generation::ApplicationOptions; +use crate::core::config_generation::IdWithIdentifier; +use crate::core::config_generation::MatchingRule; +use crate::core::config_generation::MatchingStrategy; +use crate::core::resolve_home_path; +use crate::core::AnimationStyle; +use crate::core::ApplicationIdentifier; +use crate::core::BorderStyle; +use crate::core::DefaultLayout; +use crate::core::FocusFollowsMouseImplementation; +use crate::core::HidingBehaviour; +use crate::core::Layout; +use crate::core::MoveBehaviour; +use crate::core::OperationBehaviour; +use crate::core::Rect; +use crate::core::SocketMessage; +use crate::core::WindowContainerBehaviour; use color_eyre::Result; use crossbeam_channel::Receiver; use hotwatch::EventKind; use hotwatch::Hotwatch; -use komorebi_core::config_generation::ApplicationConfiguration; -use komorebi_core::config_generation::ApplicationConfigurationGenerator; -use komorebi_core::config_generation::ApplicationOptions; -use komorebi_core::config_generation::IdWithIdentifier; -use komorebi_core::config_generation::MatchingRule; -use komorebi_core::config_generation::MatchingStrategy; -use komorebi_core::resolve_home_path; -use komorebi_core::AnimationStyle; -use komorebi_core::ApplicationIdentifier; -use komorebi_core::BorderStyle; -use komorebi_core::DefaultLayout; -use komorebi_core::FocusFollowsMouseImplementation; -use komorebi_core::HidingBehaviour; -use komorebi_core::Layout; -use komorebi_core::MoveBehaviour; -use komorebi_core::OperationBehaviour; -use komorebi_core::Rect; -use komorebi_core::SocketMessage; -use komorebi_core::WindowContainerBehaviour; use parking_lot::Mutex; use regex::Regex; use schemars::JsonSchema; diff --git a/komorebi/src/window.rs b/komorebi/src/window.rs index 3af98dc2..11da1745 100644 --- a/komorebi/src/window.rs +++ b/komorebi/src/window.rs @@ -15,12 +15,12 @@ use std::sync::atomic::AtomicI32; use std::sync::atomic::Ordering; use std::time::Duration; +use crate::core::config_generation::IdWithIdentifier; +use crate::core::config_generation::MatchingRule; +use crate::core::config_generation::MatchingStrategy; use color_eyre::eyre; use color_eyre::Result; use crossbeam_utils::atomic::AtomicConsume; -use komorebi_core::config_generation::IdWithIdentifier; -use komorebi_core::config_generation::MatchingRule; -use komorebi_core::config_generation::MatchingStrategy; use regex::Regex; use schemars::JsonSchema; use serde::ser::SerializeStruct; @@ -29,9 +29,9 @@ use serde::Serialize; use serde::Serializer; use windows::Win32::Foundation::HWND; -use komorebi_core::ApplicationIdentifier; -use komorebi_core::HidingBehaviour; -use komorebi_core::Rect; +use crate::core::ApplicationIdentifier; +use crate::core::HidingBehaviour; +use crate::core::Rect; use crate::animation::Animation; use crate::styles::ExtendedWindowStyle; diff --git a/komorebi/src/window_manager.rs b/komorebi/src/window_manager.rs index 0386db90..083f7679 100644 --- a/komorebi/src/window_manager.rs +++ b/komorebi/src/window_manager.rs @@ -22,27 +22,28 @@ use serde::Deserialize; use serde::Serialize; use uds_windows::UnixListener; -use komorebi_core::config_generation::MatchingRule; -use komorebi_core::custom_layout::CustomLayout; -use komorebi_core::Arrangement; -use komorebi_core::Axis; -use komorebi_core::BorderStyle; -use komorebi_core::CycleDirection; -use komorebi_core::DefaultLayout; -use komorebi_core::FocusFollowsMouseImplementation; -use komorebi_core::HidingBehaviour; -use komorebi_core::Layout; -use komorebi_core::MoveBehaviour; -use komorebi_core::OperationBehaviour; -use komorebi_core::OperationDirection; -use komorebi_core::Rect; -use komorebi_core::Sizing; -use komorebi_core::StackbarLabel; -use komorebi_core::WindowContainerBehaviour; +use crate::core::config_generation::MatchingRule; +use crate::core::custom_layout::CustomLayout; +use crate::core::Arrangement; +use crate::core::Axis; +use crate::core::BorderStyle; +use crate::core::CycleDirection; +use crate::core::DefaultLayout; +use crate::core::FocusFollowsMouseImplementation; +use crate::core::HidingBehaviour; +use crate::core::Layout; +use crate::core::MoveBehaviour; +use crate::core::OperationBehaviour; +use crate::core::OperationDirection; +use crate::core::Rect; +use crate::core::Sizing; +use crate::core::StackbarLabel; +use crate::core::WindowContainerBehaviour; use crate::border_manager; use crate::border_manager::STYLE; use crate::container::Container; +use crate::core::StackbarMode; use crate::current_virtual_desktop; use crate::load_configuration; use crate::monitor::Monitor; @@ -80,7 +81,6 @@ use crate::OBJECT_NAME_CHANGE_ON_LAUNCH; use crate::REMOVE_TITLEBARS; use crate::TRAY_AND_MULTI_WINDOW_IDENTIFIERS; use crate::WORKSPACE_RULES; -use komorebi_core::StackbarMode; #[derive(Debug)] pub struct WindowManager { diff --git a/komorebi/src/windows_api.rs b/komorebi/src/windows_api.rs index 937eeabe..2ebe6a2a 100644 --- a/komorebi/src/windows_api.rs +++ b/komorebi/src/windows_api.rs @@ -134,7 +134,7 @@ use windows::Win32::UI::WindowsAndMessaging::WS_EX_TOPMOST; use windows::Win32::UI::WindowsAndMessaging::WS_POPUP; use windows::Win32::UI::WindowsAndMessaging::WS_SYSMENU; -use komorebi_core::Rect; +use crate::core::Rect; use crate::container::Container; use crate::monitor; diff --git a/komorebi/src/workspace.rs b/komorebi/src/workspace.rs index d543700a..54752863 100644 --- a/komorebi/src/workspace.rs +++ b/komorebi/src/workspace.rs @@ -12,13 +12,13 @@ use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use komorebi_core::Axis; -use komorebi_core::CustomLayout; -use komorebi_core::CycleDirection; -use komorebi_core::DefaultLayout; -use komorebi_core::Layout; -use komorebi_core::OperationDirection; -use komorebi_core::Rect; +use crate::core::Axis; +use crate::core::CustomLayout; +use crate::core::CycleDirection; +use crate::core::DefaultLayout; +use crate::core::Layout; +use crate::core::OperationDirection; +use crate::core::Rect; use crate::border_manager::BORDER_OFFSET; use crate::border_manager::BORDER_WIDTH; diff --git a/komorebic/Cargo.toml b/komorebic/Cargo.toml index 3c49ae22..6130e262 100644 --- a/komorebic/Cargo.toml +++ b/komorebic/Cargo.toml @@ -11,7 +11,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -komorebi-core = { path = "../komorebi-core" } komorebi-client = { path = "../komorebi-client" } clap = { version = "4", features = ["derive", "wrap_help"] } diff --git a/komorebic/src/main.rs b/komorebic/src/main.rs index f07319ba..6a924dbb 100644 --- a/komorebic/src/main.rs +++ b/komorebic/src/main.rs @@ -6,9 +6,7 @@ use std::fs::File; use std::fs::OpenOptions; use std::io::BufRead; use std::io::BufReader; -use std::io::Read; use std::io::Write; -use std::net::Shutdown; use std::path::Path; use std::path::PathBuf; use std::process::Command; @@ -24,36 +22,37 @@ use color_eyre::eyre::bail; use color_eyre::Result; use dirs::data_local_dir; use fs_tail::TailedFile; -use komorebi_core::resolve_home_path; +use komorebi_client::resolve_home_path; +use komorebi_client::send_message; +use komorebi_client::send_query; use lazy_static::lazy_static; use miette::NamedSource; use miette::Report; use miette::SourceOffset; use miette::SourceSpan; use paste::paste; -use uds_windows::UnixStream; use which::which; use windows::Win32::Foundation::HWND; use windows::Win32::UI::WindowsAndMessaging::ShowWindow; use windows::Win32::UI::WindowsAndMessaging::SHOW_WINDOW_CMD; use windows::Win32::UI::WindowsAndMessaging::SW_RESTORE; +use komorebi_client::ApplicationConfigurationGenerator; +use komorebi_client::ApplicationIdentifier; +use komorebi_client::Axis; +use komorebi_client::CycleDirection; +use komorebi_client::DefaultLayout; +use komorebi_client::FocusFollowsMouseImplementation; +use komorebi_client::HidingBehaviour; +use komorebi_client::MoveBehaviour; +use komorebi_client::OperationBehaviour; +use komorebi_client::OperationDirection; +use komorebi_client::Rect; +use komorebi_client::Sizing; +use komorebi_client::SocketMessage; +use komorebi_client::StateQuery; use komorebi_client::StaticConfig; -use komorebi_core::config_generation::ApplicationConfigurationGenerator; -use komorebi_core::ApplicationIdentifier; -use komorebi_core::Axis; -use komorebi_core::CycleDirection; -use komorebi_core::DefaultLayout; -use komorebi_core::FocusFollowsMouseImplementation; -use komorebi_core::HidingBehaviour; -use komorebi_core::MoveBehaviour; -use komorebi_core::OperationBehaviour; -use komorebi_core::OperationDirection; -use komorebi_core::Rect; -use komorebi_core::Sizing; -use komorebi_core::SocketMessage; -use komorebi_core::StateQuery; -use komorebi_core::WindowKind; +use komorebi_client::WindowKind; lazy_static! { static ref HAS_CUSTOM_CONFIG_HOME: AtomicBool = AtomicBool::new(false); @@ -704,14 +703,14 @@ struct BorderOffset { struct BorderStyle { /// Desired border style #[clap(value_enum)] - style: komorebi_core::BorderStyle, + style: komorebi_client::BorderStyle, } #[derive(Parser)] struct BorderImplementation { /// Desired border implementation #[clap(value_enum)] - style: komorebi_core::BorderImplementation, + style: komorebi_client::BorderImplementation, } #[derive(Parser)] @@ -736,7 +735,7 @@ struct AnimationFps { struct AnimationStyle { /// Desired ease function for animation #[clap(value_enum, short, long, default_value = "linear")] - style: komorebi_core::AnimationStyle, + style: komorebi_client::AnimationStyle, } #[derive(Parser)] @@ -1305,32 +1304,10 @@ enum SubCommand { DisableAutostart, } -pub fn send_message(bytes: &[u8]) -> Result<()> { - let socket = DATA_DIR.join("komorebi.sock"); - - let mut stream = UnixStream::connect(socket)?; - stream.write_all(bytes)?; - Ok(stream.shutdown(Shutdown::Write)?) -} - -pub fn send_query(bytes: &[u8]) -> Result { - let socket = DATA_DIR.join("komorebi.sock"); - - let mut stream = UnixStream::connect(socket)?; - stream.write_all(bytes)?; - stream.shutdown(Shutdown::Write)?; - - let mut reader = BufReader::new(stream); - let mut response = String::new(); - reader.read_to_string(&mut response)?; - - Ok(response) -} - // print_query is a helper that queries komorebi and prints the response. // panics on error. -fn print_query(bytes: &[u8]) { - match send_query(bytes) { +fn print_query(message: &SocketMessage) { + match send_query(message) { Ok(response) => println!("{response}"), Err(error) => panic!("{}", error), } @@ -1571,290 +1548,267 @@ fn main() -> Result<()> { } } SubCommand::Focus(arg) => { - send_message(&SocketMessage::FocusWindow(arg.operation_direction).as_bytes()?)?; + send_message(&SocketMessage::FocusWindow(arg.operation_direction))?; } SubCommand::ForceFocus => { - send_message(&SocketMessage::ForceFocus.as_bytes()?)?; + send_message(&SocketMessage::ForceFocus)?; } SubCommand::Close => { - send_message(&SocketMessage::Close.as_bytes()?)?; + send_message(&SocketMessage::Close)?; } SubCommand::Minimize => { - send_message(&SocketMessage::Minimize.as_bytes()?)?; + send_message(&SocketMessage::Minimize)?; } SubCommand::Promote => { - send_message(&SocketMessage::Promote.as_bytes()?)?; + send_message(&SocketMessage::Promote)?; } SubCommand::PromoteFocus => { - send_message(&SocketMessage::PromoteFocus.as_bytes()?)?; + send_message(&SocketMessage::PromoteFocus)?; } SubCommand::PromoteWindow(arg) => { - send_message(&SocketMessage::PromoteWindow(arg.operation_direction).as_bytes()?)?; + send_message(&SocketMessage::PromoteWindow(arg.operation_direction))?; } SubCommand::TogglePause => { - send_message(&SocketMessage::TogglePause.as_bytes()?)?; + send_message(&SocketMessage::TogglePause)?; } SubCommand::Retile => { - send_message(&SocketMessage::Retile.as_bytes()?)?; + send_message(&SocketMessage::Retile)?; } SubCommand::Move(arg) => { - send_message(&SocketMessage::MoveWindow(arg.operation_direction).as_bytes()?)?; + send_message(&SocketMessage::MoveWindow(arg.operation_direction))?; } SubCommand::CycleFocus(arg) => { - send_message(&SocketMessage::CycleFocusWindow(arg.cycle_direction).as_bytes()?)?; + send_message(&SocketMessage::CycleFocusWindow(arg.cycle_direction))?; } SubCommand::CycleMove(arg) => { - send_message(&SocketMessage::CycleMoveWindow(arg.cycle_direction).as_bytes()?)?; + send_message(&SocketMessage::CycleMoveWindow(arg.cycle_direction))?; } SubCommand::MoveToMonitor(arg) => { - send_message(&SocketMessage::MoveContainerToMonitorNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::MoveContainerToMonitorNumber(arg.target))?; } SubCommand::CycleMoveToMonitor(arg) => { - send_message( - &SocketMessage::CycleMoveContainerToMonitor(arg.cycle_direction).as_bytes()?, - )?; + send_message(&SocketMessage::CycleMoveContainerToMonitor( + arg.cycle_direction, + ))?; } SubCommand::MoveToWorkspace(arg) => { - send_message(&SocketMessage::MoveContainerToWorkspaceNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::MoveContainerToWorkspaceNumber(arg.target))?; } SubCommand::MoveToNamedWorkspace(arg) => { - send_message(&SocketMessage::MoveContainerToNamedWorkspace(arg.workspace).as_bytes()?)?; + send_message(&SocketMessage::MoveContainerToNamedWorkspace(arg.workspace))?; } SubCommand::CycleMoveToWorkspace(arg) => { - send_message( - &SocketMessage::CycleMoveContainerToWorkspace(arg.cycle_direction).as_bytes()?, - )?; + send_message(&SocketMessage::CycleMoveContainerToWorkspace( + arg.cycle_direction, + ))?; } SubCommand::SendToMonitor(arg) => { - send_message(&SocketMessage::SendContainerToMonitorNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::SendContainerToMonitorNumber(arg.target))?; } SubCommand::CycleSendToMonitor(arg) => { - send_message( - &SocketMessage::CycleSendContainerToMonitor(arg.cycle_direction).as_bytes()?, - )?; + send_message(&SocketMessage::CycleSendContainerToMonitor( + arg.cycle_direction, + ))?; } SubCommand::SendToWorkspace(arg) => { - send_message(&SocketMessage::SendContainerToWorkspaceNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::SendContainerToWorkspaceNumber(arg.target))?; } SubCommand::SendToNamedWorkspace(arg) => { - send_message(&SocketMessage::SendContainerToNamedWorkspace(arg.workspace).as_bytes()?)?; + send_message(&SocketMessage::SendContainerToNamedWorkspace(arg.workspace))?; } SubCommand::CycleSendToWorkspace(arg) => { - send_message( - &SocketMessage::CycleSendContainerToWorkspace(arg.cycle_direction).as_bytes()?, - )?; + send_message(&SocketMessage::CycleSendContainerToWorkspace( + arg.cycle_direction, + ))?; } SubCommand::SendToMonitorWorkspace(arg) => { - send_message( - &SocketMessage::SendContainerToMonitorWorkspaceNumber( - arg.target_monitor, - arg.target_workspace, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::SendContainerToMonitorWorkspaceNumber( + arg.target_monitor, + arg.target_workspace, + ))?; } SubCommand::MoveToMonitorWorkspace(arg) => { - send_message( - &SocketMessage::MoveContainerToMonitorWorkspaceNumber( - arg.target_monitor, - arg.target_workspace, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::MoveContainerToMonitorWorkspaceNumber( + arg.target_monitor, + arg.target_workspace, + ))?; } SubCommand::MoveWorkspaceToMonitor(arg) => { - send_message(&SocketMessage::MoveWorkspaceToMonitorNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::MoveWorkspaceToMonitorNumber(arg.target))?; } SubCommand::CycleMoveWorkspaceToMonitor(arg) => { - send_message( - &SocketMessage::CycleMoveWorkspaceToMonitor(arg.cycle_direction).as_bytes()?, - )?; + send_message(&SocketMessage::CycleMoveWorkspaceToMonitor( + arg.cycle_direction, + ))?; } SubCommand::SwapWorkspacesWithMonitor(arg) => { - send_message(&SocketMessage::SwapWorkspacesToMonitorNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::SwapWorkspacesToMonitorNumber(arg.target))?; } SubCommand::InvisibleBorders(arg) => { - send_message( - &SocketMessage::InvisibleBorders(Rect { - left: arg.left, - top: arg.top, - right: arg.right, - bottom: arg.bottom, - }) - .as_bytes()?, - )?; + send_message(&SocketMessage::InvisibleBorders(Rect { + left: arg.left, + top: arg.top, + right: arg.right, + bottom: arg.bottom, + }))?; } SubCommand::MonitorWorkAreaOffset(arg) => { - send_message( - &SocketMessage::MonitorWorkAreaOffset( - arg.monitor, - Rect { - left: arg.left, - top: arg.top, - right: arg.right, - bottom: arg.bottom, - }, - ) - .as_bytes()?, - )?; - } - SubCommand::GlobalWorkAreaOffset(arg) => { - send_message( - &SocketMessage::WorkAreaOffset(Rect { + send_message(&SocketMessage::MonitorWorkAreaOffset( + arg.monitor, + Rect { left: arg.left, top: arg.top, right: arg.right, bottom: arg.bottom, - }) - .as_bytes()?, - )?; + }, + ))?; + } + SubCommand::GlobalWorkAreaOffset(arg) => { + send_message(&SocketMessage::WorkAreaOffset(Rect { + left: arg.left, + top: arg.top, + right: arg.right, + bottom: arg.bottom, + }))?; } SubCommand::ContainerPadding(arg) => { - send_message( - &SocketMessage::ContainerPadding(arg.monitor, arg.workspace, arg.size) - .as_bytes()?, - )?; + send_message(&SocketMessage::ContainerPadding( + arg.monitor, + arg.workspace, + arg.size, + ))?; } SubCommand::NamedWorkspaceContainerPadding(arg) => { - send_message( - &SocketMessage::NamedWorkspaceContainerPadding(arg.workspace, arg.size) - .as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspaceContainerPadding( + arg.workspace, + arg.size, + ))?; } SubCommand::WorkspacePadding(arg) => { - send_message( - &SocketMessage::WorkspacePadding(arg.monitor, arg.workspace, arg.size) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspacePadding( + arg.monitor, + arg.workspace, + arg.size, + ))?; } SubCommand::NamedWorkspacePadding(arg) => { - send_message( - &SocketMessage::NamedWorkspacePadding(arg.workspace, arg.size).as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspacePadding( + arg.workspace, + arg.size, + ))?; } SubCommand::FocusedWorkspacePadding(arg) => { - send_message(&SocketMessage::FocusedWorkspacePadding(arg.size).as_bytes()?)?; + send_message(&SocketMessage::FocusedWorkspacePadding(arg.size))?; } SubCommand::FocusedWorkspaceContainerPadding(arg) => { - send_message(&SocketMessage::FocusedWorkspaceContainerPadding(arg.size).as_bytes()?)?; + send_message(&SocketMessage::FocusedWorkspaceContainerPadding(arg.size))?; } SubCommand::AdjustWorkspacePadding(arg) => { - send_message( - &SocketMessage::AdjustWorkspacePadding(arg.sizing, arg.adjustment).as_bytes()?, - )?; + send_message(&SocketMessage::AdjustWorkspacePadding( + arg.sizing, + arg.adjustment, + ))?; } SubCommand::AdjustContainerPadding(arg) => { - send_message( - &SocketMessage::AdjustContainerPadding(arg.sizing, arg.adjustment).as_bytes()?, - )?; + send_message(&SocketMessage::AdjustContainerPadding( + arg.sizing, + arg.adjustment, + ))?; } SubCommand::ToggleFocusFollowsMouse(arg) => { - send_message(&SocketMessage::ToggleFocusFollowsMouse(arg.implementation).as_bytes()?)?; + send_message(&SocketMessage::ToggleFocusFollowsMouse(arg.implementation))?; } SubCommand::ToggleTiling => { - send_message(&SocketMessage::ToggleTiling.as_bytes()?)?; + send_message(&SocketMessage::ToggleTiling)?; } SubCommand::ToggleFloat => { - send_message(&SocketMessage::ToggleFloat.as_bytes()?)?; + send_message(&SocketMessage::ToggleFloat)?; } SubCommand::ToggleMonocle => { - send_message(&SocketMessage::ToggleMonocle.as_bytes()?)?; + send_message(&SocketMessage::ToggleMonocle)?; } SubCommand::ToggleMaximize => { - send_message(&SocketMessage::ToggleMaximize.as_bytes()?)?; + send_message(&SocketMessage::ToggleMaximize)?; } SubCommand::WorkspaceLayout(arg) => { - send_message( - &SocketMessage::WorkspaceLayout(arg.monitor, arg.workspace, arg.value) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspaceLayout( + arg.monitor, + arg.workspace, + arg.value, + ))?; } SubCommand::NamedWorkspaceLayout(arg) => { - send_message( - &SocketMessage::NamedWorkspaceLayout(arg.workspace, arg.value).as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspaceLayout( + arg.workspace, + arg.value, + ))?; } SubCommand::WorkspaceCustomLayout(arg) => { - send_message( - &SocketMessage::WorkspaceLayoutCustom( - arg.monitor, - arg.workspace, - resolve_home_path(arg.path)?, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspaceLayoutCustom( + arg.monitor, + arg.workspace, + resolve_home_path(arg.path)?, + ))?; } SubCommand::NamedWorkspaceCustomLayout(arg) => { - send_message( - &SocketMessage::NamedWorkspaceLayoutCustom( - arg.workspace, - resolve_home_path(arg.path)?, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspaceLayoutCustom( + arg.workspace, + resolve_home_path(arg.path)?, + ))?; } SubCommand::WorkspaceLayoutRule(arg) => { - send_message( - &SocketMessage::WorkspaceLayoutRule( - arg.monitor, - arg.workspace, - arg.at_container_count, - arg.layout, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspaceLayoutRule( + arg.monitor, + arg.workspace, + arg.at_container_count, + arg.layout, + ))?; } SubCommand::NamedWorkspaceLayoutRule(arg) => { - send_message( - &SocketMessage::NamedWorkspaceLayoutRule( - arg.workspace, - arg.at_container_count, - arg.layout, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspaceLayoutRule( + arg.workspace, + arg.at_container_count, + arg.layout, + ))?; } SubCommand::WorkspaceCustomLayoutRule(arg) => { - send_message( - &SocketMessage::WorkspaceLayoutCustomRule( - arg.monitor, - arg.workspace, - arg.at_container_count, - resolve_home_path(arg.path)?, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspaceLayoutCustomRule( + arg.monitor, + arg.workspace, + arg.at_container_count, + resolve_home_path(arg.path)?, + ))?; } SubCommand::NamedWorkspaceCustomLayoutRule(arg) => { - send_message( - &SocketMessage::NamedWorkspaceLayoutCustomRule( - arg.workspace, - arg.at_container_count, - resolve_home_path(arg.path)?, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspaceLayoutCustomRule( + arg.workspace, + arg.at_container_count, + resolve_home_path(arg.path)?, + ))?; } SubCommand::ClearWorkspaceLayoutRules(arg) => { - send_message( - &SocketMessage::ClearWorkspaceLayoutRules(arg.monitor, arg.workspace).as_bytes()?, - )?; + send_message(&SocketMessage::ClearWorkspaceLayoutRules( + arg.monitor, + arg.workspace, + ))?; } SubCommand::ClearNamedWorkspaceLayoutRules(arg) => { - send_message( - &SocketMessage::ClearNamedWorkspaceLayoutRules(arg.workspace).as_bytes()?, - )?; + send_message(&SocketMessage::ClearNamedWorkspaceLayoutRules( + arg.workspace, + ))?; } SubCommand::WorkspaceTiling(arg) => { - send_message( - &SocketMessage::WorkspaceTiling(arg.monitor, arg.workspace, arg.value.into()) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspaceTiling( + arg.monitor, + arg.workspace, + arg.value.into(), + ))?; } SubCommand::NamedWorkspaceTiling(arg) => { - send_message( - &SocketMessage::NamedWorkspaceTiling(arg.workspace, arg.value.into()).as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspaceTiling( + arg.workspace, + arg.value.into(), + ))?; } SubCommand::Start(arg) => { let mut ahk: String = String::from("autohotkey.exe"); @@ -2057,7 +2011,7 @@ Stop-Process -Name:whkd -ErrorAction SilentlyContinue } } - send_message(&SocketMessage::Stop.as_bytes()?)?; + send_message(&SocketMessage::Stop)?; let mut system = sysinfo::System::new_all(); system.refresh_processes(); @@ -2088,165 +2042,163 @@ Stop-Process -Name:komorebi -ErrorAction SilentlyContinue } } SubCommand::FloatRule(arg) => { - send_message(&SocketMessage::FloatRule(arg.identifier, arg.id).as_bytes()?)?; + send_message(&SocketMessage::FloatRule(arg.identifier, arg.id))?; } SubCommand::ManageRule(arg) => { - send_message(&SocketMessage::ManageRule(arg.identifier, arg.id).as_bytes()?)?; + send_message(&SocketMessage::ManageRule(arg.identifier, arg.id))?; } SubCommand::InitialWorkspaceRule(arg) => { - send_message( - &SocketMessage::InitialWorkspaceRule( - arg.identifier, - arg.id, - arg.monitor, - arg.workspace, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::InitialWorkspaceRule( + arg.identifier, + arg.id, + arg.monitor, + arg.workspace, + ))?; } SubCommand::InitialNamedWorkspaceRule(arg) => { - send_message( - &SocketMessage::InitialNamedWorkspaceRule(arg.identifier, arg.id, arg.workspace) - .as_bytes()?, - )?; + send_message(&SocketMessage::InitialNamedWorkspaceRule( + arg.identifier, + arg.id, + arg.workspace, + ))?; } SubCommand::WorkspaceRule(arg) => { - send_message( - &SocketMessage::WorkspaceRule(arg.identifier, arg.id, arg.monitor, arg.workspace) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspaceRule( + arg.identifier, + arg.id, + arg.monitor, + arg.workspace, + ))?; } SubCommand::NamedWorkspaceRule(arg) => { - send_message( - &SocketMessage::NamedWorkspaceRule(arg.identifier, arg.id, arg.workspace) - .as_bytes()?, - )?; + send_message(&SocketMessage::NamedWorkspaceRule( + arg.identifier, + arg.id, + arg.workspace, + ))?; } SubCommand::ClearWorkspaceRules(arg) => { - send_message( - &SocketMessage::ClearWorkspaceRules(arg.monitor, arg.workspace).as_bytes()?, - )?; + send_message(&SocketMessage::ClearWorkspaceRules( + arg.monitor, + arg.workspace, + ))?; } SubCommand::ClearNamedWorkspaceRules(arg) => { - send_message(&SocketMessage::ClearNamedWorkspaceRules(arg.workspace).as_bytes()?)?; + send_message(&SocketMessage::ClearNamedWorkspaceRules(arg.workspace))?; } SubCommand::ClearAllWorkspaceRules => { - send_message(&SocketMessage::ClearAllWorkspaceRules.as_bytes()?)?; + send_message(&SocketMessage::ClearAllWorkspaceRules)?; } SubCommand::Stack(arg) => { - send_message(&SocketMessage::StackWindow(arg.operation_direction).as_bytes()?)?; + send_message(&SocketMessage::StackWindow(arg.operation_direction))?; } SubCommand::StackAll => { - send_message(&SocketMessage::StackAll.as_bytes()?)?; + send_message(&SocketMessage::StackAll)?; } SubCommand::Unstack => { - send_message(&SocketMessage::UnstackWindow.as_bytes()?)?; + send_message(&SocketMessage::UnstackWindow)?; } SubCommand::UnstackAll => { - send_message(&SocketMessage::UnstackAll.as_bytes()?)?; + send_message(&SocketMessage::UnstackAll)?; } SubCommand::CycleStack(arg) => { - send_message(&SocketMessage::CycleStack(arg.cycle_direction).as_bytes()?)?; + send_message(&SocketMessage::CycleStack(arg.cycle_direction))?; } SubCommand::ChangeLayout(arg) => { - send_message(&SocketMessage::ChangeLayout(arg.default_layout).as_bytes()?)?; + send_message(&SocketMessage::ChangeLayout(arg.default_layout))?; } SubCommand::CycleLayout(arg) => { - send_message(&SocketMessage::CycleLayout(arg.cycle_direction).as_bytes()?)?; + send_message(&SocketMessage::CycleLayout(arg.cycle_direction))?; } SubCommand::LoadCustomLayout(arg) => { - send_message( - &SocketMessage::ChangeLayoutCustom(resolve_home_path(arg.path)?).as_bytes()?, - )?; + send_message(&SocketMessage::ChangeLayoutCustom(resolve_home_path( + arg.path, + )?))?; } SubCommand::FlipLayout(arg) => { - send_message(&SocketMessage::FlipLayout(arg.axis).as_bytes()?)?; + send_message(&SocketMessage::FlipLayout(arg.axis))?; } SubCommand::FocusMonitor(arg) => { - send_message(&SocketMessage::FocusMonitorNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::FocusMonitorNumber(arg.target))?; } SubCommand::FocusLastWorkspace => { - send_message(&SocketMessage::FocusLastWorkspace.as_bytes()?)?; + send_message(&SocketMessage::FocusLastWorkspace)?; } SubCommand::FocusWorkspace(arg) => { - send_message(&SocketMessage::FocusWorkspaceNumber(arg.target).as_bytes()?)?; + send_message(&SocketMessage::FocusWorkspaceNumber(arg.target))?; } SubCommand::FocusWorkspaces(arg) => { - send_message(&SocketMessage::FocusWorkspaceNumbers(arg.target).as_bytes()?)?; + send_message(&SocketMessage::FocusWorkspaceNumbers(arg.target))?; } SubCommand::FocusMonitorWorkspace(arg) => { - send_message( - &SocketMessage::FocusMonitorWorkspaceNumber( - arg.target_monitor, - arg.target_workspace, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::FocusMonitorWorkspaceNumber( + arg.target_monitor, + arg.target_workspace, + ))?; } SubCommand::FocusNamedWorkspace(arg) => { - send_message(&SocketMessage::FocusNamedWorkspace(arg.workspace).as_bytes()?)?; + send_message(&SocketMessage::FocusNamedWorkspace(arg.workspace))?; } SubCommand::CycleMonitor(arg) => { - send_message(&SocketMessage::CycleFocusMonitor(arg.cycle_direction).as_bytes()?)?; + send_message(&SocketMessage::CycleFocusMonitor(arg.cycle_direction))?; } SubCommand::CycleWorkspace(arg) => { - send_message(&SocketMessage::CycleFocusWorkspace(arg.cycle_direction).as_bytes()?)?; + send_message(&SocketMessage::CycleFocusWorkspace(arg.cycle_direction))?; } SubCommand::NewWorkspace => { - send_message(&SocketMessage::NewWorkspace.as_bytes()?)?; + send_message(&SocketMessage::NewWorkspace)?; } SubCommand::WorkspaceName(name) => { - send_message( - &SocketMessage::WorkspaceName(name.monitor, name.workspace, name.value) - .as_bytes()?, - )?; + send_message(&SocketMessage::WorkspaceName( + name.monitor, + name.workspace, + name.value, + ))?; } SubCommand::MonitorIndexPreference(arg) => { - send_message( - &SocketMessage::MonitorIndexPreference( - arg.index_preference, - arg.left, - arg.top, - arg.right, - arg.bottom, - ) - .as_bytes()?, - )?; + send_message(&SocketMessage::MonitorIndexPreference( + arg.index_preference, + arg.left, + arg.top, + arg.right, + arg.bottom, + ))?; } SubCommand::DisplayIndexPreference(arg) => { - send_message( - &SocketMessage::DisplayIndexPreference(arg.index_preference, arg.display) - .as_bytes()?, - )?; + send_message(&SocketMessage::DisplayIndexPreference( + arg.index_preference, + arg.display, + ))?; } SubCommand::EnsureWorkspaces(workspaces) => { - send_message( - &SocketMessage::EnsureWorkspaces(workspaces.monitor, workspaces.workspace_count) - .as_bytes()?, - )?; + send_message(&SocketMessage::EnsureWorkspaces( + workspaces.monitor, + workspaces.workspace_count, + ))?; } SubCommand::EnsureNamedWorkspaces(arg) => { - send_message( - &SocketMessage::EnsureNamedWorkspaces(arg.monitor, arg.names).as_bytes()?, - )?; + send_message(&SocketMessage::EnsureNamedWorkspaces( + arg.monitor, + arg.names, + ))?; } SubCommand::State => { - print_query(&SocketMessage::State.as_bytes()?); + print_query(&SocketMessage::State); } SubCommand::GlobalState => { - print_query(&SocketMessage::GlobalState.as_bytes()?); + print_query(&SocketMessage::GlobalState); } SubCommand::Gui => { Command::new("komorebi-gui").spawn()?; } SubCommand::VisibleWindows => { - print_query(&SocketMessage::VisibleWindows.as_bytes()?); + print_query(&SocketMessage::VisibleWindows); } SubCommand::MonitorInformation => { - print_query(&SocketMessage::MonitorInformation.as_bytes()?); + print_query(&SocketMessage::MonitorInformation); } SubCommand::Query(arg) => { - print_query(&SocketMessage::Query(arg.state_query).as_bytes()?); + print_query(&SocketMessage::Query(arg.state_query)); } SubCommand::RestoreWindows => { let hwnd_json = DATA_DIR.join("komorebi.hwnd.json"); @@ -2260,42 +2212,43 @@ Stop-Process -Name:komorebi -ErrorAction SilentlyContinue } } SubCommand::ResizeEdge(resize) => { - send_message(&SocketMessage::ResizeWindowEdge(resize.edge, resize.sizing).as_bytes()?)?; + send_message(&SocketMessage::ResizeWindowEdge(resize.edge, resize.sizing))?; } SubCommand::ResizeAxis(arg) => { - send_message(&SocketMessage::ResizeWindowAxis(arg.axis, arg.sizing).as_bytes()?)?; + send_message(&SocketMessage::ResizeWindowAxis(arg.axis, arg.sizing))?; } SubCommand::FocusFollowsMouse(arg) => { - send_message( - &SocketMessage::FocusFollowsMouse(arg.implementation, arg.boolean_state.into()) - .as_bytes()?, - )?; + send_message(&SocketMessage::FocusFollowsMouse( + arg.implementation, + arg.boolean_state.into(), + ))?; } SubCommand::ReloadConfiguration => { - send_message(&SocketMessage::ReloadConfiguration.as_bytes()?)?; + send_message(&SocketMessage::ReloadConfiguration)?; } SubCommand::WatchConfiguration(arg) => { - send_message(&SocketMessage::WatchConfiguration(arg.boolean_state.into()).as_bytes()?)?; + send_message(&SocketMessage::WatchConfiguration(arg.boolean_state.into()))?; } SubCommand::CompleteConfiguration => { - send_message(&SocketMessage::CompleteConfiguration.as_bytes()?)?; + send_message(&SocketMessage::CompleteConfiguration)?; } SubCommand::IdentifyObjectNameChangeApplication(target) => { - send_message( - &SocketMessage::IdentifyObjectNameChangeApplication(target.identifier, target.id) - .as_bytes()?, - )?; + send_message(&SocketMessage::IdentifyObjectNameChangeApplication( + target.identifier, + target.id, + ))?; } SubCommand::IdentifyTrayApplication(target) => { - send_message( - &SocketMessage::IdentifyTrayApplication(target.identifier, target.id).as_bytes()?, - )?; + send_message(&SocketMessage::IdentifyTrayApplication( + target.identifier, + target.id, + ))?; } SubCommand::IdentifyLayeredApplication(target) => { - send_message( - &SocketMessage::IdentifyLayeredApplication(target.identifier, target.id) - .as_bytes()?, - )?; + send_message(&SocketMessage::IdentifyLayeredApplication( + target.identifier, + target.id, + ))?; } SubCommand::RemoveTitleBar(target) => { match target.identifier { @@ -2305,108 +2258,110 @@ Stop-Process -Name:komorebi -ErrorAction SilentlyContinue } } - send_message(&SocketMessage::RemoveTitleBar(target.identifier, target.id).as_bytes()?)?; + send_message(&SocketMessage::RemoveTitleBar(target.identifier, target.id))?; } SubCommand::ToggleTitleBars => { - send_message(&SocketMessage::ToggleTitleBars.as_bytes()?)?; + send_message(&SocketMessage::ToggleTitleBars)?; } SubCommand::Manage => { - send_message(&SocketMessage::ManageFocusedWindow.as_bytes()?)?; + send_message(&SocketMessage::ManageFocusedWindow)?; } SubCommand::Unmanage => { - send_message(&SocketMessage::UnmanageFocusedWindow.as_bytes()?)?; + send_message(&SocketMessage::UnmanageFocusedWindow)?; } SubCommand::QuickSaveResize => { - send_message(&SocketMessage::QuickSave.as_bytes()?)?; + send_message(&SocketMessage::QuickSave)?; } SubCommand::QuickLoadResize => { - send_message(&SocketMessage::QuickLoad.as_bytes()?)?; + send_message(&SocketMessage::QuickLoad)?; } SubCommand::SaveResize(arg) => { - send_message(&SocketMessage::Save(resolve_home_path(arg.path)?).as_bytes()?)?; + send_message(&SocketMessage::Save(resolve_home_path(arg.path)?))?; } SubCommand::LoadResize(arg) => { - send_message(&SocketMessage::Load(resolve_home_path(arg.path)?).as_bytes()?)?; + send_message(&SocketMessage::Load(resolve_home_path(arg.path)?))?; } SubCommand::SubscribeSocket(arg) => { - send_message(&SocketMessage::AddSubscriberSocket(arg.socket).as_bytes()?)?; + send_message(&SocketMessage::AddSubscriberSocket(arg.socket))?; } SubCommand::UnsubscribeSocket(arg) => { - send_message(&SocketMessage::RemoveSubscriberSocket(arg.socket).as_bytes()?)?; + send_message(&SocketMessage::RemoveSubscriberSocket(arg.socket))?; } SubCommand::SubscribePipe(arg) => { - send_message(&SocketMessage::AddSubscriberPipe(arg.named_pipe).as_bytes()?)?; + send_message(&SocketMessage::AddSubscriberPipe(arg.named_pipe))?; } SubCommand::UnsubscribePipe(arg) => { - send_message(&SocketMessage::RemoveSubscriberPipe(arg.named_pipe).as_bytes()?)?; + send_message(&SocketMessage::RemoveSubscriberPipe(arg.named_pipe))?; } SubCommand::ToggleMouseFollowsFocus => { - send_message(&SocketMessage::ToggleMouseFollowsFocus.as_bytes()?)?; + send_message(&SocketMessage::ToggleMouseFollowsFocus)?; } SubCommand::MouseFollowsFocus(arg) => { - send_message(&SocketMessage::MouseFollowsFocus(arg.boolean_state.into()).as_bytes()?)?; + send_message(&SocketMessage::MouseFollowsFocus(arg.boolean_state.into()))?; } SubCommand::Border(arg) => { - send_message(&SocketMessage::Border(arg.boolean_state.into()).as_bytes()?)?; + send_message(&SocketMessage::Border(arg.boolean_state.into()))?; } SubCommand::BorderColour(arg) => { - send_message( - &SocketMessage::BorderColour(arg.window_kind, arg.r, arg.g, arg.b).as_bytes()?, - )?; + send_message(&SocketMessage::BorderColour( + arg.window_kind, + arg.r, + arg.g, + arg.b, + ))?; } SubCommand::BorderWidth(arg) => { - send_message(&SocketMessage::BorderWidth(arg.width).as_bytes()?)?; + send_message(&SocketMessage::BorderWidth(arg.width))?; } SubCommand::BorderOffset(arg) => { - send_message(&SocketMessage::BorderOffset(arg.offset).as_bytes()?)?; + send_message(&SocketMessage::BorderOffset(arg.offset))?; } SubCommand::BorderStyle(arg) => { - send_message(&SocketMessage::BorderStyle(arg.style).as_bytes()?)?; + send_message(&SocketMessage::BorderStyle(arg.style))?; } SubCommand::BorderImplementation(arg) => { - send_message(&SocketMessage::BorderImplementation(arg.style).as_bytes()?)?; + send_message(&SocketMessage::BorderImplementation(arg.style))?; } SubCommand::Transparency(arg) => { - send_message(&SocketMessage::Transparency(arg.boolean_state.into()).as_bytes()?)?; + send_message(&SocketMessage::Transparency(arg.boolean_state.into()))?; } SubCommand::TransparencyAlpha(arg) => { - send_message(&SocketMessage::TransparencyAlpha(arg.alpha).as_bytes()?)?; + send_message(&SocketMessage::TransparencyAlpha(arg.alpha))?; } SubCommand::Animation(arg) => { - send_message(&SocketMessage::Animation(arg.boolean_state.into()).as_bytes()?)?; + send_message(&SocketMessage::Animation(arg.boolean_state.into()))?; } SubCommand::AnimationDuration(arg) => { - send_message(&SocketMessage::AnimationDuration(arg.duration).as_bytes()?)?; + send_message(&SocketMessage::AnimationDuration(arg.duration))?; } SubCommand::AnimationFps(arg) => { - send_message(&SocketMessage::AnimationFps(arg.fps).as_bytes()?)?; + send_message(&SocketMessage::AnimationFps(arg.fps))?; } SubCommand::AnimationStyle(arg) => { - send_message(&SocketMessage::AnimationStyle(arg.style).as_bytes()?)?; + send_message(&SocketMessage::AnimationStyle(arg.style))?; } SubCommand::ResizeDelta(arg) => { - send_message(&SocketMessage::ResizeDelta(arg.pixels).as_bytes()?)?; + send_message(&SocketMessage::ResizeDelta(arg.pixels))?; } SubCommand::ToggleWindowContainerBehaviour => { - send_message(&SocketMessage::ToggleWindowContainerBehaviour.as_bytes()?)?; + send_message(&SocketMessage::ToggleWindowContainerBehaviour)?; } SubCommand::WindowHidingBehaviour(arg) => { - send_message(&SocketMessage::WindowHidingBehaviour(arg.hiding_behaviour).as_bytes()?)?; + send_message(&SocketMessage::WindowHidingBehaviour(arg.hiding_behaviour))?; } SubCommand::CrossMonitorMoveBehaviour(arg) => { - send_message( - &SocketMessage::CrossMonitorMoveBehaviour(arg.move_behaviour).as_bytes()?, - )?; + send_message(&SocketMessage::CrossMonitorMoveBehaviour( + arg.move_behaviour, + ))?; } SubCommand::ToggleCrossMonitorMoveBehaviour => { - send_message(&SocketMessage::ToggleCrossMonitorMoveBehaviour.as_bytes()?)?; + send_message(&SocketMessage::ToggleCrossMonitorMoveBehaviour)?; } SubCommand::UnmanagedWindowOperationBehaviour(arg) => { - send_message( - &SocketMessage::UnmanagedWindowOperationBehaviour(arg.operation_behaviour) - .as_bytes()?, - )?; + send_message(&SocketMessage::UnmanagedWindowOperationBehaviour( + arg.operation_behaviour, + ))?; } SubCommand::AhkAppSpecificConfiguration(arg) => { let content = std::fs::read_to_string(resolve_home_path(arg.path)?)?; @@ -2498,19 +2453,19 @@ Stop-Process -Name:komorebi -ErrorAction SilentlyContinue ); } SubCommand::ApplicationSpecificConfigurationSchema => { - print_query(&SocketMessage::ApplicationSpecificConfigurationSchema.as_bytes()?); + print_query(&SocketMessage::ApplicationSpecificConfigurationSchema); } SubCommand::NotificationSchema => { - print_query(&SocketMessage::NotificationSchema.as_bytes()?); + print_query(&SocketMessage::NotificationSchema); } SubCommand::SocketSchema => { - print_query(&SocketMessage::SocketSchema.as_bytes()?); + print_query(&SocketMessage::SocketSchema); } SubCommand::StaticConfigSchema => { - print_query(&SocketMessage::StaticConfigSchema.as_bytes()?); + print_query(&SocketMessage::StaticConfigSchema); } SubCommand::GenerateStaticConfig => { - print_query(&SocketMessage::GenerateStaticConfig.as_bytes()?); + print_query(&SocketMessage::GenerateStaticConfig); } // Deprecated SubCommand::AltFocusHack(_) | SubCommand::IdentifyBorderOverflowApplication(_) => {