diff --git a/src/main.c b/src/main.c index 0b813ab..d8df256 100644 --- a/src/main.c +++ b/src/main.c @@ -216,8 +216,10 @@ int main(int argc, char **argv) { GdkDisplay *gdpy; + GdkScreen *screen; GtkWidget **desktops; - gint i, nscreens; + gint i, nscreens, screen_num; + gboolean only_current_screen = FALSE; Window xid; XfconfChannel *channel = NULL; const gchar *message = NULL; @@ -284,6 +286,8 @@ main(int argc, char **argv) message = WINDOWLIST_MESSAGE; else if(!strcmp("-quit", argument)) message = QUIT_MESSAGE; + else if(!strcmp("-only-current-screen", argument)) + only_current_screen = TRUE; else if(!strcmp("--sm-client-id", argv[1])) { /* do nothing */ } else { @@ -292,7 +296,9 @@ main(int argc, char **argv) g_printerr(_(" --reload Reload all settings, refresh image list\n")); g_printerr(_(" --menu Pop up the menu (at the current mouse position)\n")); g_printerr(_(" --windowlist Pop up the window list (at the current mouse position)\n")); - g_printerr(_(" --quit Cause xfdesktop to quit\n")); + g_printerr(_(" --quit Cause xfdesktop to quit\n\n")); + g_printerr(_(" --only-current-screen\n" + " Force xfdesktop to use only the current screen\n")); return 1; } @@ -339,12 +345,22 @@ main(int argc, char **argv) } else channel = xfconf_channel_new(XFDESKTOP_CHANNEL); - nscreens = gdk_display_get_n_screens(gdpy); + if (only_current_screen) + nscreens = 1; + else + nscreens = gdk_display_get_n_screens(gdpy); + desktops = g_new0(GtkWidget *, nscreens); for(i = 0; i < nscreens; i++) { - g_snprintf(buf, sizeof(buf), "/backdrop/screen%d/", i); - desktops[i] = xfce_desktop_new(gdk_display_get_screen(gdpy, i), - channel, buf); + if (only_current_screen) { + screen = gdk_display_get_default_screen(gdpy); + screen_num = gdk_screen_get_number(screen); + } else { + screen = gdk_display_get_screen(gdpy, i); + screen_num = i; + } + g_snprintf(buf, sizeof(buf), "/backdrop/screen%d/", screen_num); + desktops[i] = xfce_desktop_new(screen, channel, buf); gtk_widget_add_events(desktops[i], GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_SCROLL_MASK); g_signal_connect(G_OBJECT(desktops[i]), "scroll-event",