mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
ptyfwd: Always prioritize $SYSTEMD_TINT_BACKGROUND
By giving priority to --background= we prevent users from opting out of coloring if an explicit color is chosen by a tool wrapping one of our own tools. Instead, let's give priority to the environment variable, so that even if our tools are wrapped by another tool with a different background, users can still opt out of coloring just by setting the environment variable, which has a high chance of being forwarded to the invocation of our own tools which makes it easy to use to disable color tinting globally if requested by the user.
This commit is contained in:
@@ -783,15 +783,14 @@ Tools using the Varlink protocol (such as `varlinkctl`) or sd-bus (such as
|
||||
|
||||
`systemd-run`, `run0`, `systemd-nspawn`, `systemd-vmspawn`:
|
||||
|
||||
* `$SYSTEMD_TINT_BACKGROUND` – Takes a boolean. When false the automatic
|
||||
tinting of the background for containers, VMs, and interactive `systemd-run`
|
||||
and `run0` invocations is turned off. Note that this environment variable has
|
||||
no effect if the background color is explicitly selected via the relevant
|
||||
`--background=` switch of the tool.
|
||||
* `$SYSTEMD_TINT_BACKGROUND` – Takes a boolean. When false the automatic and
|
||||
explicit tinting of the background (via `--background=`) for containers, VMs,
|
||||
`systemd-pty-forward` and interactive `systemd-run` and `run0` invocations is
|
||||
turned off.
|
||||
|
||||
* `$SYSTEMD_ADJUST_TERMINAL_TITLE` – Takes a boolean. When false the terminal
|
||||
window title will not be updated for interactive invocation of the mentioned
|
||||
tools.
|
||||
window title will not be updated for interactive invocation of the tools
|
||||
mentioned above.
|
||||
|
||||
`systemd-hostnamed`, `systemd-importd`, `systemd-localed`, `systemd-machined`,
|
||||
`systemd-portabled`, `systemd-timedated`:
|
||||
|
||||
@@ -5646,7 +5646,7 @@ static int run_container(
|
||||
arg_console_width,
|
||||
arg_console_height);
|
||||
|
||||
if (!arg_background && shall_tint_background()) {
|
||||
if (!arg_background) {
|
||||
_cleanup_free_ char *bg = NULL;
|
||||
|
||||
r = terminal_tint_color(220 /* blue */, &bg);
|
||||
|
||||
@@ -1161,7 +1161,7 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) {
|
||||
if (strv_extend(&arg_property, "IgnoreSIGPIPE=no") < 0)
|
||||
return log_oom();
|
||||
|
||||
if (!arg_background && arg_stdio == ARG_STDIO_PTY && shall_tint_background()) {
|
||||
if (!arg_background && arg_stdio == ARG_STDIO_PTY) {
|
||||
double hue;
|
||||
|
||||
if (privileged_execution())
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "hostname-setup.h"
|
||||
#include "io-util.h"
|
||||
#include "log.h"
|
||||
#include "pretty-print.h"
|
||||
#include "ptyfwd.h"
|
||||
#include "stat-util.h"
|
||||
#include "string-util.h"
|
||||
@@ -318,6 +319,9 @@ static int insert_background_color(PTYForward *f, size_t offset) {
|
||||
if (!f->background_color)
|
||||
return 0;
|
||||
|
||||
if (!shall_tint_background())
|
||||
return 0;
|
||||
|
||||
s = background_color_sequence(f);
|
||||
if (!s)
|
||||
return -ENOMEM;
|
||||
@@ -403,6 +407,9 @@ static int insert_background_fix(PTYForward *f, size_t offset) {
|
||||
if (!f->background_color)
|
||||
return 0;
|
||||
|
||||
if (!shall_tint_background())
|
||||
return 0;
|
||||
|
||||
if (!is_csi_background_reset_sequence(strempty(f->csi_sequence)))
|
||||
return 0;
|
||||
|
||||
@@ -605,7 +612,7 @@ static int do_shovel(PTYForward *f) {
|
||||
* shovelling. Hence, possibly send some initial ANSI sequences. But do so only if we are
|
||||
* talking to an actual TTY. */
|
||||
|
||||
if (f->background_color) {
|
||||
if (f->background_color && shall_tint_background()) {
|
||||
/* Erase the first line when we start */
|
||||
f->out_buffer = background_color_sequence(f);
|
||||
if (!f->out_buffer)
|
||||
|
||||
@@ -2745,7 +2745,7 @@ static int run_virtual_machine(int kvm_device_fd, int vhost_device_fd) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to create PTY forwarder: %m");
|
||||
|
||||
if (!arg_background && shall_tint_background()) {
|
||||
if (!arg_background) {
|
||||
_cleanup_free_ char *bg = NULL;
|
||||
|
||||
r = terminal_tint_color(130 /* green */, &bg);
|
||||
|
||||
Reference in New Issue
Block a user