summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp57
1 files changed, 1 insertions, 56 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 12a11268..94c3bc60 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -388,62 +388,7 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
void CConfigManager::handleRawExec(const std::string& command, const std::string& args) {
// Exec in the background dont wait for it.
-
- std::string toExec = args;
-
- if (g_pXWaylandManager->m_sWLRXWayland)
- toExec = std::string("WAYLAND_DISPLAY=") + std::string(g_pCompositor->m_szWLDisplaySocket) + " DISPLAY=" + std::string(g_pXWaylandManager->m_sWLRXWayland->display_name) + " " + toExec;
- else
- toExec = std::string("WAYLAND_DISPLAY=") + std::string(g_pCompositor->m_szWLDisplaySocket) + " " + toExec;
-
- Debug::log(LOG, "Config executing %s", toExec.c_str());
-
- int socket[2];
- if (pipe(socket) != 0) {
- Debug::log(LOG, "Unable to create pipe for fork");
- }
-
- pid_t child, grandchild;
- child = fork();
- if (child < 0) {
- close(socket[0]);
- close(socket[1]);
- Debug::log(LOG, "Fail to create the first fork");
- return;
- }
- if (child == 0) {
- // run in child
- grandchild = fork();
-
- sigset_t set;
- sigemptyset(&set);
- sigprocmask(SIG_SETMASK, &set, NULL);
-
- if (grandchild == 0) {
- // run in grandchild
- close(socket[0]);
- close(socket[1]);
- execl("/bin/sh", "/bin/sh", "-c", toExec.c_str(), nullptr);
- // exit grandchild
- _exit(0);
- }
- close(socket[0]);
- write(socket[1], &grandchild, sizeof(grandchild));
- close(socket[1]);
- // exit child
- _exit(0);
- }
- // run in parent
- close(socket[1]);
- read(socket[0], &grandchild, sizeof(grandchild));
- close(socket[0]);
- // clear child and leave child to init
- waitpid(child, NULL, 0);
- if (child < 0) {
- Debug::log(LOG, "Fail to create the second fork");
- return;
- }
- Debug::log(LOG, "Process created with pid %d", grandchild);
+ g_pKeybindManager->spawn(args);
}
void CConfigManager::handleMonitor(const std::string& command, const std::string& args) {