From 921fc0bdae2ecf358c3a1a147ac2e1e2bfa21334 Mon Sep 17 00:00:00 2001 From: Eric Nelson Date: Sun, 1 Sep 2024 11:56:21 -0700 Subject: [PATCH 1/2] Update so that WindowsTerminal uses sixel for images previews --- yazi-adapter/src/adapter.rs | 15 +++++++++------ yazi-adapter/src/emulator.rs | 3 +++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/yazi-adapter/src/adapter.rs b/yazi-adapter/src/adapter.rs index e77d72a4a..f5a4a779c 100644 --- a/yazi-adapter/src/adapter.rs +++ b/yazi-adapter/src/adapter.rs @@ -82,14 +82,17 @@ impl Adapter { impl Adapter { pub fn matches() -> Self { - let mut protocols = Emulator::detect().adapters(); + let emulator = Emulator::detect(); + let mut protocols = emulator.clone().adapters(); #[cfg(windows)] - protocols.retain(|p| *p == Self::Iterm2); - if env_exists("ZELLIJ_SESSION_NAME") { - protocols.retain(|p| *p == Self::Sixel); - } else if *TMUX { - protocols.retain(|p| *p != Self::KittyOld); + if !matches!(emulator, Emulator::WindowsTerminal) { + protocols.retain(|p| *p == Self::Iterm2); + if env_exists("ZELLIJ_SESSION_NAME") { + protocols.retain(|p| *p == Self::Sixel); + } else if *TMUX { + protocols.retain(|p| *p != Self::KittyOld); + } } if let Some(p) = protocols.first() { return *p; diff --git a/yazi-adapter/src/emulator.rs b/yazi-adapter/src/emulator.rs index a201121ec..4b5a8ddcd 100644 --- a/yazi-adapter/src/emulator.rs +++ b/yazi-adapter/src/emulator.rs @@ -26,6 +26,7 @@ pub enum Emulator { Neovim, Apple, Urxvt, + WindowsTerminal } impl Emulator { @@ -46,6 +47,7 @@ impl Emulator { Self::Neovim => vec![], Self::Apple => vec![], Self::Urxvt => vec![], + Self::WindowsTerminal => vec![Adapter::Sixel] } } } @@ -64,6 +66,7 @@ impl Emulator { ("GHOSTTY_RESOURCES_DIR", Self::Ghostty), ("VSCODE_INJECTION", Self::VSCode), ("TABBY_CONFIG_DIRECTORY", Self::Tabby), + ("WT_Session", Self::WindowsTerminal), ]; match vars.into_iter().find(|v| env_exists(v.0)) { Some(var) => return var.1, From 8995572dd17e447cac5f0803f53ffbd3cc84c524 Mon Sep 17 00:00:00 2001 From: sxyazi Date: Mon, 2 Sep 2024 11:42:17 +0800 Subject: [PATCH 2/2] Fix check for Windows Terminal --- README.md | 31 ++++++++++++++++--------------- yazi-adapter/src/adapter.rs | 18 ++++++++++-------- yazi-adapter/src/emulator.rs | 6 +++--- 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 7abd004bc..e0742a7f7 100644 --- a/README.md +++ b/README.md @@ -38,21 +38,22 @@ https://github.com/sxyazi/yazi/assets/17523360/92ff23fa-0cd5-4f04-b387-894c12265 ## Image Preview -| Platform | Protocol | Support | -| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | -| [kitty](https://github.com/kovidgoyal/kitty) | [Kitty unicode placeholders](https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders) | ✅ Built-in | -| [Konsole](https://invent.kde.org/utilities/konsole) | [Kitty old protocol](https://github.com/sxyazi/yazi/blob/main/yazi-adapter/src/kitty_old.rs) | ✅ Built-in | -| [iTerm2](https://iterm2.com) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | -| [WezTerm](https://github.com/wez/wezterm) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | -| [Mintty](https://github.com/mintty/mintty) (Git Bash) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | -| [foot](https://codeberg.org/dnkl/foot) | [Sixel graphics format](https://www.vt100.net/docs/vt3xx-gp/chapter14.html) | ✅ Built-in | -| [Ghostty](https://mitchellh.com/ghostty) | [Kitty unicode placeholders](https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders) | ✅ Built-in | -| [Black Box](https://gitlab.gnome.org/raggesilver/blackbox) | [Sixel graphics format](https://www.vt100.net/docs/vt3xx-gp/chapter14.html) | ✅ Built-in | -| [VSCode](https://github.com/microsoft/vscode) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | -| [Tabby](https://github.com/Eugeny/tabby) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | -| [Hyper](https://github.com/vercel/hyper) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | -| X11 / Wayland | Window system protocol | ☑️ [Überzug++](https://github.com/jstkdng/ueberzugpp) required | -| Fallback | [ASCII art (Unicode block)](https://en.wikipedia.org/wiki/ASCII_art) | ☑️ [Chafa](https://hpjansson.org/chafa/) required | +| Platform | Protocol | Support | +| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | +| [kitty](https://github.com/kovidgoyal/kitty) | [Kitty unicode placeholders](https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders) | ✅ Built-in | +| [Konsole](https://invent.kde.org/utilities/konsole) | [Kitty old protocol](https://github.com/sxyazi/yazi/blob/main/yazi-adapter/src/kitty_old.rs) | ✅ Built-in | +| [iTerm2](https://iterm2.com) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | +| [WezTerm](https://github.com/wez/wezterm) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | +| [Mintty](https://github.com/mintty/mintty) (Git Bash) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | +| [foot](https://codeberg.org/dnkl/foot) | [Sixel graphics format](https://www.vt100.net/docs/vt3xx-gp/chapter14.html) | ✅ Built-in | +| [Ghostty](https://mitchellh.com/ghostty) | [Kitty unicode placeholders](https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders) | ✅ Built-in | +| [Windows Terminal](https://github.com/microsoft/terminal) (>= v1.22.2362.0) | [Sixel graphics format](https://www.vt100.net/docs/vt3xx-gp/chapter14.html) | ✅ Built-in | +| [Black Box](https://gitlab.gnome.org/raggesilver/blackbox) | [Sixel graphics format](https://www.vt100.net/docs/vt3xx-gp/chapter14.html) | ✅ Built-in | +| [VSCode](https://github.com/microsoft/vscode) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | +| [Tabby](https://github.com/Eugeny/tabby) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | +| [Hyper](https://github.com/vercel/hyper) | [Inline images protocol](https://iterm2.com/documentation-images.html) | ✅ Built-in | +| X11 / Wayland | Window system protocol | ☑️ [Überzug++](https://github.com/jstkdng/ueberzugpp) required | +| Fallback | [ASCII art (Unicode block)](https://en.wikipedia.org/wiki/ASCII_art) | ☑️ [Chafa](https://hpjansson.org/chafa/) required | See https://yazi-rs.github.io/docs/image-preview for details. diff --git a/yazi-adapter/src/adapter.rs b/yazi-adapter/src/adapter.rs index f5a4a779c..dc506dba1 100644 --- a/yazi-adapter/src/adapter.rs +++ b/yazi-adapter/src/adapter.rs @@ -83,16 +83,18 @@ impl Adapter { impl Adapter { pub fn matches() -> Self { let emulator = Emulator::detect(); - let mut protocols = emulator.clone().adapters(); + #[cfg(windows)] + if matches!(emulator, Emulator::Microsoft) { + return Self::Sixel; + } + let mut protocols = emulator.adapters(); #[cfg(windows)] - if !matches!(emulator, Emulator::WindowsTerminal) { - protocols.retain(|p| *p == Self::Iterm2); - if env_exists("ZELLIJ_SESSION_NAME") { - protocols.retain(|p| *p == Self::Sixel); - } else if *TMUX { - protocols.retain(|p| *p != Self::KittyOld); - } + protocols.retain(|p| *p == Self::Iterm2); + if env_exists("ZELLIJ_SESSION_NAME") { + protocols.retain(|p| *p == Self::Sixel); + } else if *TMUX { + protocols.retain(|p| *p != Self::KittyOld); } if let Some(p) = protocols.first() { return *p; diff --git a/yazi-adapter/src/emulator.rs b/yazi-adapter/src/emulator.rs index 4b5a8ddcd..3a1e2ebe4 100644 --- a/yazi-adapter/src/emulator.rs +++ b/yazi-adapter/src/emulator.rs @@ -18,6 +18,7 @@ pub enum Emulator { WezTerm, Foot, Ghostty, + Microsoft, BlackBox, VSCode, Tabby, @@ -26,7 +27,6 @@ pub enum Emulator { Neovim, Apple, Urxvt, - WindowsTerminal } impl Emulator { @@ -39,6 +39,7 @@ impl Emulator { Self::WezTerm => vec![Adapter::Iterm2, Adapter::Sixel], Self::Foot => vec![Adapter::Sixel], Self::Ghostty => vec![Adapter::Kitty], + Self::Microsoft => vec![Adapter::Sixel], Self::BlackBox => vec![Adapter::Sixel], Self::VSCode => vec![Adapter::Iterm2, Adapter::Sixel], Self::Tabby => vec![Adapter::Iterm2, Adapter::Sixel], @@ -47,7 +48,6 @@ impl Emulator { Self::Neovim => vec![], Self::Apple => vec![], Self::Urxvt => vec![], - Self::WindowsTerminal => vec![Adapter::Sixel] } } } @@ -64,9 +64,9 @@ impl Emulator { ("ITERM_SESSION_ID", Self::Iterm2), ("WEZTERM_EXECUTABLE", Self::WezTerm), ("GHOSTTY_RESOURCES_DIR", Self::Ghostty), + ("WT_Session", Self::Microsoft), ("VSCODE_INJECTION", Self::VSCode), ("TABBY_CONFIG_DIRECTORY", Self::Tabby), - ("WT_Session", Self::WindowsTerminal), ]; match vars.into_iter().find(|v| env_exists(v.0)) { Some(var) => return var.1,