diff options
| author | Jonas Kümmerlin <rgcjonas@gmail.com> | 2015-08-06 11:53:34 +0200 |
|---|---|---|
| committer | Jonas Kümmerlin <rgcjonas@gmail.com> | 2015-08-06 12:09:44 +0200 |
| commit | 9155cf5703c54f79e3bf76b6f5da2f4475ee7844 (patch) | |
| tree | b1ab0ebc5dc4c39bd2915de1687362bb4873478f | |
| parent | 84a517e39bf0af440ccfedbbad713bf40f497a67 (diff) | |
| download | exo-9155cf5703c54f79e3bf76b6f5da2f4475ee7844.tar.gz | |
Get rid of gdk_spawn_on_screen()
| -rw-r--r-- | exo-helper/exo-helper.c | 11 | ||||
| -rw-r--r-- | exo/exo-execute.c | 19 |
2 files changed, 25 insertions, 5 deletions
diff --git a/exo-helper/exo-helper.c b/exo-helper/exo-helper.c index 37d8901..ce5ef9e 100644 --- a/exo-helper/exo-helper.c +++ b/exo-helper/exo-helper.c @@ -352,7 +352,9 @@ exo_helper_execute (ExoHelper *helper, GError *err = NULL; gchar **commands; gchar **argv; + gchar **envp; gchar *command; + gchar *display; guint n; gint status; gint result; @@ -398,11 +400,18 @@ exo_helper_execute (ExoHelper *helper, if (G_UNLIKELY (!succeed)) continue; + /* set the display variable */ + envp = g_get_environ (); + display = gdk_screen_make_display_name (screen); + envp = g_environ_setenv (envp, "DISPLAY", display, TRUE); + /* try to run the command */ - succeed = gdk_spawn_on_screen (screen, NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, &pid, &err); + succeed = g_spawn_async (NULL, argv, envp, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, &pid, &err); /* cleanup */ g_strfreev (argv); + g_strfreev (envp); + g_free (display); /* check if the execution was successful */ if (G_LIKELY (succeed)) diff --git a/exo/exo-execute.c b/exo/exo-execute.c index 31b199f..1fabf57 100644 --- a/exo/exo-execute.c +++ b/exo/exo-execute.c @@ -119,12 +119,15 @@ gboolean exo_execute_preferred_application_on_screen (const gchar *category, const gchar *parameter, const gchar *working_directory, - gchar **envp, + gchar **envp_in, GdkScreen *screen, GError **error) { - gchar *argv[5]; - gint argc = 0; + gchar *argv[5]; + gchar *display; + gchar **envp = g_strdupv (envp_in); + gint argc = 0; + gboolean success; g_return_val_if_fail (category != NULL, FALSE); g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); @@ -142,8 +145,16 @@ exo_execute_preferred_application_on_screen (const gchar *category, /* null terminate the argument vector */ argv[argc] = NULL; + /* set the display environment variable */ + display = gdk_screen_make_display_name (screen); + envp = g_environ_setenv (envp, "DISPLAY", display, TRUE); + /* launch the command */ - return gdk_spawn_on_screen (screen, working_directory, argv, envp, 0, NULL, NULL, NULL, error); + success = g_spawn_async (working_directory, argv, envp, 0, NULL, NULL, NULL, error); + + g_free (display); + g_strfreev (envp); + return success; } |