Index: src/extension/dbus/application-interface.cpp
===================================================================
--- src/extension/dbus/application-interface.cpp	(revision 22162)
+++ src/extension/dbus/application-interface.cpp	(working copy)
@@ -19,6 +19,13 @@
 #include <string.h>
 #include "dbus-init.h"
 
+#include "inkscape.h" // for inkscape_get_all_desktops
+#include "document.h" // for SPDocument
+#include <string> // for string
+#include <sstream> // for stringstream
+#include <list> // for list
+using namespace std;
+
 G_DEFINE_TYPE(ApplicationInterface, application_interface, G_TYPE_OBJECT)
 
 static void
@@ -62,7 +69,33 @@
 gchar** 
 application_interface_get_desktop_list (ApplicationInterface *object)
 {
-  return NULL;
+	gchar** result; //vector< string > result;
+
+	list< SPDesktop* > desktops;
+	list< SPDesktop* >::iterator iter;
+
+	inkscape_get_all_desktops(desktops);
+	//scanWatchDesktops();
+
+	gsize len;
+	len = desktops.size();
+	result = g_new (gchar*, len + 1);
+
+	gsize n=0;
+	for( iter = desktops.begin(); iter != desktops.end(); iter++ ) {
+		SPDesktop* desktop = *iter;
+
+		std::string name("/org/inkscape/desktop_");
+		std::stringstream out;
+		out << desktop->dkey;
+		name.append(out.str());
+
+		result[n] = g_strdup( name.c_str() );
+		n++;
+	}
+	result[n] = NULL;
+
+	return result;
 }
 
 gchar* 
