From f6940d2e1782aeab59bdebe3854387e3d733ea3b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Sat, 2 Sep 2023 09:12:59 +0600 Subject: [PATCH] command building edits --- source/ublexec.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/ublexec.cc b/source/ublexec.cc index e13eeb2..35f21a6 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -637,18 +637,20 @@ string MainWindow::start_cmd(string user_cmd) { if (cbxExecuteEpriority->get_active()) { str_variants_root += " nice -n " + to_string(spinPriority->get_value_as_int()); } + if (cmbUser->get_active_text()=="root") str_variants_root += " env HOME=$HOME DISPLAY=$DISPLAY WAYLAND_DISPLAY=$WAYLAND_DISPLAY XAUTHORITY=$XAUTHORITY DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS XDG_SESSION_TYPE=$XDG_SESSION_TYPE XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR SESSION_MANAGER=$SESSION_MANAGER GNOME_DESKTOP_SESSION_ID=$GNOME_DESKTOP_SESSION_ID KDE_FULL_SESSION=$KDE_FULL_SESSION "; + else + str_variants_root += " env HOME=$HOME DISPLAY=$DISPLAY WAYLAND_DISPLAY=$WAYLAND_DISPLAY XAUTHORITY=$XAUTHORITY DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS XDG_SESSION_TYPE=$XDG_SESSION_TYPE "; } else if (rbSu->get_active()) { chbTerminal->set_active(true); string str_user = cmbUser->get_active_text(); if (str_user != "root") { - str_variants_root = "su -l " + cmbUser->get_active_text(); + str_variants_root = "su --preserve-environment --login " + cmbUser->get_active_text() + " --command \""; } else{ - str_variants_root = "su "; + str_variants_root = "su --preserve-environment --command \""; } - str_variants_root += " -c \" DISPLAY=$DISPLAY "; if (cbxExecuteEpriority->get_active()) { str_variants_root += "nice -n " + to_string(spinPriority->get_value_as_int()) + " "; } @@ -656,7 +658,7 @@ string MainWindow::start_cmd(string user_cmd) { else if (rbSudo->get_active()) { chbTerminal->set_active(true); if (user_exec_app==cmbUser->get_active_text()) { - str_variants_root = "sudo "; + str_variants_root = "sudo --preserve-env setsid "; } else{ str_variants_root = "sudo -u " + cmbUser->get_active_text() + " ";