]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
terminal-util: use 256 color mode for PID 1 output, too
authorLennart Poettering <lennart@poettering.net>
Wed, 16 Dec 2020 18:55:32 +0000 (19:55 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 17 Dec 2020 08:15:26 +0000 (09:15 +0100)
Follow-up for: #17702

Alsoe, see earlier review comment: https://github.com/systemd/systemd/pull/17702#pullrequestreview-552329600

src/basic/terminal-util.c

index 7c003f80dd01b1fca3708768fe08e4ff006ac229..3fc03050ac147a2e8b032128b2086529469a74b5 100644 (file)
@@ -1240,9 +1240,14 @@ ColorMode get_color_mode(void) {
 
                 else if (getpid_cached() == 1)
                         /* PID1 outputs to the console without holding it open all the time.
-                         * Also note the Linux console can only handle 16 colors.
-                         */
-                        cached_color_mode = getenv_terminal_is_dumb() ? COLOR_OFF : COLOR_16;
+                         *
+                         * Note that the Linux console can only display 16 colors. We still enable 256 color
+                         * mode even for PID1 output though (which typically goes to the Linux console),
+                         * since the Linux console is able to parse the 256 color sequences and automatically
+                         * map them to the closest color in the 16 color palette (since kernel 3.16). Doing
+                         * 256 colors is nice for people who invoke systemd in a container or via a serial
+                         * link or such, and use a true 256 color terminal to do so. */
+                        cached_color_mode = getenv_terminal_is_dumb() ? COLOR_OFF : COLOR_256;
                 else
                         cached_color_mode = terminal_is_dumb() ? COLOR_OFF : COLOR_256;
         }