diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-11-24 13:59:22 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-11-24 13:59:22 +0100 |
commit | c484315b012f893ac240d25e7a2c8a9afc253adb (patch) | |
tree | 18fad80f0003c879196c9a11e8499b6f8d5f3100 | |
parent | 78af8a798aa9f1100a1228454ff8ebf98ce1b9e5 (diff) | |
download | systemd-c484315b012f893ac240d25e7a2c8a9afc253adb.tar.gz |
basic/terminal-util: add support for $NO_COLOR
See inline comments. Fixes #13752.
-rw-r--r-- | man/less-variables.xml | 11 | ||||
-rw-r--r-- | src/basic/terminal-util.c | 8 |
2 files changed, 19 insertions, 0 deletions
diff --git a/man/less-variables.xml b/man/less-variables.xml index 03e4b35388..08e513c99f 100644 --- a/man/less-variables.xml +++ b/man/less-variables.xml @@ -73,6 +73,17 @@ </listitem> </varlistentry> + <!-- This is not documented on purpose, because it is not clear if $NO_COLOR will become supported + widely enough. So let's provide support, but without advertising this. + <varlistentry id='no-color'> + <term><varname>$NO_COLOR</varname></term> + + <listitem><para>If set (to any value), and <varname>$SYSTEMD_COLORS</varname> is not set, equivalent to + <option>SYSTEMD_COLORS=0</option>. See <ulink url="https://no-color.org/">no-color.org</ulink>.</para> + </listitem> + </varlistentry> + --> + <varlistentry id='urlify'> <term><varname>$SYSTEMD_URLIFY</varname></term> diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 98c3ff04ef..511734cbbb 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1206,6 +1206,11 @@ bool colors_enabled(void) { val = getenv_bool("SYSTEMD_COLORS"); if (val >= 0) cached_colors_enabled = val; + + else if (getenv("NO_COLOR")) + /* We only check for the presence of the variable; value is ignored. */ + cached_colors_enabled = false; + else if (getpid_cached() == 1) /* PID1 outputs to the console without holding it open all the time */ cached_colors_enabled = !getenv_terminal_is_dumb(); @@ -1231,6 +1236,9 @@ bool dev_console_colors_enabled(void) { if (b >= 0) return b; + if (getenv("NO_COLOR")) + return false; + if (getenv_for_pid(1, "TERM", &s) <= 0) (void) proc_cmdline_get_key("TERM", 0, &s); |