-
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: may fail to ignore escape sequences for kitty progressive enhancements #4338
Comments
We unconditionally request kitty keyboard protocol's progressive enhancements. It seems that a lot of terminals fail to parse CSI commands that contain '=' such as \x1b[=5u. 1. [Midnight Commander](MidnightCommander/mc@0ea77d2) 2. Prompt 3 App (private bug tracker) 3. JetBrains IDEs https://youtrack.jetbrains.com/issue/IJPL-166234 4. Termux termux/termux-app#4338 5. Amazon Linux Web Console amazonlinux/amazon-linux-2023#871 It is difficult to fix the four remaining ones in a timely manner, so let's query for support as described in https://sw.kovidgoyal.net/kitty/keyboard-protocol/#detection-of-support-for-this-protocol This uses CSI 5 n (device status report), which is the older brother of CSI 6 n (cursor position report) we use as of recently. Query asynchronously and enable progressive enhancements as soon as we get a response. In theory this allow `cat malicious-file.txt` leading us to believe the protocol is supported. See #10994
I can confirm that Since Fish v4.0.0. is not yet packaged for Termux, I don't experience real issues yet. However, when I ssh from Termux to a host that has Fish v4.0.0 set as the user's shell, I get these unexpected character sequences printed. For example, the prompt has The workaround makes the shell usable again:
|
There is an open PR for it, However the 32 Bit builds aren't currently working and I haven't had the time to look into that yet. |
Why not fix the CSI parser - termux owns that code, no? |
We currently have 1 (one) maintainer for the terminal emulator and main Termux App part of the project. |
I'll create a PR later today. If someone else could test it that would be great - the main reason why I didn't fix it already is probably that I don't have toolchain set up to test it. |
…ameter byte To-do: this is untested, would appreciate help. Standard ECMA-48: Control Functions for Coded Character Sets specifies the format of CSI commands. Wikipedia has a concise description: https://en.wikipedia.org/wiki/ANSI_escape_code#Control_Sequence_Introducer_commands Do this for at least for sequences like "CSI = 5 u" that contain non-numeric parameter bytes. This fixes a problem with fish shell 4.0.0 which (for better or worse) uses that sequence. This patch introduces a slight inconsistency: for the above example, "unknownSequence('u')" will be called. The resulting log message may be confusing, because we *do* support "CSI u". We should fix this to log the entire unknown sequence. I can try doing that. In future we should also fully consume all other unknown CSI commands. A contrived example would be "CSI ! ! a". If desired, I'm happy to fix those as well, as I have some context already (but I don't think that would block this patch). Closes termux#4338
Problem description
termux seems to fail to parse certain CSI escape sequences, and ends up echoing them.
This is unfortunate because it prevents programs like text editors and shells from using the kitty keyboard protocol
This was originally reported in the fish-shell matrix channel
I have not had a chance to reproduce this but it should be easy to do so.
Steps to reproduce the behavior.
printf '\x1b[=5u
This supposedly echoes
5u
What is the expected behavior?
Nothing should be echoed, since the string is a CSI-prefixed escape sequence
System information
not sure
The text was updated successfully, but these errors were encountered: