From 220354727e205b98e3593580cf3fc6b824b85667 Mon Sep 17 00:00:00 2001 From: taoky Date: Thu, 29 Aug 2024 01:24:32 +0800 Subject: [PATCH] fix: check compositor support status before using ueberzug wayland output --- yazi-adapter/src/adapter.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/yazi-adapter/src/adapter.rs b/yazi-adapter/src/adapter.rs index 7a48e3e8..5a44d286 100644 --- a/yazi-adapter/src/adapter.rs +++ b/yazi-adapter/src/adapter.rs @@ -95,12 +95,20 @@ impl Adapter { return *p; } + // Currently Überzug++'s Wayland output only supports Sway, Hyprland and Wayfire + // as it requires information from specific compositior socket directly. + // These environment variables are from ueberzugpp src/canvas/wayland/config.cpp + let supports_ueberzug_wayland = env_exists("SWAYSOCK") + || env_exists("HYPRLAND_INSTANCE_SIGNATURE") + || env_exists("WAYFIRE_SOCKET"); + match env::var("XDG_SESSION_TYPE").unwrap_or_default().as_str() { "x11" => return Self::X11, - "wayland" => return Self::Wayland, + "wayland" if supports_ueberzug_wayland => return Self::Wayland, + "wayland" if !supports_ueberzug_wayland => warn!("[Adapter] Unsupported Wayland compositor"), _ => warn!("[Adapter] Could not identify XDG_SESSION_TYPE"), } - if env_exists("WAYLAND_DISPLAY") { + if supports_ueberzug_wayland && env_exists("WAYLAND_DISPLAY") { return Self::Wayland; } if env_exists("DISPLAY") {