Subject: bug#43891: 26.3; Wrong background-mode on gnome-terminal 3.38

From: Lars Ingebrigtsen <[email-masked]>
Date: Thu, 15 Oct 2020 17:27:55 +0200

semente <[email-masked]> writes:

> This is the same bug reported in #29716[1], which was fixed for
> gnome-terminal 3.22.  A solution made by Noam Postavsky is found on
> #29716 as well. Perhaps there is a way to fix this definetely for
> gnome-terminal, I believe it affects many users.

In gnome-terminal 3.38, the version string in xterm--version-handler is:

"65;6200;1"

So, just hacking blindly without any clue what this is, the following
patch fixes the issue for me.

Does anybody know whether this makes sense or not?

diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 1a727e3933..6f5fa7518b 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -710,15 +710,18 @@ xterm--version-handler
     (while (and (setq chr (xterm--read-event-for-query)) (not (equal chr ?c)))
       (setq str (concat str (string chr))))
     ;; Since xterm-280, the terminal type (NUMBER1) is now 41 instead of 0.
-    (when (string-match "\\([0-9]+\\);\\([0-9]+\\);0" str)
+    (when (string-match "\\([0-9]+\\);\\([0-9]+\\);[01]" str)
       (let ((version (string-to-number (match-string 2 str))))
-        (when (and (> version 2000) (equal (match-string 1 str) "1"))
+        (when (and (> version 2000)
+                   (or (equal (match-string 1 str) "1")
+                       (equal (match-string 1 str) "65")))
           ;; Hack attack!  bug#16988: gnome-terminal reports "1;NNNN;0"
           ;; with a large NNNN but is based on a rather old xterm code.
           ;; Gnome terminal 2.32.1 reports 1;2802;0
           ;; Gnome terminal 3.6.1 reports 1;3406;0
           ;; Gnome terminal 3.22.2 reports 1;4601;0 and *does* support
           ;; background color querying (Bug#29716).
+          ;; Gnome terminal 3.38.0 reports 65;6200;1.
           (when (> version 4000)
             (xterm--query "\e]11;?\e\\"
                           '(("\e]11;" .  xterm--report-background-handler))))

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no