Xfce Wiki

Sub domains
 
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Kümmerlin <rgcjonas@gmail.com>2015-08-06 11:53:34 +0200
committerJonas Kümmerlin <rgcjonas@gmail.com>2015-08-06 12:09:44 +0200
commit9155cf5703c54f79e3bf76b6f5da2f4475ee7844 (patch)
treeb1ab0ebc5dc4c39bd2915de1687362bb4873478f
parent84a517e39bf0af440ccfedbbad713bf40f497a67 (diff)
downloadexo-9155cf5703c54f79e3bf76b6f5da2f4475ee7844.tar.gz
Get rid of gdk_spawn_on_screen()
-rw-r--r--exo-helper/exo-helper.c11
-rw-r--r--exo/exo-execute.c19
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;
}