Date: Fri, 27 Dec 2024 23:08:27 -0800
From: Jared Finder <jared@finder.org>
Cc: shipmints@gmail.com, rms@gnu.org, gerd.moellmann@gmail.com,
fgunbin@fastmail.fm, 74833@debbugs.gnu.org
>> What if we only auto-enabled xterm-mouse-mode on OSC52 compatible
>> terminals?
>
> On OSC52 compatible terminals, or on OSC52 compatible terminals that
> define TERM to xterm-like string? The latter sounds like a good idea
> to me, but only if support for OSC52 necessarily means xterm-mouse
> escape sequences must be supported. Is this conjecture indeed true?
I'm proposing Emacs have a manually curated allow list for now for
auto-enabling xterm-mouse-mode. Being OSC52 compatible gets us the
copy
/ paste issue this bug mentioned. We can add other conditions going
forward.
What would this allow list specify, and in what terms?
When reading your proposal above, I thought we have a means of testing
the OSC52 support, but now you seem to be saying that this support
should be somehow specified by a database of terminals we maintain?
ANd if so, the question of detecting a non-xterm terminal that sets
TERM to xterm but doesn't support OSC52 still stands, doesn't it?
>> Between $TERM and the results from the terminal escape
>> sequence "ESC [ > 0 q", Emacs can have high confidence if it is
>> running
>> on an OSC52 compatible terminal. I checked against most of the
>> terminals
>> mentioned at
>> https://can-i-use-terminal.github.io/features/osc52copy.html I just
>> wasn't able to test Foot (Wayland-only), hterm (Chromebook-only),
>> mintty
>> (Cygwin-only), or xterm.js (I have no idea how to test).
>
> How do I check this? can you show some script or Lisp or whatever you
> used to check?
Run the following lisp code in Emacs:
(progn
(send-string-to-terminal "\e[>0q")
(let ((str "")
chr)
(while (setq chr (xterm--read-event-for-query))
(setq str (concat str (string chr))))
str))
You should get the string "\eP>|terminal name and version\e\\". For
example, under iTerm2 I get iTerm2 3.5.10 as the terminal name and
version and under Kitty I get kitty(0.38.1).
And if the terminal does NOT support OSC52, what should I expect to
happen?