diff -up ./gazebo/gazebo_main.cc.wayland ./gazebo/gazebo_main.cc --- ./gazebo/gazebo_main.cc.wayland 2019-03-28 20:58:31.000000000 -0400 +++ ./gazebo/gazebo_main.cc 2020-04-18 21:28:37.920694447 -0400 @@ -131,6 +131,25 @@ int main(int _argc, char **_argv) return 0; } + std::vector newEnv; + char **environment = environ; + + while(*environment != nullptr) + { + newEnv.push_back(*environment); + ++environment; + } + newEnv.push_back("QT_QPA_PLATFORM=xcb"); + + char** modifiedEnv = (char**)malloc(sizeof(char*) * newEnv.size() + 1); + modifiedEnv[newEnv.size()] = nullptr; + + for(size_t ii = 0; ii < newEnv.size(); ++ii) + { + modifiedEnv[ii] = &newEnv[ii][0]; + } + + struct sigaction sigact; sigact.sa_flags = 0; sigact.sa_handler = sig_handler; @@ -199,7 +218,7 @@ int main(int _argc, char **_argv) { // remove client from foreground process group setpgid(0, 0); - execvp(argvClient[0], argvClient); + execvpe(argvClient[0], argvClient, modifiedEnv); } } else