summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-11-24 13:59:22 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-11-24 13:59:22 +0100
commitc484315b012f893ac240d25e7a2c8a9afc253adb (patch)
tree18fad80f0003c879196c9a11e8499b6f8d5f3100
parent78af8a798aa9f1100a1228454ff8ebf98ce1b9e5 (diff)
downloadsystemd-c484315b012f893ac240d25e7a2c8a9afc253adb.tar.gz
basic/terminal-util: add support for $NO_COLOR
See inline comments. Fixes #13752.
-rw-r--r--man/less-variables.xml11
-rw-r--r--src/basic/terminal-util.c8
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);