diff --git a/src/builtins/fish_key_reader.rs b/src/builtins/fish_key_reader.rs index 90b46f942..021010c82 100644 --- a/src/builtins/fish_key_reader.rs +++ b/src/builtins/fish_key_reader.rs @@ -19,9 +19,9 @@ use crate::{ env::env_init, input::input_terminfo_get_name, input_common::{ - enable_kitty_progressive_enhancements, terminal_protocol_hacks, - terminal_protocols_enable_ifn, CharEvent, ImplicitEvent, InputEventQueue, InputEventQueuer, - KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY, + enable_kitty_progressive_enhancements, kitty_progressive_enhancements_query, + terminal_protocol_hacks, terminal_protocols_enable_ifn, CharEvent, ImplicitEvent, + InputEventQueue, InputEventQueuer, }, key::{char_to_symbol, Key}, nix::isatty, @@ -144,7 +144,7 @@ fn setup_and_process_keys(streams: &mut IoStreams, continuous_mode: bool, verbos terminal_protocol_hacks(); streams .out - .append(str2wcstring(KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY)); + .append(str2wcstring(kitty_progressive_enhancements_query())); if continuous_mode { streams.err.append(L!("\n")); diff --git a/src/input_common.rs b/src/input_common.rs index 3d2d3243e..8847969dc 100644 --- a/src/input_common.rs +++ b/src/input_common.rs @@ -458,7 +458,12 @@ macro_rules! kitty_progressive_enhancements { }; } -pub const KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY: &[u8] = b"\x1b[?u"; +pub fn kitty_progressive_enhancements_query() -> &'static [u8] { + if std::env::var_os("TERM").is_some_and(|term| term.as_os_str().as_bytes() == b"st-256color") { + return b""; + } + b"\x1b[?u" +} pub(crate) fn enable_kitty_progressive_enhancements() -> bool { if IN_MIDNIGHT_COMMANDER_PRE_CSI_U.load() || IN_ITERM_PRE_CSI_U.load() { diff --git a/src/reader.rs b/src/reader.rs index 8be78265c..088a089d1 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -82,12 +82,12 @@ use crate::history::{ }; use crate::input::init_input; use crate::input_common::enable_kitty_progressive_enhancements; +use crate::input_common::kitty_progressive_enhancements_query; use crate::input_common::CursorPositionBlockingWait; use crate::input_common::CursorPositionWait; use crate::input_common::ImplicitEvent; use crate::input_common::InputEventQueuer; use crate::input_common::IN_MIDNIGHT_COMMANDER_PRE_CSI_U; -use crate::input_common::KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY; use crate::input_common::{ terminal_protocol_hacks, terminal_protocols_enable_ifn, CharEvent, CharInputStyle, InputData, ReadlineCmd, @@ -2163,7 +2163,7 @@ impl<'a> Reader<'a> { let mut out = Outputter::stdoutput().borrow_mut(); out.begin_buffering(); // Query for kitty keyboard protocol support. - let _ = out.write(KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY); + let _ = out.write(kitty_progressive_enhancements_query()); // Query for cursor position reporting support. zelf.request_cursor_position(&mut out, CursorPositionWait::InitialFeatureProbe); // Query for synchronized output support.