GtkGLArea and libmpv need compatible rendering paths. Selecting GLES or Vulkan can break composition on proprietary NVIDIA Wayland drivers. Default GDK and GSK to desktop OpenGL before GTK starts diff --git a/src/main.rs b/src/main.rs --- a/src/main.rs +++ b/src/main.rs @@ -33,6 +33,18 @@ } fn main() -> ExitCode { + // GtkGLArea and libmpv must use desktop OpenGL. In particular, allowing + // GDK to choose GLES or GSK to choose Vulkan breaks composition on the + // proprietary NVIDIA Wayland driver. Keep both knobs user-overridable. + unsafe { + if env::var_os("GDK_DEBUG").is_none() { + env::set_var("GDK_DEBUG", "gl-prefer-gl"); + } + if env::var_os("GSK_RENDERER").is_none() { + env::set_var("GSK_RENDERER", "gl"); + } + } + tracing_subscriber::fmt::init(); let data_dir = dirs::data_dir()