diff options
author | Olivier Fourdan <fourdan@xfce.org> | 2012-01-08 12:15:32 +0100 |
---|---|---|
committer | Olivier Fourdan <fourdan@xfce.org> | 2012-01-08 15:13:44 +0100 |
commit | ab54b1d7322adaac89b4218e52912d75dc395747 (patch) | |
tree | 74c80b0cc7a35a5a5266e234cd62d70815661699 /src | |
parent | 25d7979f014ea183bbdc2ca446d5c0e23e0c639b (diff) | |
download | xfwm4-ab54b1d7322adaac89b4218e52912d75dc395747.tar.gz |
Name the window manager when one is already running to help debugging sessions issues
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/screen.c | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c index 2a1e6a79a..f6ee50f3e 100644 --- a/src/main.c +++ b/src/main.c @@ -587,7 +587,7 @@ main (int argc, char **argv) switch (status) { case -1: - g_warning ("Another Window Manager is already running"); + g_warning ("Could not find a screen to manage, exiting"); exit (1); break; case -2: diff --git a/src/screen.c b/src/screen.c index 0aca55a9e..40485a0ff 100644 --- a/src/screen.c +++ b/src/screen.c @@ -87,12 +87,25 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm) g_snprintf (selection, sizeof (selection), "WM_S%d", screen_info->screen); wm_sn_atom = XInternAtom (display_info->dpy, selection, FALSE); + XSync (display_info->dpy, FALSE); current_wm = XGetSelectionOwner (display_info->dpy, wm_sn_atom); if (current_wm) { if (!replace_wm) { + const char *wm_name; + gchar *display_name; + + display_name = gdk_screen_make_display_name (screen_info->gscr); + wm_name = gdk_x11_screen_get_window_manager_name (screen_info->gscr); + g_message ("Another Window Manager (%s) is already running on screen %s", wm_name, display_name); g_message ("To replace the current window manager, try \"--replace\""); + g_free (display_name); + /* + * Note: gdk_x11_screen_get_window_manager_name() returns a + * const not to be freed, no leak here... + */ + return FALSE; } gdk_error_trap_push (); |