mirror of
https://github.com/sxyazi/yazi.git
synced 2024-11-20 18:51:32 +03:00
fix: check compositor support status before using ueberzug wayland output (#1566)
Co-authored-by: sxyazi <sxyazi@gmail.com>
This commit is contained in:
parent
b280d79f76
commit
598104492b
@ -1 +1 @@
|
||||
{"flagWords":[],"words":["Punct","KEYMAP","splitn","crossterm","YAZI","unar","peekable","ratatui","syntect","pbpaste","pbcopy","ffmpegthumbnailer","oneshot","Posix","Lsar","XADDOS","zoxide","cands","Deque","precache","imageops","IFBLK","IFCHR","IFDIR","IFIFO","IFLNK","IFMT","IFSOCK","IRGRP","IROTH","IRUSR","ISGID","ISUID","ISVTX","IWGRP","IWOTH","IWUSR","IXGRP","IXOTH","IXUSR","libc","winsize","TIOCGWINSZ","xpixel","ypixel","ioerr","appender","Catppuccin","macchiato","gitmodules","Dotfiles","bashprofile","vimrc","flac","webp","exiftool","mediainfo","ripgrep","nvim","indexmap","indexmap","unwatch","canonicalize","serde","fsevent","Ueberzug","iterm","wezterm","sixel","chafa","ueberzugpp","️ Überzug","️ Überzug","Konsole","Alacritty","Überzug","pkgs","paru","unarchiver","pdftoppm","poppler","prebuild","singlefile","jpegopt","EXIF","rustfmt","mktemp","nanos","xclip","xsel","natord","Mintty","nixos","nixpkgs","SIGTSTP","SIGCONT","SIGCONT","mlua","nonstatic","userdata","metatable","natsort","backstack","luajit","Succ","Succ","cand","fileencoding","foldmethod","lightgreen","darkgray","lightred","lightyellow","lightcyan","nushell","msvc","aarch","linemode","sxyazi","rsplit","ZELLIJ","bitflags","bitflags","USERPROFILE","Neovim","vergen","gitcl","Renderable","preloaders","prec","imagesize","Upserting","prio","Ghostty","Catmull","Lanczos","cmds","unyank","scrolloff","headsup","unsub","uzers","scopeguard","SPDLOG","globset","filetime","magick","magick","prefetcher","Prework","prefetchers","PREWORKERS","conds","translit","rxvt","Urxvt","realpath","realname","REPARSE","hardlink","hardlinking","nlink","nlink","linemodes","SIGSTOP","sevenzip","rsplitn","replacen","DECSET","DECRQM","repeek","cwds","tcsi"],"language":"en","version":"0.2"}
|
||||
{"words":["Punct","KEYMAP","splitn","crossterm","YAZI","unar","peekable","ratatui","syntect","pbpaste","pbcopy","ffmpegthumbnailer","oneshot","Posix","Lsar","XADDOS","zoxide","cands","Deque","precache","imageops","IFBLK","IFCHR","IFDIR","IFIFO","IFLNK","IFMT","IFSOCK","IRGRP","IROTH","IRUSR","ISGID","ISUID","ISVTX","IWGRP","IWOTH","IWUSR","IXGRP","IXOTH","IXUSR","libc","winsize","TIOCGWINSZ","xpixel","ypixel","ioerr","appender","Catppuccin","macchiato","gitmodules","Dotfiles","bashprofile","vimrc","flac","webp","exiftool","mediainfo","ripgrep","nvim","indexmap","indexmap","unwatch","canonicalize","serde","fsevent","Ueberzug","iterm","wezterm","sixel","chafa","ueberzugpp","️ Überzug","️ Überzug","Konsole","Alacritty","Überzug","pkgs","paru","unarchiver","pdftoppm","poppler","prebuild","singlefile","jpegopt","EXIF","rustfmt","mktemp","nanos","xclip","xsel","natord","Mintty","nixos","nixpkgs","SIGTSTP","SIGCONT","SIGCONT","mlua","nonstatic","userdata","metatable","natsort","backstack","luajit","Succ","Succ","cand","fileencoding","foldmethod","lightgreen","darkgray","lightred","lightyellow","lightcyan","nushell","msvc","aarch","linemode","sxyazi","rsplit","ZELLIJ","bitflags","bitflags","USERPROFILE","Neovim","vergen","gitcl","Renderable","preloaders","prec","imagesize","Upserting","prio","Ghostty","Catmull","Lanczos","cmds","unyank","scrolloff","headsup","unsub","uzers","scopeguard","SPDLOG","globset","filetime","magick","magick","prefetcher","Prework","prefetchers","PREWORKERS","conds","translit","rxvt","Urxvt","realpath","realname","REPARSE","hardlink","hardlinking","nlink","nlink","linemodes","SIGSTOP","sevenzip","rsplitn","replacen","DECSET","DECRQM","repeek","cwds","tcsi","Hyprland","Wayfire","SWAYSOCK"],"version":"0.2","language":"en","flagWords":[]}
|
@ -95,12 +95,14 @@ impl Adapter {
|
||||
return *p;
|
||||
}
|
||||
|
||||
let supported_compositor = Ueberzug::supported_compositor();
|
||||
match env::var("XDG_SESSION_TYPE").unwrap_or_default().as_str() {
|
||||
"x11" => return Self::X11,
|
||||
"wayland" => return Self::Wayland,
|
||||
"wayland" if supported_compositor => return Self::Wayland,
|
||||
"wayland" if !supported_compositor => warn!("[Adapter] Unsupported Wayland compositor"),
|
||||
_ => warn!("[Adapter] Could not identify XDG_SESSION_TYPE"),
|
||||
}
|
||||
if env_exists("WAYLAND_DISPLAY") {
|
||||
if supported_compositor && env_exists("WAYLAND_DISPLAY") {
|
||||
return Self::Wayland;
|
||||
}
|
||||
if env_exists("DISPLAY") {
|
||||
|
@ -6,7 +6,7 @@ use ratatui::layout::Rect;
|
||||
use tokio::{io::AsyncWriteExt, process::{Child, Command}, sync::mpsc::{self, UnboundedSender}};
|
||||
use tracing::{debug, warn};
|
||||
use yazi_config::PREVIEW;
|
||||
use yazi_shared::RoCell;
|
||||
use yazi_shared::{env_exists, RoCell};
|
||||
|
||||
use crate::{Adapter, Dimension};
|
||||
|
||||
@ -72,6 +72,15 @@ impl Ueberzug {
|
||||
}
|
||||
}
|
||||
|
||||
// Currently Überzug++'s Wayland output only supports Sway, Hyprland and Wayfire
|
||||
// as it requires information from specific compositor socket directly.
|
||||
// These environment variables are from ueberzugpp src/canvas/wayland/config.cpp
|
||||
pub(super) fn supported_compositor() -> bool {
|
||||
env_exists("SWAYSOCK")
|
||||
|| env_exists("HYPRLAND_INSTANCE_SIGNATURE")
|
||||
|| env_exists("WAYFIRE_SOCKET")
|
||||
}
|
||||
|
||||
fn create_demon(adapter: Adapter) -> Result<Child> {
|
||||
// TODO: demon
|
||||
let result = Command::new("ueberzugpp")
|
||||
|
@ -27,9 +27,13 @@ impl Actions {
|
||||
writeln!(s, " Adapter.matches: {:?}", yazi_adapter::Adapter::matches())?;
|
||||
|
||||
writeln!(s, "\nDesktop")?;
|
||||
writeln!(s, " XDG_SESSION_TYPE: {:?}", env::var_os("XDG_SESSION_TYPE"))?;
|
||||
writeln!(s, " WAYLAND_DISPLAY : {:?}", env::var_os("WAYLAND_DISPLAY"))?;
|
||||
writeln!(s, " DISPLAY : {:?}", env::var_os("DISPLAY"))?;
|
||||
writeln!(s, " XDG_SESSION_TYPE : {:?}", env::var_os("XDG_SESSION_TYPE"))?;
|
||||
writeln!(s, " WAYLAND_DISPLAY : {:?}", env::var_os("WAYLAND_DISPLAY"))?;
|
||||
writeln!(s, " DISPLAY : {:?}", env::var_os("DISPLAY"))?;
|
||||
writeln!(s, " SWAYSOCK : {:?}", env::var_os("SWAYSOCK"))?;
|
||||
#[rustfmt::skip]
|
||||
writeln!(s, " HYPRLAND_INSTANCE_SIGNATURE: {:?}", env::var_os("HYPRLAND_INSTANCE_SIGNATURE"))?;
|
||||
writeln!(s, " WAYFIRE_SOCKET : {:?}", env::var_os("WAYFIRE_SOCKET"))?;
|
||||
|
||||
writeln!(s, "\nSSH")?;
|
||||
writeln!(s, " shared.in_ssh_connection: {:?}", yazi_shared::in_ssh_connection())?;
|
||||
|
Loading…
Reference in New Issue
Block a user