From: Tim Landscheidt <tim@tim-landscheidt.de>
To: Noam Postavsky <npostavs@users.sourceforge.net>
Cc: 29473@debbugs.gnu.org
Subject: bug#29473: 25.3; 'background-mode is 'light on console with black background
Date: Sat, 09 Dec 2017 05:35:30 +0000 [thread overview]
Message-ID: <87efo4ihul.fsf@passepartout.tim-landscheidt.de> (raw)
In-Reply-To: <87a7z1jgn8.fsf@users.sourceforge.net> (Noam Postavsky's message of "Sat, 02 Dec 2017 10:25:47 -0500")
Noam Postavsky <npostavs@users.sourceforge.net> wrote:
>> In newsticker tree view on a Linux console with black back-
>> ground (both KDE's konsole application and "native" console
>> (Alt-Ctrl-F2), all under Fedora),
>> (frame-parameter nil 'background-mode) returns 'light. This
>> also happens with Emacs' current master branch.
>> After glancing at the manual, I'm unclear whether:
>> 1. Emacs should set 'background-mode correctly by itself
>> (and thus there is an error in the detection mechanism),
>> 2. it is my duty to explicitly set background-mode (via
>> initial-frame-alist?) when using Emacs on a console, or
> I'm pretty sure it's #1, the manual explains that background-mode nil
> should use automatic detection, and it sounds like that detection is
> going wrong.
> I don't see anything in lisp/term/linux.el that sets the background mode
> at all. What does running 'echo $TERM' in a shell give you?
> Looking at lisp/term/konsole.el, it looks like it uses the xterm
> functions for everything. Could you try stepping through/adding
> 'message' calls in terminal-init-xterm and see if/where it goes wrong?
(For the moment, I retract my claim that this also happens
on a "native" (Alt-Ctrl-F2) console because I can no longer
reproduce it and cannot remember my test setup, so the fol-
lowing is limited to konsole in Fedora 25.)
In konsole, $TERM is set to "xterm-256color":
| [tim@passepartout ~/src/emacs]$ echo $TERM
| xterm-256color
| [tim@passepartout ~/src/emacs]$
With interspersed message calls, I could find out that kon-
sole's response to the "Secondary Device Attributes (DA)"
query in terminal-init-xterm ("\e[>0c") is "^[[>0;115;0c":
| [tim@passepartout ~/src/emacs]$ perl -we 'print "\e[>0c";'; sleep 1; echo
| ^[[>0;115;0c
| [tim@passepartout ~/src/emacs]$
This version number (115) falls short of the test
"(>= version 242)" which would cause the background colour
to be queried, and rightly so, because konsole does not re-
spond to the query "\e]11;?\e\\":
| [tim@passepartout ~/src/emacs]$ perl -we 'print "\e]11;?\e\\";'; sleep 1; echo
| [tim@passepartout ~/src/emacs]$
(Sidenote: gnome-terminal reports back "^[[>1;4603;0c" and
"^[]11;rgb:2323/2727/2929^[\" but the latter is never que-
ried due to NUMBER1 being 1 and NUMBER2 being greater than
2000, so background-mode stills end up as 'light with gnome-
terminal.)
So then I tried to track down where background-mode's 'light
is actually coming from, and it seems to originate in
frame-set-background-mode's:
| (default-bg-mode
| (if (or (window-system frame)
| (and tty-type
| (string-match "^\\(xterm\\|\\rxvt\\|dtterm\\|eterm\\)"
| tty-type)))
| 'light
| 'dark))
with tty-type being "xterm-256color". This logic was first
introduced in:
| commit 5ebc02b3656890d1d110c671129c64547bdbcdd6
| Author: Eli Zaretskii <eliz@gnu.org>
| Date: Sat Oct 28 18:48:08 2000 +0000
| (normal-top-level): If the value of $TERM indicates that
| we are running from xterm or one of its work-alikes, default to a
| light background mode.
Curious, I installed xterm and indeed it has black fore-
ground on white background which I had not only forgotten
about, but also for example Wikipedia uses a black back-
ground xterm to illustrate its article
(https://en.wikipedia.org/wiki/Xterm). D'oh.
My assumption now is that Emacs's detection mechanism cannot
be "fixed" for konsole in Fedora 25 and I should manually
set frame-background-mode to 'dark.
But: In Fedora 26, konsole 17.04.1 (in contrast to Fedora
25's konsole 16.12.3) still returns "^[[>0;115;0c" as
version number, /but/ "\^[]11;rgb:0000/0000/0000^G" for the
background colour.
So one possible improvement could be to query the background
colour either unconditionally or also on "(= version 115)".
This would increase the start-up time by (at most) two se-
conds (xterm-query-timeout) for terminals that do not sup-
port this query AFAIUI.
(So that I don't forget: I used:
| [tim@passepartout ~/src/emacs]$ make && ./src/emacs -Q -L $PWD -nw --eval '(switch-to-buffer "*Messages*")'
for testing.)
next prev parent reply other threads:[~2017-12-09 5:35 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-27 14:53 bug#29473: 25.3; 'background-mode is 'light on console with black background Tim Landscheidt
2017-12-02 15:25 ` Noam Postavsky
2017-12-09 5:35 ` Tim Landscheidt [this message]
2017-12-09 14:05 ` Noam Postavsky
2021-09-03 6:44 ` Lars Ingebrigtsen
2021-10-03 9:44 ` Lars Ingebrigtsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87efo4ihul.fsf@passepartout.tim-landscheidt.de \
--to=tim@tim-landscheidt.de \
--cc=29473@debbugs.gnu.org \
--cc=npostavs@users.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).