summaryrefslogtreecommitdiff
path: root/gnome-settings-daemon
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2013-11-20 15:35:14 +0100
committerCarlos Garnacho <carlosg@gnome.org>2013-11-20 20:30:59 +0100
commitb7fa014af970d0dfd836c2798cab52da5c9d61ea (patch)
tree7fd245a2916ccdc43d7c31336e48ec2d3c2ac400 /gnome-settings-daemon
parent535ab175832d5ec2171a748f017f4ab3f37970ad (diff)
downloadgnome-settings-daemon-b7fa014af970d0dfd836c2798cab52da5c9d61ea.tar.gz
main: Generate org.gnome.Shell proxy
This will be used across multiple plugins, so put it together with the screensaver and session proxies.
Diffstat (limited to 'gnome-settings-daemon')
-rw-r--r--gnome-settings-daemon/Makefile.am15
-rw-r--r--gnome-settings-daemon/gnome-settings-bus.c30
-rw-r--r--gnome-settings-daemon/gnome-settings-bus.h2
-rw-r--r--gnome-settings-daemon/org.gnome.Shell.xml36
4 files changed, 83 insertions, 0 deletions
diff --git a/gnome-settings-daemon/Makefile.am b/gnome-settings-daemon/Makefile.am
index f9e209e0..e5f12183 100644
--- a/gnome-settings-daemon/Makefile.am
+++ b/gnome-settings-daemon/Makefile.am
@@ -44,9 +44,23 @@ $(screen_saver_dbus_built_sources) : Makefile.am org.gnome.ScreenSaver.xml
"org.gtk.GDBus.C.Name" ScreenSaver \
$(srcdir)/org.gnome.ScreenSaver.xml
+shell_dbus_built_sources = gsd-shell-glue.c gsd-shell-glue.h
+
+BUILT_SOURCES += $(shell_dbus_built_sources)
+
+$(shell_dbus_built_sources) : Makefile.am org.gnome.Shell.xml
+ gdbus-codegen \
+ --interface-prefix org.gnome.Shell. \
+ --generate-c-code gsd-shell-glue \
+ --c-namespace Gsd \
+ --annotate "org.gnome.Shell" \
+ "org.gtk.GDBus.C.Name" Shell \
+ $(srcdir)/org.gnome.Shell.xml
+
libgsd_la_SOURCES = \
$(session_manager_dbus_built_sources) \
$(screen_saver_dbus_built_sources) \
+ $(shell_dbus_built_sources) \
gnome-settings-profile.c \
gnome-settings-profile.h \
gnome-settings-bus.c \
@@ -84,6 +98,7 @@ EXTRA_DIST = \
gnome-settings-daemon-localeexec.in \
org.gnome.SessionManager.xml \
org.gnome.ScreenSaver.xml \
+ org.gnome.Shell.xml \
$(NULL)
gnome-settings-daemon-localeexec: gnome-settings-daemon-localeexec.in
diff --git a/gnome-settings-daemon/gnome-settings-bus.c b/gnome-settings-daemon/gnome-settings-bus.c
index dbd5df3d..1eb5dfc5 100644
--- a/gnome-settings-daemon/gnome-settings-bus.c
+++ b/gnome-settings-daemon/gnome-settings-bus.c
@@ -35,6 +35,9 @@
#define GNOME_SCREENSAVER_DBUS_NAME "org.gnome.ScreenSaver"
#define GNOME_SCREENSAVER_DBUS_OBJECT "/org/gnome/ScreenSaver"
+#define GNOME_SHELL_DBUS_NAME "org.gnome.Shell"
+#define GNOME_SHELL_DBUS_OBJECT "/org/gnome/Shell"
+
GsdSessionManager *
gnome_settings_bus_get_session_proxy (void)
{
@@ -87,3 +90,30 @@ gnome_settings_bus_get_screen_saver_proxy (void)
return screen_saver_proxy;
}
+
+GsdShell *
+gnome_settings_bus_get_shell_proxy (void)
+{
+ static GsdShell *shell_proxy = NULL;
+ GError *error = NULL;
+
+ if (shell_proxy != NULL) {
+ g_object_ref (shell_proxy);
+ } else {
+ shell_proxy = gsd_shell_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
+ GNOME_SHELL_DBUS_NAME,
+ GNOME_SHELL_DBUS_OBJECT,
+ NULL,
+ &error);
+ if (error) {
+ g_warning ("Failed to connect to the shell: %s", error->message);
+ g_error_free (error);
+ } else {
+ g_object_add_weak_pointer (G_OBJECT (shell_proxy), (gpointer*)&shell_proxy);
+ }
+ }
+
+ return shell_proxy;
+}
diff --git a/gnome-settings-daemon/gnome-settings-bus.h b/gnome-settings-daemon/gnome-settings-bus.h
index f569f144..22711b63 100644
--- a/gnome-settings-daemon/gnome-settings-bus.h
+++ b/gnome-settings-daemon/gnome-settings-bus.h
@@ -25,11 +25,13 @@
#include <glib-object.h>
#include "gsd-session-manager-glue.h"
#include "gsd-screen-saver-glue.h"
+#include "gsd-shell-glue.h"
G_BEGIN_DECLS
GsdSessionManager *gnome_settings_bus_get_session_proxy (void);
GsdScreenSaver *gnome_settings_bus_get_screen_saver_proxy (void);
+GsdShell *gnome_settings_bus_get_shell_proxy (void);
G_END_DECLS
diff --git a/gnome-settings-daemon/org.gnome.Shell.xml b/gnome-settings-daemon/org.gnome.Shell.xml
new file mode 100644
index 00000000..54bdf421
--- /dev/null
+++ b/gnome-settings-daemon/org.gnome.Shell.xml
@@ -0,0 +1,36 @@
+<!DOCTYPE node PUBLIC
+ "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+
+<!--
+ Copyright (C) 2013 Red Hat, Inc.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General
+ Public License along with this library; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307, USA.
+-->
+
+<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
+ <!--
+ org.gnome.Shell:
+
+ An interface used to request shell features.
+ -->
+ <interface name="org.gnome.Shell">
+ <method name="FocusSearch"/>
+ <method name="ShowOSD">
+ <arg type="a{sv}" direction="in" name="params"/>
+ </method>
+ </interface>
+</node>