From: Mantas Mikulėnas Date: Mon, 17 Jun 2024 09:41:56 +0000 (+0300) Subject: run: add environment variable to prevent the setting of terminal title X-Git-Tag: v257-rc1~1024^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27a2513013d3b3c6140de47e04b3042c5b4487e5;p=thirdparty%2Fsystemd.git run: add environment variable to prevent the setting of terminal title This goes together with the existing SYSTEMD_TINT_BACKGROUND. Closes https://github.com/systemd/systemd/issues/33301 --- diff --git a/docs/ENVIRONMENT.md b/docs/ENVIRONMENT.md index d44e91b9739..dcd296d17c8 100644 --- a/docs/ENVIRONMENT.md +++ b/docs/ENVIRONMENT.md @@ -714,6 +714,10 @@ Tools using the Varlink protocol (such as `varlinkctl`) or sd-bus (such as no effect if the background color is explicitly selected via the relevant `--background=` switch of the tool. +* `$SYSTEMD_ADJUST_TERMINAL_TITLE` – Takes a boolean. When false the terminal + window title will not be updated for interactive invocation of the mentioned + tools. + `systemd-hostnamed`, `systemd-importd`, `systemd-localed`, `systemd-machined`, `systemd-portabled`, `systemd-timedated`: diff --git a/src/run/run.c b/src/run/run.c index 5779403b9c5..ba7bb2148a1 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -1848,7 +1848,8 @@ static int start_transient_service(sd_bus *bus) { if (!isempty(arg_background)) (void) pty_forward_set_background_color(c.forward, arg_background); - set_window_title(c.forward); + if (shall_set_terminal_title()) + set_window_title(c.forward); } path = unit_dbus_path_from_name(service); diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index 998ce96b547..842aef92702 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -17,6 +17,7 @@ #include "sd-event.h" #include "alloc-util.h" +#include "env-util.h" #include "errno-util.h" #include "extract-word.h" #include "fd-util.h" @@ -367,6 +368,21 @@ static int insert_background_fix(PTYForward *f, size_t offset) { return insert_string(f, offset, s); } +bool shall_set_terminal_title(void) { + static int cache = -1; + + if (cache >= 0) + return cache; + + cache = getenv_bool("SYSTEMD_ADJUST_TERMINAL_TITLE"); + if (cache == -ENXIO) + return (cache = true); + if (cache < 0) + log_debug_errno(cache, "Failed to parse $SYSTEMD_ADJUST_TERMINAL_TITLE, leaving terminal title setting enabled: %m"); + + return cache != 0; +} + static int insert_window_title_fix(PTYForward *f, size_t offset) { assert(f); diff --git a/src/shared/ptyfwd.h b/src/shared/ptyfwd.h index 248646d764b..b86027e9bc5 100644 --- a/src/shared/ptyfwd.h +++ b/src/shared/ptyfwd.h @@ -50,4 +50,6 @@ int pty_forward_set_titlef(PTYForward *f, const char *format, ...) _printf_(2,3) int pty_forward_set_title_prefix(PTYForward *f, const char *prefix); +bool shall_set_terminal_title(void); + DEFINE_TRIVIAL_CLEANUP_FUNC(PTYForward*, pty_forward_free);