diff --git a/Cargo.lock b/Cargo.lock index 6e29e48b..2faf516b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -58,13 +58,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "bindings" -version = "0.1.0" -dependencies = [ - "windows", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -191,12 +184,6 @@ dependencies = [ "syn", ] -[[package]] -name = "const-sha1" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb58b6451e8c2a812ad979ed1d83378caa5e927eef2622017a45f251457c2c9d" - [[package]] name = "core-foundation-sys" version = "0.8.3" @@ -513,7 +500,6 @@ dependencies = [ name = "komorebi" version = "0.1.6" dependencies = [ - "bindings", "bitflags", "clap", "color-eyre", @@ -538,6 +524,7 @@ dependencies = [ "tracing-subscriber", "uds_windows", "which", + "windows", "winput", "winvd", ] @@ -546,20 +533,19 @@ dependencies = [ name = "komorebi-core" version = "0.1.6" dependencies = [ - "bindings", "clap", "color-eyre", "serde", "serde_json", "serde_yaml", "strum", + "windows", ] [[package]] name = "komorebic" version = "0.1.6" dependencies = [ - "bindings", "clap", "color-eyre", "derive-ahk", @@ -572,6 +558,7 @@ dependencies = [ "serde", "serde_json", "uds_windows", + "windows", ] [[package]] @@ -1487,49 +1474,25 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.21.1" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f5f8d2ea79bf690bbee453fd4a1516ae426e5d5c7215d96cc0c3dc134fc4a0" +checksum = "e63b5b81676d36bcf3d8c41b0f6ca574bb2399ba0963c6b9f110f7839a200bce" dependencies = [ - "const-sha1", - "windows_gen", - "windows_macros", - "windows_reader", + "windows_i686_msvc", + "windows_x86_64_msvc", ] [[package]] -name = "windows_gen" -version = "0.21.1" +name = "windows_i686_msvc" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e6994f42f8481387778cc608407d6703410672d57f32a66009419d7a18aa912" -dependencies = [ - "windows_quote", - "windows_reader", -] +checksum = "23330f18aae0ccad49809c82a48e01e965bcc831813f32fe1bb89d8845f7365b" [[package]] -name = "windows_macros" -version = "0.21.1" +name = "windows_x86_64_msvc" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cc2357b1b03c19f056cb0e6d06011f80f54beadb4e36aee2ca98493c7cfc3c" -dependencies = [ - "syn", - "windows_gen", - "windows_quote", - "windows_reader", -] - -[[package]] -name = "windows_quote" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cf987b5288c15e1997226848f78f3ed3ef8b78dcfd71a201c8c8684163a7e4d" - -[[package]] -name = "windows_reader" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237b53e8b40766ea7db5da0d8c6c1442d21d0429f0ee7500d7b5688967bd9d7b" +checksum = "be253f6efe83a48d5d42d13be30ac63ac597f7d87b09c7fd37221a5a04d09628" [[package]] name = "winput" diff --git a/Cargo.toml b/Cargo.toml index 512d9e7f..1adc4354 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,6 @@ [workspace] members = [ - "bindings", "derive-ahk", "komorebi", "komorebi-core", diff --git a/bindings/Cargo.toml b/bindings/Cargo.toml deleted file mode 100644 index 0fe5cc10..00000000 --- a/bindings/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "bindings" -version = "0.1.0" -authors = ["Jade Iqbal"] -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -windows = "0.21" - -[build-dependencies] -windows = "0.21" diff --git a/bindings/build.rs b/bindings/build.rs deleted file mode 100644 index 3c98669a..00000000 --- a/bindings/build.rs +++ /dev/null @@ -1,26 +0,0 @@ -fn main() { - windows::build!( - Windows::Win32::Foundation::RECT, - Windows::Win32::Foundation::POINT, - Windows::Win32::Foundation::BOOL, - Windows::Win32::Foundation::PWSTR, - Windows::Win32::Foundation::HWND, - Windows::Win32::Foundation::LPARAM, - // error: `Windows.Win32.Graphics.Dwm.DWMWA_CLOAKED` not found in metadata - Windows::Win32::Graphics::Dwm::*, - // error: `Windows.Win32.Graphics.Gdi.MONITOR_DEFAULTTONEAREST` not found in metadata - Windows::Win32::Graphics::Gdi::*, - Windows::Win32::System::Threading::PROCESS_ACCESS_RIGHTS, - Windows::Win32::System::Threading::PROCESS_NAME_FORMAT, - Windows::Win32::System::Threading::OpenProcess, - Windows::Win32::System::Threading::QueryFullProcessImageNameW, - Windows::Win32::System::Threading::GetCurrentThreadId, - Windows::Win32::System::Threading::AttachThreadInput, - Windows::Win32::System::Threading::GetCurrentProcessId, - Windows::Win32::UI::KeyboardAndMouseInput::SetFocus, - Windows::Win32::UI::Accessibility::SetWinEventHook, - Windows::Win32::UI::Accessibility::HWINEVENTHOOK, - // error: `Windows.Win32.UI.WindowsAndMessaging.GWL_EXSTYLE` not found in metadata - Windows::Win32::UI::WindowsAndMessaging::*, - ); -} diff --git a/bindings/src/lib.rs b/bindings/src/lib.rs deleted file mode 100644 index 511e4b65..00000000 --- a/bindings/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub use windows::Handle; -pub use windows::Result; - -::windows::include_bindings!(); diff --git a/komorebi-core/Cargo.toml b/komorebi-core/Cargo.toml index 3e22f028..b4cb67ac 100644 --- a/komorebi-core/Cargo.toml +++ b/komorebi-core/Cargo.toml @@ -6,11 +6,15 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bindings = { package = "bindings", path = "../bindings" } - clap = "3.0.0-beta.4" color-eyre = "0.5" serde = { version = "1", features = ["derive"] } serde_json = "1" serde_yaml = "0.8" strum = { version = "0.21", features = ["derive"] } + +[dependencies.windows] +version = "0.22" +features = [ + "Win32_Foundation", +] diff --git a/komorebi-core/src/rect.rs b/komorebi-core/src/rect.rs index ff2cfc42..efe8a8c9 100644 --- a/komorebi-core/src/rect.rs +++ b/komorebi-core/src/rect.rs @@ -1,7 +1,6 @@ use serde::Deserialize; use serde::Serialize; - -use bindings::Windows::Win32::Foundation::RECT; +use windows::Win32::Foundation::RECT; #[derive(Debug, Default, Clone, Copy, Serialize, Deserialize, Eq, PartialEq)] pub struct Rect { diff --git a/komorebi/Cargo.toml b/komorebi/Cargo.toml index 013c3485..b50784a9 100644 --- a/komorebi/Cargo.toml +++ b/komorebi/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] -bindings = { package = "bindings", path = "../bindings" } komorebi-core = { path = "../komorebi-core" } bitflags = "1" @@ -40,5 +39,17 @@ winput = "0.2" winvd = "0.0.20" miow = "0.3" +[dependencies.windows] +version = "0.22" +features = [ + "Win32_Foundation", + "Win32_Graphics_Dwm", + "Win32_Graphics_Gdi", + "Win32_System_Threading", + "Win32_UI_KeyboardAndMouseInput", + "Win32_UI_Accessibility", + "Win32_UI_WindowsAndMessaging" +] + [features] deadlock_detection = [] diff --git a/komorebi/src/set_window_position.rs b/komorebi/src/set_window_position.rs index c0e6110c..95a1c4a2 100644 --- a/komorebi/src/set_window_position.rs +++ b/komorebi/src/set_window_position.rs @@ -1,20 +1,19 @@ use bitflags::bitflags; - -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_ASYNCWINDOWPOS; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_DEFERERASE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_DRAWFRAME; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_FRAMECHANGED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_HIDEWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOACTIVATE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOCOPYBITS; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOMOVE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOOWNERZORDER; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOREDRAW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOREPOSITION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOSENDCHANGING; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOSIZE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_NOZORDER; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SWP_SHOWWINDOW; +use windows::Win32::UI::WindowsAndMessaging::SWP_ASYNCWINDOWPOS; +use windows::Win32::UI::WindowsAndMessaging::SWP_DEFERERASE; +use windows::Win32::UI::WindowsAndMessaging::SWP_DRAWFRAME; +use windows::Win32::UI::WindowsAndMessaging::SWP_FRAMECHANGED; +use windows::Win32::UI::WindowsAndMessaging::SWP_HIDEWINDOW; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOACTIVATE; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOCOPYBITS; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOMOVE; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOOWNERZORDER; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOREDRAW; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOREPOSITION; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOSENDCHANGING; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOSIZE; +use windows::Win32::UI::WindowsAndMessaging::SWP_NOZORDER; +use windows::Win32::UI::WindowsAndMessaging::SWP_SHOWWINDOW; bitflags! { #[derive(Default)] diff --git a/komorebi/src/styles.rs b/komorebi/src/styles.rs index 60a614cc..54f35f83 100644 --- a/komorebi/src/styles.rs +++ b/komorebi/src/styles.rs @@ -1,63 +1,63 @@ use bitflags::bitflags; +use windows::Win32::UI::WindowsAndMessaging::WS_BORDER; +use windows::Win32::UI::WindowsAndMessaging::WS_CAPTION; +use windows::Win32::UI::WindowsAndMessaging::WS_CHILD; +use windows::Win32::UI::WindowsAndMessaging::WS_CHILDWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_CLIPCHILDREN; +use windows::Win32::UI::WindowsAndMessaging::WS_CLIPSIBLINGS; +use windows::Win32::UI::WindowsAndMessaging::WS_DISABLED; +use windows::Win32::UI::WindowsAndMessaging::WS_DLGFRAME; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_ACCEPTFILES; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_APPWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_CLIENTEDGE; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_COMPOSITED; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_CONTEXTHELP; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_CONTROLPARENT; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_DLGMODALFRAME; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_LAYERED; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_LAYOUTRTL; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_LEFT; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_LEFTSCROLLBAR; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_LTRREADING; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_MDICHILD; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_NOACTIVATE; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_NOINHERITLAYOUT; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_NOPARENTNOTIFY; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_NOREDIRECTIONBITMAP; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_OVERLAPPEDWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_PALETTEWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_RIGHT; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_RIGHTSCROLLBAR; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_RTLREADING; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_STATICEDGE; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_TOOLWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_TOPMOST; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_TRANSPARENT; +use windows::Win32::UI::WindowsAndMessaging::WS_EX_WINDOWEDGE; +use windows::Win32::UI::WindowsAndMessaging::WS_GROUP; +use windows::Win32::UI::WindowsAndMessaging::WS_HSCROLL; +use windows::Win32::UI::WindowsAndMessaging::WS_ICONIC; +use windows::Win32::UI::WindowsAndMessaging::WS_MAXIMIZE; +use windows::Win32::UI::WindowsAndMessaging::WS_MAXIMIZEBOX; +use windows::Win32::UI::WindowsAndMessaging::WS_MINIMIZE; +use windows::Win32::UI::WindowsAndMessaging::WS_MINIMIZEBOX; +use windows::Win32::UI::WindowsAndMessaging::WS_OVERLAPPED; +use windows::Win32::UI::WindowsAndMessaging::WS_OVERLAPPEDWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_POPUP; +use windows::Win32::UI::WindowsAndMessaging::WS_POPUPWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_SIZEBOX; +use windows::Win32::UI::WindowsAndMessaging::WS_SYSMENU; +use windows::Win32::UI::WindowsAndMessaging::WS_TABSTOP; +use windows::Win32::UI::WindowsAndMessaging::WS_THICKFRAME; +use windows::Win32::UI::WindowsAndMessaging::WS_TILED; +use windows::Win32::UI::WindowsAndMessaging::WS_TILEDWINDOW; +use windows::Win32::UI::WindowsAndMessaging::WS_VISIBLE; +use windows::Win32::UI::WindowsAndMessaging::WS_VSCROLL; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_BORDER; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_CAPTION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_CHILD; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_CHILDWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_CLIPCHILDREN; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_CLIPSIBLINGS; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_DISABLED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_DLGFRAME; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_ACCEPTFILES; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_APPWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_CLIENTEDGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_COMPOSITED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_CONTEXTHELP; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_CONTROLPARENT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_DLGMODALFRAME; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_LAYERED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_LAYOUTRTL; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_LEFT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_LEFTSCROLLBAR; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_LTRREADING; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_MDICHILD; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_NOACTIVATE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_NOINHERITLAYOUT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_NOPARENTNOTIFY; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_NOREDIRECTIONBITMAP; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_OVERLAPPEDWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_PALETTEWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_RIGHT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_RIGHTSCROLLBAR; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_RTLREADING; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_STATICEDGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_TOOLWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_TOPMOST; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_TRANSPARENT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_EX_WINDOWEDGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_GROUP; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_HSCROLL; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_ICONIC; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_MAXIMIZE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_MAXIMIZEBOX; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_MINIMIZE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_MINIMIZEBOX; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_OVERLAPPED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_OVERLAPPEDWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_POPUP; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_POPUPWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_SIZEBOX; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_SYSMENU; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_TABSTOP; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_THICKFRAME; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_TILED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_TILEDWINDOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_VISIBLE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WS_VSCROLL; - +// https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles bitflags! { #[derive(Default)] - pub struct GwlStyle: u32 { + pub struct WindowStyle: u32 { const BORDER = WS_BORDER.0; const CAPTION = WS_CAPTION.0; const CHILD = WS_CHILD.0; @@ -88,9 +88,10 @@ bitflags! { } } +// https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles bitflags! { #[derive(Default)] - pub struct GwlExStyle: u32 { + pub struct ExtendedWindowStyle: u32 { const ACCEPTFILES = WS_EX_ACCEPTFILES.0; const APPWINDOW = WS_EX_APPWINDOW.0; const CLIENTEDGE = WS_EX_CLIENTEDGE.0; diff --git a/komorebi/src/window.rs b/komorebi/src/window.rs index 1a18117f..34010f60 100644 --- a/komorebi/src/window.rs +++ b/komorebi/src/window.rs @@ -8,12 +8,12 @@ use serde::ser::Error; use serde::ser::SerializeStruct; use serde::Serialize; use serde::Serializer; +use windows::Win32::Foundation::HWND; -use bindings::Windows::Win32::Foundation::HWND; use komorebi_core::Rect; -use crate::styles::GwlExStyle; -use crate::styles::GwlStyle; +use crate::styles::ExtendedWindowStyle; +use crate::styles::WindowStyle; use crate::window_manager_event::WindowManagerEvent; use crate::windows_api::WindowsApi; use crate::BORDER_OVERFLOW_IDENTIFIERS; @@ -212,18 +212,18 @@ impl Window { } #[allow(dead_code)] - pub fn update_style(self, style: GwlStyle) -> Result<()> { + pub fn update_style(self, style: WindowStyle) -> Result<()> { WindowsApi::update_style(self.hwnd(), isize::try_from(style.bits())?) } - pub fn style(self) -> Result { + pub fn style(self) -> Result { let bits = u32::try_from(WindowsApi::gwl_style(self.hwnd())?)?; - GwlStyle::from_bits(bits).ok_or_else(|| anyhow!("there is no gwl style")) + WindowStyle::from_bits(bits).ok_or_else(|| anyhow!("there is no gwl style")) } - pub fn ex_style(self) -> Result { + pub fn ex_style(self) -> Result { let bits = u32::try_from(WindowsApi::gwl_ex_style(self.hwnd())?)?; - GwlExStyle::from_bits(bits).ok_or_else(|| anyhow!("there is no gwl style")) + ExtendedWindowStyle::from_bits(bits).ok_or_else(|| anyhow!("there is no gwl style")) } pub fn title(self) -> Result { @@ -298,13 +298,13 @@ impl Window { let style = self.style()?; let ex_style = self.ex_style()?; - if (allow_wsl2_gui || style.contains(GwlStyle::CAPTION) && ex_style.contains(GwlExStyle::WINDOWEDGE)) - && !ex_style.contains(GwlExStyle::DLGMODALFRAME) + if (allow_wsl2_gui || style.contains(WindowStyle::CAPTION) && ex_style.contains(ExtendedWindowStyle::WINDOWEDGE)) + && !ex_style.contains(ExtendedWindowStyle::DLGMODALFRAME) // Get a lot of dupe events coming through that make the redrawing go crazy // on FocusChange events if I don't filter out this one. But, if we are // allowing a specific layered window on the whitelist (like Steam), it should // pass this check - && (allow_layered || !ex_style.contains(GwlExStyle::LAYERED)) + && (allow_layered || !ex_style.contains(ExtendedWindowStyle::LAYERED)) || managed_override { return Ok(true); diff --git a/komorebi/src/windows_api.rs b/komorebi/src/windows_api.rs index 6a88ea83..1f3213b3 100644 --- a/komorebi/src/windows_api.rs +++ b/komorebi/src/windows_api.rs @@ -6,80 +6,80 @@ use std::ffi::c_void; use color_eyre::eyre::anyhow; use color_eyre::eyre::Error; use color_eyre::Result; +use windows::runtime::Handle; +use windows::runtime::Result as WindowsCrateResult; +use windows::Win32::Foundation::BOOL; +use windows::Win32::Foundation::HANDLE; +use windows::Win32::Foundation::HWND; +use windows::Win32::Foundation::LPARAM; +use windows::Win32::Foundation::POINT; +use windows::Win32::Foundation::PWSTR; +use windows::Win32::Foundation::RECT; +use windows::Win32::Graphics::Dwm::DwmGetWindowAttribute; +use windows::Win32::Graphics::Dwm::DWMWA_CLOAKED; +use windows::Win32::Graphics::Dwm::DWMWA_EXTENDED_FRAME_BOUNDS; +use windows::Win32::Graphics::Dwm::DWMWINDOWATTRIBUTE; +use windows::Win32::Graphics::Dwm::DWM_CLOAKED_APP; +use windows::Win32::Graphics::Dwm::DWM_CLOAKED_INHERITED; +use windows::Win32::Graphics::Dwm::DWM_CLOAKED_SHELL; +use windows::Win32::Graphics::Gdi::EnumDisplayMonitors; +use windows::Win32::Graphics::Gdi::GetMonitorInfoW; +use windows::Win32::Graphics::Gdi::MonitorFromPoint; +use windows::Win32::Graphics::Gdi::MonitorFromWindow; +use windows::Win32::Graphics::Gdi::HDC; +use windows::Win32::Graphics::Gdi::HMONITOR; +use windows::Win32::Graphics::Gdi::MONITORENUMPROC; +use windows::Win32::Graphics::Gdi::MONITORINFO; +use windows::Win32::Graphics::Gdi::MONITOR_DEFAULTTONEAREST; +use windows::Win32::System::Threading::AttachThreadInput; +use windows::Win32::System::Threading::GetCurrentProcessId; +use windows::Win32::System::Threading::GetCurrentThreadId; +use windows::Win32::System::Threading::OpenProcess; +use windows::Win32::System::Threading::QueryFullProcessImageNameW; +use windows::Win32::System::Threading::PROCESS_ACCESS_RIGHTS; +use windows::Win32::System::Threading::PROCESS_NAME_FORMAT; +use windows::Win32::System::Threading::PROCESS_QUERY_INFORMATION; +use windows::Win32::UI::KeyboardAndMouseInput::SetFocus; +use windows::Win32::UI::WindowsAndMessaging::AllowSetForegroundWindow; +use windows::Win32::UI::WindowsAndMessaging::EnumWindows; +use windows::Win32::UI::WindowsAndMessaging::GetCursorPos; +use windows::Win32::UI::WindowsAndMessaging::GetDesktopWindow; +use windows::Win32::UI::WindowsAndMessaging::GetForegroundWindow; +use windows::Win32::UI::WindowsAndMessaging::GetTopWindow; +use windows::Win32::UI::WindowsAndMessaging::GetWindow; +use windows::Win32::UI::WindowsAndMessaging::GetWindowLongPtrW; +use windows::Win32::UI::WindowsAndMessaging::GetWindowRect; +use windows::Win32::UI::WindowsAndMessaging::GetWindowTextW; +use windows::Win32::UI::WindowsAndMessaging::GetWindowThreadProcessId; +use windows::Win32::UI::WindowsAndMessaging::IsIconic; +use windows::Win32::UI::WindowsAndMessaging::IsWindow; +use windows::Win32::UI::WindowsAndMessaging::IsWindowVisible; +use windows::Win32::UI::WindowsAndMessaging::RealGetWindowClassW; +use windows::Win32::UI::WindowsAndMessaging::SetCursorPos; +use windows::Win32::UI::WindowsAndMessaging::SetForegroundWindow; +use windows::Win32::UI::WindowsAndMessaging::SetWindowLongPtrW; +use windows::Win32::UI::WindowsAndMessaging::SetWindowPos; +use windows::Win32::UI::WindowsAndMessaging::ShowWindow; +use windows::Win32::UI::WindowsAndMessaging::SystemParametersInfoW; +use windows::Win32::UI::WindowsAndMessaging::WindowFromPoint; +use windows::Win32::UI::WindowsAndMessaging::GWL_EXSTYLE; +use windows::Win32::UI::WindowsAndMessaging::GWL_STYLE; +use windows::Win32::UI::WindowsAndMessaging::GW_HWNDNEXT; +use windows::Win32::UI::WindowsAndMessaging::HWND_NOTOPMOST; +use windows::Win32::UI::WindowsAndMessaging::HWND_TOPMOST; +use windows::Win32::UI::WindowsAndMessaging::SET_WINDOW_POS_FLAGS; +use windows::Win32::UI::WindowsAndMessaging::SHOW_WINDOW_CMD; +use windows::Win32::UI::WindowsAndMessaging::SPIF_SENDCHANGE; +use windows::Win32::UI::WindowsAndMessaging::SPI_GETACTIVEWINDOWTRACKING; +use windows::Win32::UI::WindowsAndMessaging::SPI_SETACTIVEWINDOWTRACKING; +use windows::Win32::UI::WindowsAndMessaging::SW_HIDE; +use windows::Win32::UI::WindowsAndMessaging::SW_MAXIMIZE; +use windows::Win32::UI::WindowsAndMessaging::SW_RESTORE; +use windows::Win32::UI::WindowsAndMessaging::SYSTEM_PARAMETERS_INFO_ACTION; +use windows::Win32::UI::WindowsAndMessaging::SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS; +use windows::Win32::UI::WindowsAndMessaging::WINDOW_LONG_PTR_INDEX; +use windows::Win32::UI::WindowsAndMessaging::WNDENUMPROC; -use bindings::Handle; -use bindings::Result as WindowsCrateResult; -use bindings::Windows::Win32::Foundation::BOOL; -use bindings::Windows::Win32::Foundation::HANDLE; -use bindings::Windows::Win32::Foundation::HWND; -use bindings::Windows::Win32::Foundation::LPARAM; -use bindings::Windows::Win32::Foundation::POINT; -use bindings::Windows::Win32::Foundation::PWSTR; -use bindings::Windows::Win32::Foundation::RECT; -use bindings::Windows::Win32::Graphics::Dwm::DwmGetWindowAttribute; -use bindings::Windows::Win32::Graphics::Dwm::DWMWA_CLOAKED; -use bindings::Windows::Win32::Graphics::Dwm::DWMWA_EXTENDED_FRAME_BOUNDS; -use bindings::Windows::Win32::Graphics::Dwm::DWMWINDOWATTRIBUTE; -use bindings::Windows::Win32::Graphics::Dwm::DWM_CLOAKED_APP; -use bindings::Windows::Win32::Graphics::Dwm::DWM_CLOAKED_INHERITED; -use bindings::Windows::Win32::Graphics::Dwm::DWM_CLOAKED_SHELL; -use bindings::Windows::Win32::Graphics::Gdi::EnumDisplayMonitors; -use bindings::Windows::Win32::Graphics::Gdi::GetMonitorInfoW; -use bindings::Windows::Win32::Graphics::Gdi::MonitorFromPoint; -use bindings::Windows::Win32::Graphics::Gdi::MonitorFromWindow; -use bindings::Windows::Win32::Graphics::Gdi::HDC; -use bindings::Windows::Win32::Graphics::Gdi::HMONITOR; -use bindings::Windows::Win32::Graphics::Gdi::MONITORENUMPROC; -use bindings::Windows::Win32::Graphics::Gdi::MONITORINFO; -use bindings::Windows::Win32::Graphics::Gdi::MONITOR_DEFAULTTONEAREST; -use bindings::Windows::Win32::System::Threading::AttachThreadInput; -use bindings::Windows::Win32::System::Threading::GetCurrentProcessId; -use bindings::Windows::Win32::System::Threading::GetCurrentThreadId; -use bindings::Windows::Win32::System::Threading::OpenProcess; -use bindings::Windows::Win32::System::Threading::QueryFullProcessImageNameW; -use bindings::Windows::Win32::System::Threading::PROCESS_ACCESS_RIGHTS; -use bindings::Windows::Win32::System::Threading::PROCESS_NAME_FORMAT; -use bindings::Windows::Win32::System::Threading::PROCESS_QUERY_INFORMATION; -use bindings::Windows::Win32::UI::KeyboardAndMouseInput::SetFocus; -use bindings::Windows::Win32::UI::WindowsAndMessaging::AllowSetForegroundWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EnumWindows; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetCursorPos; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetDesktopWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetForegroundWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetTopWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetWindowLongPtrW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetWindowRect; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetWindowTextW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GetWindowThreadProcessId; -use bindings::Windows::Win32::UI::WindowsAndMessaging::IsIconic; -use bindings::Windows::Win32::UI::WindowsAndMessaging::IsWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::IsWindowVisible; -use bindings::Windows::Win32::UI::WindowsAndMessaging::RealGetWindowClassW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SetCursorPos; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SetForegroundWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SetWindowLongPtrW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SetWindowPos; -use bindings::Windows::Win32::UI::WindowsAndMessaging::ShowWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SystemParametersInfoW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WindowFromPoint; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GWL_EXSTYLE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GWL_STYLE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::GW_HWNDNEXT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::HWND_NOTOPMOST; -use bindings::Windows::Win32::UI::WindowsAndMessaging::HWND_TOPMOST; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SET_WINDOW_POS_FLAGS; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SHOW_WINDOW_CMD; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SPIF_SENDCHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SPI_GETACTIVEWINDOWTRACKING; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SPI_SETACTIVEWINDOWTRACKING; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SW_HIDE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SW_MAXIMIZE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SW_RESTORE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SYSTEM_PARAMETERS_INFO_ACTION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WINDOW_LONG_PTR_INDEX; -use bindings::Windows::Win32::UI::WindowsAndMessaging::WNDENUMPROC; use komorebi_core::Rect; use crate::container::Container; @@ -491,7 +491,7 @@ impl WindowsApi { unsafe { DwmGetWindowAttribute( hwnd, - std::mem::transmute::<_, u32>(attribute), + attribute, (value as *mut T).cast(), u32::try_from(std::mem::size_of::())?, )?; diff --git a/komorebi/src/windows_callbacks.rs b/komorebi/src/windows_callbacks.rs index 96997979..5a892a94 100644 --- a/komorebi/src/windows_callbacks.rs +++ b/komorebi/src/windows_callbacks.rs @@ -1,12 +1,12 @@ use std::collections::VecDeque; -use bindings::Windows::Win32::Foundation::BOOL; -use bindings::Windows::Win32::Foundation::HWND; -use bindings::Windows::Win32::Foundation::LPARAM; -use bindings::Windows::Win32::Foundation::RECT; -use bindings::Windows::Win32::Graphics::Gdi::HDC; -use bindings::Windows::Win32::Graphics::Gdi::HMONITOR; -use bindings::Windows::Win32::UI::Accessibility::HWINEVENTHOOK; +use windows::Win32::Foundation::BOOL; +use windows::Win32::Foundation::HWND; +use windows::Win32::Foundation::LPARAM; +use windows::Win32::Foundation::RECT; +use windows::Win32::Graphics::Gdi::HDC; +use windows::Win32::Graphics::Gdi::HMONITOR; +use windows::Win32::UI::Accessibility::HWINEVENTHOOK; use crate::container::Container; use crate::monitor::Monitor; diff --git a/komorebi/src/winevent.rs b/komorebi/src/winevent.rs index 77b9bac6..d7d6ac02 100644 --- a/komorebi/src/winevent.rs +++ b/komorebi/src/winevent.rs @@ -1,90 +1,89 @@ use serde::Serialize; use strum::Display; - -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_AIA_END; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_AIA_START; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_CARET; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_END; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_END_APPLICATION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_LAYOUT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_START_APPLICATION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_UPDATE_REGION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_UPDATE_SCROLL; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_UPDATE_SIMPLE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_ACCELERATORCHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_CLOAKED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_CONTENTSCROLLED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_CREATE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DEFACTIONCHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DESCRIPTIONCHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DESTROY; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGCANCEL; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGCOMPLETE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGDROPPED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGENTER; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGLEAVE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_END; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_FOCUS; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_HELPCHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_HIDE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_IME_CHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_IME_HIDE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_IME_SHOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_INVOKED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_LIVEREGIONCHANGED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_LOCATIONCHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_NAMECHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_PARENTCHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_REORDER; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTIONADD; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTIONREMOVE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTIONWITHIN; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SHOW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_STATECHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_TEXTSELECTIONCHANGED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_UNCLOAKED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_VALUECHANGE; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OEM_DEFINED_END; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_OEM_DEFINED_START; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_ALERT; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_ARRANGMENTPREVIEW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CAPTUREEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CAPTURESTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CONTEXTHELPEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CONTEXTHELPSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DESKTOPSWITCH; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DIALOGEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DIALOGSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DRAGDROPEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DRAGDROPSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_END; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_FOREGROUND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_IME_KEY_NOTIFICATION; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUPOPUPEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUPOPUPSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MINIMIZEEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MINIMIZESTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MOVESIZEEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MOVESIZESTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SCROLLINGEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SCROLLINGSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SOUND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHEND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_APPDROPPED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_APPGRABBED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_APPOVERTARGET; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_CANCELLED; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHSTART; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_EVENTID_END; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_EVENTID_START; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_PROPID_END; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_PROPID_START; +use windows::Win32::UI::WindowsAndMessaging::EVENT_AIA_END; +use windows::Win32::UI::WindowsAndMessaging::EVENT_AIA_START; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_CARET; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_END; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_END_APPLICATION; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_LAYOUT; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_START_APPLICATION; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_UPDATE_REGION; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_UPDATE_SCROLL; +use windows::Win32::UI::WindowsAndMessaging::EVENT_CONSOLE_UPDATE_SIMPLE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_ACCELERATORCHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_CLOAKED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_CONTENTSCROLLED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_CREATE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DEFACTIONCHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DESCRIPTIONCHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DESTROY; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGCANCEL; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGCOMPLETE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGDROPPED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGENTER; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGLEAVE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_DRAGSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_END; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_FOCUS; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_HELPCHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_HIDE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_IME_CHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_IME_HIDE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_IME_SHOW; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_INVOKED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_LIVEREGIONCHANGED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_LOCATIONCHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_NAMECHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_PARENTCHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_REORDER; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTION; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTIONADD; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTIONREMOVE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SELECTIONWITHIN; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_SHOW; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_STATECHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_TEXTSELECTIONCHANGED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_UNCLOAKED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OBJECT_VALUECHANGE; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OEM_DEFINED_END; +use windows::Win32::UI::WindowsAndMessaging::EVENT_OEM_DEFINED_START; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_ALERT; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_ARRANGMENTPREVIEW; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CAPTUREEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CAPTURESTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CONTEXTHELPEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_CONTEXTHELPSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DESKTOPSWITCH; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DIALOGEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DIALOGSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DRAGDROPEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_DRAGDROPSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_END; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_FOREGROUND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_IME_KEY_NOTIFICATION; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUPOPUPEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUPOPUPSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MENUSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MINIMIZEEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MINIMIZESTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MOVESIZEEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_MOVESIZESTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SCROLLINGEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SCROLLINGSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SOUND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHEND; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_APPDROPPED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_APPGRABBED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_APPOVERTARGET; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHER_CANCELLED; +use windows::Win32::UI::WindowsAndMessaging::EVENT_SYSTEM_SWITCHSTART; +use windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_EVENTID_END; +use windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_EVENTID_START; +use windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_PROPID_END; +use windows::Win32::UI::WindowsAndMessaging::EVENT_UIA_PROPID_START; #[derive(Clone, Copy, PartialEq, Debug, Serialize, Display)] #[repr(u32)] diff --git a/komorebi/src/winevent_listener.rs b/komorebi/src/winevent_listener.rs index 10f63f81..ce593212 100644 --- a/komorebi/src/winevent_listener.rs +++ b/komorebi/src/winevent_listener.rs @@ -8,16 +8,15 @@ use crossbeam_channel::Receiver; use crossbeam_channel::Sender; use lazy_static::lazy_static; use parking_lot::Mutex; - -use bindings::Windows::Win32::Foundation::HWND; -use bindings::Windows::Win32::UI::Accessibility::SetWinEventHook; -use bindings::Windows::Win32::UI::WindowsAndMessaging::DispatchMessageW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::PeekMessageW; -use bindings::Windows::Win32::UI::WindowsAndMessaging::TranslateMessage; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_MAX; -use bindings::Windows::Win32::UI::WindowsAndMessaging::EVENT_MIN; -use bindings::Windows::Win32::UI::WindowsAndMessaging::MSG; -use bindings::Windows::Win32::UI::WindowsAndMessaging::PM_REMOVE; +use windows::Win32::Foundation::HWND; +use windows::Win32::UI::Accessibility::SetWinEventHook; +use windows::Win32::UI::WindowsAndMessaging::DispatchMessageW; +use windows::Win32::UI::WindowsAndMessaging::PeekMessageW; +use windows::Win32::UI::WindowsAndMessaging::TranslateMessage; +use windows::Win32::UI::WindowsAndMessaging::EVENT_MAX; +use windows::Win32::UI::WindowsAndMessaging::EVENT_MIN; +use windows::Win32::UI::WindowsAndMessaging::MSG; +use windows::Win32::UI::WindowsAndMessaging::PM_REMOVE; use crate::window_manager_event::WindowManagerEvent; use crate::windows_callbacks; diff --git a/komorebic/Cargo.toml b/komorebic/Cargo.toml index ecffff92..8dbf71b0 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] -bindings = { package = "bindings", path = "../bindings" } derive-ahk = { path = "../derive-ahk" } komorebi-core = { path = "../komorebi-core" } @@ -25,3 +24,10 @@ powershell_script = "0.2" serde = { version = "1", features = ["derive"] } serde_json = "1" uds_windows = "1" + +[dependencies.windows] +version = "0.22" +features = [ + "Win32_Foundation", + "Win32_UI_WindowsAndMessaging" +] diff --git a/komorebic/src/main.rs b/komorebic/src/main.rs index cd111f15..9ca67b62 100644 --- a/komorebic/src/main.rs +++ b/komorebic/src/main.rs @@ -20,11 +20,11 @@ use heck::KebabCase; use paste::paste; use uds_windows::UnixListener; use uds_windows::UnixStream; +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 bindings::Windows::Win32::Foundation::HWND; -use bindings::Windows::Win32::UI::WindowsAndMessaging::ShowWindow; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SHOW_WINDOW_CMD; -use bindings::Windows::Win32::UI::WindowsAndMessaging::SW_RESTORE; use derive_ahk::AhkFunction; use derive_ahk::AhkLibrary; use komorebi_core::ApplicationIdentifier;