1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-27 18:55:40 +03:00

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
This commit is contained in:
Mantas Mikulėnas 2024-06-17 12:41:56 +03:00
parent ac6eb58f09
commit 27a2513013
4 changed files with 24 additions and 1 deletions

View File

@ -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`:

View File

@ -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);

View File

@ -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);

View File

@ -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);