summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOlivier Fourdan <fourdan@xfce.org>2012-01-08 12:15:32 +0100
committerOlivier Fourdan <fourdan@xfce.org>2012-01-08 15:13:44 +0100
commitab54b1d7322adaac89b4218e52912d75dc395747 (patch)
tree74c80b0cc7a35a5a5266e234cd62d70815661699 /src
parent25d7979f014ea183bbdc2ca446d5c0e23e0c639b (diff)
downloadxfwm4-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.c2
-rw-r--r--src/screen.c13
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 ();