Fix eww not working on wayland if X feature is enabled

This commit is contained in:
elkowar 2023-07-29 20:05:45 +02:00
parent 4a9455b63f
commit 27830a8c6d
No known key found for this signature in database
GPG key ID: 50E76B4711E4C3E4
2 changed files with 8 additions and 1 deletions

View file

@ -466,7 +466,7 @@ fn initialize_window<B: DisplayBackend>(
window.realize(); window.realize();
#[cfg(feature = "x11")] #[cfg(feature = "x11")]
{ if B::IS_X11 {
if let Some(geometry) = window_def.geometry { if let Some(geometry) = window_def.geometry {
let _ = apply_window_position(geometry, monitor_geometry, &window); let _ = apply_window_position(geometry, monitor_geometry, &window);
if window_def.backend_options.x11.window_type != yuck::config::backend_window_options::X11WindowType::Normal { if window_def.backend_options.x11.window_type != yuck::config::backend_window_options::X11WindowType::Normal {

View file

@ -7,12 +7,15 @@ pub use platform_wayland::WaylandBackend;
pub use platform_x11::{set_xprops, X11Backend}; pub use platform_x11::{set_xprops, X11Backend};
pub trait DisplayBackend: Send + Sync + 'static { pub trait DisplayBackend: Send + Sync + 'static {
const IS_X11: bool;
fn initialize_window(window_def: &WindowDefinition, monitor: gdk::Rectangle) -> Option<gtk::Window>; fn initialize_window(window_def: &WindowDefinition, monitor: gdk::Rectangle) -> Option<gtk::Window>;
} }
pub struct NoBackend; pub struct NoBackend;
impl DisplayBackend for NoBackend { impl DisplayBackend for NoBackend {
const IS_X11: bool = false;
fn initialize_window(_window_def: &WindowDefinition, _monitor: gdk::Rectangle) -> Option<gtk::Window> { fn initialize_window(_window_def: &WindowDefinition, _monitor: gdk::Rectangle) -> Option<gtk::Window> {
Some(gtk::Window::new(gtk::WindowType::Toplevel)) Some(gtk::Window::new(gtk::WindowType::Toplevel))
} }
@ -31,6 +34,8 @@ mod platform_wayland {
pub struct WaylandBackend; pub struct WaylandBackend;
impl DisplayBackend for WaylandBackend { impl DisplayBackend for WaylandBackend {
const IS_X11: bool = false;
fn initialize_window(window_def: &WindowDefinition, monitor: gdk::Rectangle) -> Option<gtk::Window> { fn initialize_window(window_def: &WindowDefinition, monitor: gdk::Rectangle) -> Option<gtk::Window> {
let window = gtk::Window::new(gtk::WindowType::Toplevel); let window = gtk::Window::new(gtk::WindowType::Toplevel);
// Initialising a layer shell surface // Initialising a layer shell surface
@ -127,6 +132,8 @@ mod platform_x11 {
pub struct X11Backend; pub struct X11Backend;
impl DisplayBackend for X11Backend { impl DisplayBackend for X11Backend {
const IS_X11: bool = true;
fn initialize_window(window_def: &WindowDefinition, _monitor: gdk::Rectangle) -> Option<gtk::Window> { fn initialize_window(window_def: &WindowDefinition, _monitor: gdk::Rectangle) -> Option<gtk::Window> {
let window_type = let window_type =
if window_def.backend_options.x11.wm_ignore { gtk::WindowType::Popup } else { gtk::WindowType::Toplevel }; if window_def.backend_options.x11.wm_ignore { gtk::WindowType::Popup } else { gtk::WindowType::Toplevel };