unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
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.)





  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).