[gnome-shell/wip/fmuellner/iface-resources: 4/4] dbus: Move all interface descriptions into the resource
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/fmuellner/iface-resources: 4/4] dbus: Move all interface descriptions into the resource
- Date: Wed, 12 Sep 2018 11:54:39 +0000 (UTC)
commit 1cef31405038a63489846a4daea2fd111b0d372c
Author: Florian Müllner <fmuellner gnome org>
Date: Thu Sep 6 02:55:20 2018 +0200
dbus: Move all interface descriptions into the resource
https://gitlab.gnome.org/GNOME/gnome-shell/issues/537
data/dbus-interfaces/net.hadess.SensorProxy.xml | 5 +
.../net.hadess.SwitcherooControl.xml | 5 +
.../org.Gtk.MountOperationHandler.xml | 32 ++++++
.../org.freedesktop.Application.xml | 12 +++
data/dbus-interfaces/org.freedesktop.DBus.xml | 16 +++
.../org.freedesktop.GeoClue2.Agent.xml | 11 +++
.../org.freedesktop.GeoClue2.Manager.xml | 9 ++
.../org.freedesktop.ModemManager.Modem.Cdma.xml | 13 +++
....freedesktop.ModemManager.Modem.Gsm.Network.xml | 19 ++++
...g.freedesktop.ModemManager1.Modem.Modem3gpp.xml | 6 ++
...g.freedesktop.ModemManager1.Modem.ModemCdma.xml | 5 +
.../org.freedesktop.ModemManager1.Modem.xml | 5 +
.../org.freedesktop.Notifications.xml | 35 +++++++
.../org.freedesktop.PackageKit.Offline.xml | 13 +++
.../org.freedesktop.UPower.Device.xml | 11 +++
data/dbus-interfaces/org.freedesktop.UPower.xml | 5 +
.../org.freedesktop.bolt1.Device.xml | 18 ++++
.../org.freedesktop.bolt1.Manager.xml | 15 +++
.../org.freedesktop.impl.portal.Access.xml | 15 +++
...org.freedesktop.impl.portal.PermissionStore.xml | 24 +++++
.../org.freedesktop.impl.portal.Request.xml | 5 +
.../org.freedesktop.login1.Manager.xml | 27 +++++
.../org.freedesktop.login1.Session.xml | 15 +++
.../org.freedesktop.login1.User.xml | 6 ++
.../org.freedesktop.realmd.Provider.xml | 13 +++
.../org.freedesktop.realmd.Realm.xml | 20 ++++
.../org.freedesktop.realmd.Service.xml | 15 +++
.../org.gnome.Magnifier.ZoomRegion.xml | 26 +++++
data/dbus-interfaces/org.gnome.Magnifier.xml | 54 ++++++++++
data/dbus-interfaces/org.gnome.ScreenSaver.xml | 18 ++++
.../org.gnome.SessionManager.EndSessionDialog.xml | 16 +++
.../org.gnome.SessionManager.Inhibitor.xml | 10 ++
.../org.gnome.SessionManager.Presence.xml | 11 +++
data/dbus-interfaces/org.gnome.SessionManager.xml | 23 +++++
.../org.gnome.SettingsDaemon.Color.xml | 6 ++
.../org.gnome.SettingsDaemon.Power.Screen.xml | 5 +
.../org.gnome.SettingsDaemon.Rfkill.xml | 10 ++
.../org.gnome.SettingsDaemon.Wacom.xml | 13 +++
.../org.gnome.Shell.AudioDeviceSelection.xml | 12 +++
.../org.gnome.Shell.HotplugSniffer.xml | 8 ++
.../dbus-interfaces/org.gnome.Shell.PerfHelper.xml | 13 +++
.../org.gnome.Shell.PortalHelper.xml | 19 ++++
.../org.gnome.Shell.Wacom.PadOsd.xml | 8 ++
data/dbus-interfaces/org.gnome.Shell.xml | 44 +++++++++
data/dbus-interfaces/org.gtk.Notifications.xml | 13 +++
.../org.mpris.MediaPlayer2.Player.xml | 12 +++
data/dbus-interfaces/org.mpris.MediaPlayer2.xml | 7 ++
data/gnome-shell-dbus-interfaces.gresource.xml | 50 ++++++++++
js/extensionPrefs/main.js | 13 +--
js/gdm/realmd.js | 56 +----------
js/misc/gnomeSession.js | 54 +---------
js/misc/loginManager.js | 53 +---------
js/misc/modemManager.js | 62 ++----------
js/misc/permissionStore.js | 27 +----
js/misc/systemActions.js | 9 +-
js/portal-resources.gresource.xml | 1 +
js/portalHelper/main.js | 22 +----
js/ui/accessDialog.js | 27 +----
js/ui/appDisplay.js | 10 +-
js/ui/audioDeviceSelection.js | 16 +--
js/ui/components/autorunManager.js | 13 +--
js/ui/endSessionDialog.js | 56 ++---------
js/ui/magnifierDBus.js | 86 +---------------
js/ui/mpris.js | 39 +-------
js/ui/notificationDaemon.js | 79 ++-------------
js/ui/padOsd.js | 12 +--
js/ui/screencast.js | 27 +----
js/ui/screenshot.js | 48 +--------
js/ui/scripting.js | 18 +---
js/ui/shellDBus.js | 109 +--------------------
js/ui/shellMountOperation.js | 36 +------
js/ui/status/bluetooth.js | 12 +--
js/ui/status/brightness.js | 10 +-
js/ui/status/location.js | 27 +----
js/ui/status/network.js | 23 +----
js/ui/status/nightLight.js | 11 +--
js/ui/status/power.js | 16 +--
js/ui/status/rfkill.js | 12 +--
js/ui/status/thunderbolt.js | 40 +-------
js/ui/windowManager.js | 18 +---
80 files changed, 867 insertions(+), 928 deletions(-)
---
diff --git a/data/dbus-interfaces/net.hadess.SensorProxy.xml b/data/dbus-interfaces/net.hadess.SensorProxy.xml
new file mode 100644
index 000000000..2bf8ffa4d
--- /dev/null
+++ b/data/dbus-interfaces/net.hadess.SensorProxy.xml
@@ -0,0 +1,5 @@
+<node>
+ <interface name="net.hadess.SensorProxy">
+ <property name="HasAccelerometer" type="b" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/net.hadess.SwitcherooControl.xml
b/data/dbus-interfaces/net.hadess.SwitcherooControl.xml
new file mode 100644
index 000000000..792af08f3
--- /dev/null
+++ b/data/dbus-interfaces/net.hadess.SwitcherooControl.xml
@@ -0,0 +1,5 @@
+<node>
+ <interface name="net.hadess.SwitcherooControl">
+ <property name="HasDualGpu" type="b" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.Gtk.MountOperationHandler.xml
b/data/dbus-interfaces/org.Gtk.MountOperationHandler.xml
new file mode 100644
index 000000000..8b03a2eea
--- /dev/null
+++ b/data/dbus-interfaces/org.Gtk.MountOperationHandler.xml
@@ -0,0 +1,32 @@
+<node>
+ <interface name="org.Gtk.MountOperationHandler">
+ <method name="AskPassword">
+ <arg type="s" direction="in" name="object_id"/>
+ <arg type="s" direction="in" name="message"/>
+ <arg type="s" direction="in" name="icon_name"/>
+ <arg type="s" direction="in" name="default_user"/>
+ <arg type="s" direction="in" name="default_domain"/>
+ <arg type="u" direction="in" name="flags"/>
+ <arg type="u" direction="out" name="response"/>
+ <arg type="a{sv}" direction="out" name="response_details"/>
+ </method>
+ <method name="AskQuestion">
+ <arg type="s" direction="in" name="object_id"/>
+ <arg type="s" direction="in" name="message"/>
+ <arg type="s" direction="in" name="icon_name"/>
+ <arg type="as" direction="in" name="choices"/>
+ <arg type="u" direction="out" name="response"/>
+ <arg type="a{sv}" direction="out" name="response_details"/>
+ </method>
+ <method name="ShowProcesses">
+ <arg type="s" direction="in" name="object_id"/>
+ <arg type="s" direction="in" name="message"/>
+ <arg type="s" direction="in" name="icon_name"/>
+ <arg type="ai" direction="in" name="application_pids"/>
+ <arg type="as" direction="in" name="choices"/>
+ <arg type="u" direction="out" name="response"/>
+ <arg type="a{sv}" direction="out" name="response_details"/>
+ </method>
+ <method name="Close"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.Application.xml
b/data/dbus-interfaces/org.freedesktop.Application.xml
new file mode 100644
index 000000000..55be7d79f
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.Application.xml
@@ -0,0 +1,12 @@
+<node>
+ <interface name="org.freedesktop.Application">
+ <method name="ActivateAction">
+ <arg type="s" direction="in"/>
+ <arg type="av" direction="in"/>
+ <arg type="a{sv}" direction="in"/>
+ </method>
+ <method name="Activate">
+ <arg type="a{sv}" direction="in"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.DBus.xml b/data/dbus-interfaces/org.freedesktop.DBus.xml
new file mode 100644
index 000000000..18ff2aa82
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.DBus.xml
@@ -0,0 +1,16 @@
+<node>
+ <interface name="org.freedesktop.DBus">
+ <method name="ListNames">
+ <arg type="as" direction="out" name="names"/>
+ </method>
+ <method name="GetConnectionUnixProcessID">
+ <arg type="s" direction="in"/>
+ <arg type="u" direction="out"/>
+ </method>
+ <signal name="NameOwnerChanged">
+ <arg type="s" direction="out" name="name"/>
+ <arg type="s" direction="out" name="oldOwner"/>
+ <arg type="s" direction="out" name="newOwner"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.GeoClue2.Agent.xml
b/data/dbus-interfaces/org.freedesktop.GeoClue2.Agent.xml
new file mode 100644
index 000000000..27736016c
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.GeoClue2.Agent.xml
@@ -0,0 +1,11 @@
+<node>
+ <interface name="org.freedesktop.GeoClue2.Agent">
+ <property name="MaxAccuracyLevel" type="u" access="read"/>
+ <method name="AuthorizeApp">
+ <arg name="desktop_id" type="s" direction="in"/>
+ <arg name="req_accuracy_level" type="u" direction="in"/>
+ <arg name="authorized" type="b" direction="out"/>
+ <arg name="allowed_accuracy_level" type="u" direction="out"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.GeoClue2.Manager.xml
b/data/dbus-interfaces/org.freedesktop.GeoClue2.Manager.xml
new file mode 100644
index 000000000..28db3c637
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.GeoClue2.Manager.xml
@@ -0,0 +1,9 @@
+<node>
+ <interface name="org.freedesktop.GeoClue2.Manager">
+ <property name="InUse" type="b" access="read"/>
+ <property name="AvailableAccuracyLevel" type="u" access="read"/>
+ <method name="AddAgent">
+ <arg name="id" type="s" direction="in"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Cdma.xml
b/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Cdma.xml
new file mode 100644
index 000000000..12a85e065
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Cdma.xml
@@ -0,0 +1,13 @@
+<node>
+ <interface name="org.freedesktop.ModemManager.Modem.Cdma">
+ <method name="GetSignalQuality">
+ <arg type="u" direction="out"/>
+ </method>
+ <method name="GetServingSystem">
+ <arg type="(usu)" direction="out"/>
+ </method>
+ <signal name="SignalQuality">
+ <arg type="u" direction="out"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Gsm.Network.xml
b/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Gsm.Network.xml
new file mode 100644
index 000000000..7d8c25a6c
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Gsm.Network.xml
@@ -0,0 +1,19 @@
+<node>
+ <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
+ <method name="GetRegistrationInfo">
+ <arg type="(uss)" direction="out"/>
+ </method>
+ <method name="GetSignalQuality">
+ <arg type="u" direction="out"/>
+ </method>
+ <property name="AccessTechnology" type="u" access="read"/>
+ <signal name="SignalQuality">
+ <arg type="u" direction="out"/>
+ </signal>
+ <signal name="RegistrationInfo">
+ <arg type="u" direction="out"/>
+ <arg type="s" direction="out"/>
+ <arg type="s" direction="out"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml
b/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml
new file mode 100644
index 000000000..41e6601a1
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml
@@ -0,0 +1,6 @@
+<node>
+ <interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp">
+ <property name="OperatorCode" type="s" access="read"/>
+ <property name="OperatorName" type="s" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.ModemCdma.xml
b/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.ModemCdma.xml
new file mode 100644
index 000000000..d02925275
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.ModemCdma.xml
@@ -0,0 +1,5 @@
+<node>
+ <interface name="org.freedesktop.ModemManager1.Modem.ModemCdma">
+ <property name="Sid" type="u" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.xml
b/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.xml
new file mode 100644
index 000000000..204426b44
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.xml
@@ -0,0 +1,5 @@
+<node>
+ <interface name="org.freedesktop.ModemManager1.Modem">
+ <property name="SignalQuality" type="(ub)" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.Notifications.xml
b/data/dbus-interfaces/org.freedesktop.Notifications.xml
new file mode 100644
index 000000000..0ed865743
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.Notifications.xml
@@ -0,0 +1,35 @@
+<node>
+ <interface name="org.freedesktop.Notifications">
+ <method name="Notify">
+ <arg type="s" direction="in"/>
+ <arg type="u" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="as" direction="in"/>
+ <arg type="a{sv}" direction="in"/>
+ <arg type="i" direction="in"/>
+ <arg type="u" direction="out"/>
+ </method>
+ <method name="CloseNotification">
+ <arg type="u" direction="in"/>
+ </method>
+ <method name="GetCapabilities">
+ <arg type="as" direction="out"/>
+ </method>
+ <method name="GetServerInformation">
+ <arg type="s" direction="out"/>
+ <arg type="s" direction="out"/>
+ <arg type="s" direction="out"/>
+ <arg type="s" direction="out"/>
+ </method>
+ <signal name="NotificationClosed">
+ <arg type="u"/>
+ <arg type="u"/>
+ </signal>
+ <signal name="ActionInvoked">
+ <arg type="u"/>
+ <arg type="s"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.PackageKit.Offline.xml
b/data/dbus-interfaces/org.freedesktop.PackageKit.Offline.xml
new file mode 100644
index 000000000..ff6116621
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.PackageKit.Offline.xml
@@ -0,0 +1,13 @@
+<node>
+ <interface name="org.freedesktop.PackageKit.Offline">
+ <property name="UpdatePrepared" type="b" access="read"/>
+ <property name="UpdateTriggered" type="b" access="read"/>
+ <property name="UpgradePrepared" type="b" access="read"/>
+ <property name="UpgradeTriggered" type="b" access="read"/>
+ <property name="PreparedUpgrade" type="a{sv}" access="read"/>
+ <method name="Trigger">
+ <arg type="s" name="action" direction="in"/>
+ </method>
+ <method name="Cancel"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.UPower.Device.xml
b/data/dbus-interfaces/org.freedesktop.UPower.Device.xml
new file mode 100644
index 000000000..488228505
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.UPower.Device.xml
@@ -0,0 +1,11 @@
+<node>
+ <interface name="org.freedesktop.UPower.Device">
+ <property name="Type" type="u" access="read"/>
+ <property name="State" type="u" access="read"/>
+ <property name="Percentage" type="d" access="read"/>
+ <property name="TimeToEmpty" type="x" access="read"/>
+ <property name="TimeToFull" type="x" access="read"/>
+ <property name="IsPresent" type="b" access="read"/>
+ <property name="IconName" type="s" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.UPower.xml b/data/dbus-interfaces/org.freedesktop.UPower.xml
new file mode 100644
index 000000000..a0fba2017
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.UPower.xml
@@ -0,0 +1,5 @@
+<node>
+ <interface name="org.freedesktop.UPower">
+ <property name="OnBattery" type="b" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.bolt1.Device.xml
b/data/dbus-interfaces/org.freedesktop.bolt1.Device.xml
new file mode 100644
index 000000000..44b40dccf
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.bolt1.Device.xml
@@ -0,0 +1,18 @@
+<node>
+ <interface name="org.freedesktop.bolt1.Device">
+ <property name="Uid" type="s" access="read"></property>
+ <property name="Name" type="s" access="read"></property>
+ <property name="Vendor" type="s" access="read"></property>
+ <property name="Type" type="s" access="read"></property>
+ <property name="Status" type="s" access="read"></property>
+ <property name="Parent" type="s" access="read"></property>
+ <property name="SysfsPath" type="s" access="read"></property>
+ <property name="Stored" type="b" access="read"></property>
+ <property name="Policy" type="s" access="read"></property>
+ <property name="Key" type="s" access="read"></property>
+ <property name="Label" type="s" access="read"></property>
+ <property name="ConnectTime" type="t" access="read"></property>
+ <property name="AuthorizeTime" type="t" access="read"></property>
+ <property name="StoreTime" type="t" access="read"></property>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.bolt1.Manager.xml
b/data/dbus-interfaces/org.freedesktop.bolt1.Manager.xml
new file mode 100644
index 000000000..c98a94fc5
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.bolt1.Manager.xml
@@ -0,0 +1,15 @@
+<node>
+ <interface name="org.freedesktop.bolt1.Manager">
+ <property name="Probing" type="b" access="read"></property>
+ <property name="AuthMode" type="s" access="readwrite"></property>
+ <method name="EnrollDevice">
+ <arg type="s" name="uid" direction="in"/>
+ <arg type="s" name="policy" direction="in"/>
+ <arg type="s" name="flags" direction="in"/>
+ <arg name="device" direction="out" type="o"/>
+ </method>
+ <signal name="DeviceAdded">
+ <arg name="device" type="o"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.impl.portal.Access.xml
b/data/dbus-interfaces/org.freedesktop.impl.portal.Access.xml
new file mode 100644
index 000000000..802a2c15d
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.impl.portal.Access.xml
@@ -0,0 +1,15 @@
+<node>
+ <interface name="org.freedesktop.impl.portal.Access">
+ <method name="AccessDialog">
+ <arg type="o" name="handle" direction="in"/>
+ <arg type="s" name="app_id" direction="in"/>
+ <arg type="s" name="parent_window" direction="in"/>
+ <arg type="s" name="title" direction="in"/>
+ <arg type="s" name="subtitle" direction="in"/>
+ <arg type="s" name="body" direction="in"/>
+ <arg type="a{sv}" name="options" direction="in"/>
+ <arg type="u" name="response" direction="out"/>
+ <arg type="a{sv}" name="results" direction="out"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml
b/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml
new file mode 100644
index 000000000..75fbc468a
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml
@@ -0,0 +1,24 @@
+<node>
+ <interface name="org.freedesktop.impl.portal.PermissionStore">
+ <method name="Lookup">
+ <arg name="table" type="s" direction="in"/>
+ <arg name="id" type="s" direction="in"/>
+ <arg name="permissions" type="a{sas}" direction="out"/>
+ <arg name="data" type="v" direction="out"/>
+ </method>
+ <method name="Set">
+ <arg name="table" type="s" direction="in"/>
+ <arg name="create" type="b" direction="in"/>
+ <arg name="id" type="s" direction="in"/>
+ <arg name="app_permissions" type="a{sas}" direction="in"/>
+ <arg name="data" type="v" direction="in"/>
+ </method>
+ <signal name="Changed">
+ <arg name="table" type="s" direction="out"/>
+ <arg name="id" type="s" direction="out"/>
+ <arg name="deleted" type="b" direction="out"/>
+ <arg name="data" type="v" direction="out"/>
+ <arg name="permissions" type="a{sas}" direction="out"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.impl.portal.Request.xml
b/data/dbus-interfaces/org.freedesktop.impl.portal.Request.xml
new file mode 100644
index 000000000..a9d03ebe5
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.impl.portal.Request.xml
@@ -0,0 +1,5 @@
+<node>
+ <interface name="org.freedesktop.impl.portal.Request">
+ <method name="Close"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.login1.Manager.xml
b/data/dbus-interfaces/org.freedesktop.login1.Manager.xml
new file mode 100644
index 000000000..647afc6cf
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.login1.Manager.xml
@@ -0,0 +1,27 @@
+<node>
+ <interface name="org.freedesktop.login1.Manager">
+ <method name="Suspend">
+ <arg type="b" direction="in"/>
+ </method>
+ <method name="CanSuspend">
+ <arg type="s" direction="out"/>
+ </method>
+ <method name="Inhibit">
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="h" direction="out"/>
+ </method>
+ <method name="GetSession">
+ <arg type="s" direction="in"/>
+ <arg type="o" direction="out"/>
+ </method>
+ <method name="ListSessions">
+ <arg name="sessions" type="a(susso)" direction="out"/>
+ </method>
+ <signal name="PrepareForSleep">
+ <arg type="b" direction="out"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.login1.Session.xml
b/data/dbus-interfaces/org.freedesktop.login1.Session.xml
new file mode 100644
index 000000000..6fab81794
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.login1.Session.xml
@@ -0,0 +1,15 @@
+<node>
+ <interface name="org.freedesktop.login1.Session">
+ <signal name="Lock"/>
+ <signal name="Unlock"/>
+ <property name="Active" type="b" access="read"/>
+ <property name="Class" type="s" access="read"/>
+ <property name="Id" type="s" access="read"/>
+ <property name="Remote" type="b" access="read"/>
+ <property name="Type" type="s" access="read"/>
+ <property name="State" type="s" access="read"/>
+ <method name="SetLockedHint">
+ <arg type="b" direction="in"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.login1.User.xml
b/data/dbus-interfaces/org.freedesktop.login1.User.xml
new file mode 100644
index 000000000..d6f10b072
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.login1.User.xml
@@ -0,0 +1,6 @@
+<node>
+ <interface name="org.freedesktop.login1.User">
+ <property name="Display" type="(so)" access="read"/>
+ <property name="Sessions" type="a(so)" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.realmd.Provider.xml
b/data/dbus-interfaces/org.freedesktop.realmd.Provider.xml
new file mode 100644
index 000000000..2fdb045af
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.realmd.Provider.xml
@@ -0,0 +1,13 @@
+<node>
+ <interface name="org.freedesktop.realmd.Provider">
+ <property name="Name" type="s" access="read"/>
+ <property name="Version" type="s" access="read"/>
+ <property name="Realms" type="ao" access="read"/>
+ <method name="Discover">
+ <arg name="string" type="s" direction="in"/>
+ <arg name="options" type="a{sv}" direction="in"/>
+ <arg name="relevance" type="i" direction="out"/>
+ <arg name="realm" type="ao" direction="out"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.realmd.Realm.xml
b/data/dbus-interfaces/org.freedesktop.realmd.Realm.xml
new file mode 100644
index 000000000..351066d2e
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.realmd.Realm.xml
@@ -0,0 +1,20 @@
+<node>
+ <interface name="org.freedesktop.realmd.Realm">
+ <property name="Name" type="s" access="read"/>
+ <property name="Configured" type="s" access="read"/>
+ <property name="Details" type="a(ss)" access="read"/>
+ <property name="LoginFormats" type="as" access="read"/>
+ <property name="LoginPolicy" type="s" access="read"/>
+ <property name="PermittedLogins" type="as" access="read"/>
+ <property name="SupportedInterfaces" type="as" access="read"/>
+ <method name="ChangeLoginPolicy">
+ <arg name="login_policy" type="s" direction="in"/>
+ <arg name="permitted_add" type="as" direction="in"/>
+ <arg name="permitted_remove" type="as" direction="in"/>
+ <arg name="options" type="a{sv}" direction="in"/>
+ </method>
+ <method name="Deconfigure">
+ <arg name="options" type="a{sv}" direction="in"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.freedesktop.realmd.Service.xml
b/data/dbus-interfaces/org.freedesktop.realmd.Service.xml
new file mode 100644
index 000000000..4ffb7e742
--- /dev/null
+++ b/data/dbus-interfaces/org.freedesktop.realmd.Service.xml
@@ -0,0 +1,15 @@
+<node>
+ <interface name="org.freedesktop.realmd.Service">
+ <method name="Cancel">
+ <arg name="operation" type="s" direction="in"/>
+ </method>
+ <method name="Release"/>
+ <method name="SetLocale">
+ <arg name="locale" type="s" direction="in"/>
+ </method>
+ <signal name="Diagnostics">
+ <arg name="data" type="s"/>
+ <arg name="operation" type="s"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Magnifier.ZoomRegion.xml
b/data/dbus-interfaces/org.gnome.Magnifier.ZoomRegion.xml
new file mode 100644
index 000000000..5db2734d0
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Magnifier.ZoomRegion.xml
@@ -0,0 +1,26 @@
+<node>
+ <interface name="org.gnome.Magnifier.ZoomRegion">
+ <method name="setMagFactor">
+ <arg type="d" direction="in"/>
+ <arg type="d" direction="in"/>
+ </method>
+ <method name="getMagFactor">
+ <arg type="d" direction="out"/>
+ <arg type="d" direction="out"/>
+ </method>
+ <method name="setRoi">
+ <arg type="ai" direction="in"/>
+ </method>
+ <method name="getRoi">
+ <arg type="ai" direction="out"/>
+ </method>
+ <method name="shiftContentsTo">
+ <arg type="i" direction="in"/>
+ <arg type="i" direction="in"/>
+ <arg type="b" direction="out"/>
+ </method>
+ <method name="moveResize">
+ <arg type="ai" direction="in"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Magnifier.xml b/data/dbus-interfaces/org.gnome.Magnifier.xml
new file mode 100644
index 000000000..2ade4dd34
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Magnifier.xml
@@ -0,0 +1,54 @@
+<node>
+ <interface name="org.gnome.Magnifier">
+ <method name="setActive">
+ <arg type="b" direction="in"/>
+ </method>
+ <method name="isActive">
+ <arg type="b" direction="out"/>
+ </method>
+ <method name="showCursor"/>
+ <method name="hideCursor"/>
+ <method name="createZoomRegion">
+ <arg type="d" direction="in"/>
+ <arg type="d" direction="in"/>
+ <arg type="ai" direction="in"/>
+ <arg type="ai" direction="in"/>
+ <arg type="o" direction="out"/>
+ </method>
+ <method name="addZoomRegion">
+ <arg type="o" direction="in"/>
+ <arg type="b" direction="out"/>
+ </method>
+ <method name="getZoomRegions">
+ <arg type="ao" direction="out"/>
+ </method>
+ <method name="clearAllZoomRegions"/>
+ <method name="fullScreenCapable">
+ <arg type="b" direction="out"/>
+ </method>
+ <method name="setCrosswireSize">
+ <arg type="i" direction="in"/>
+ </method>
+ <method name="getCrosswireSize">
+ <arg type="i" direction="out"/>
+ </method>
+ <method name="setCrosswireLength">
+ <arg type="i" direction="in"/>
+ </method>
+ <method name="getCrosswireLength">
+ <arg type="i" direction="out"/>
+ </method>
+ <method name="setCrosswireClip">
+ <arg type="b" direction="in"/>
+ </method>
+ <method name="getCrosswireClip">
+ <arg type="b" direction="out"/>
+ </method>
+ <method name="setCrosswireColor">
+ <arg type="u" direction="in"/>
+ </method>
+ <method name="getCrosswireColor">
+ <arg type="u" direction="out"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.ScreenSaver.xml b/data/dbus-interfaces/org.gnome.ScreenSaver.xml
new file mode 100644
index 000000000..5a2ca98b1
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.ScreenSaver.xml
@@ -0,0 +1,18 @@
+<node>
+ <interface name="org.gnome.ScreenSaver">
+ <method name="Lock"/>
+ <method name="GetActive">
+ <arg type="b" direction="out" name="active"/>
+ </method>
+ <method name="SetActive">
+ <arg type="b" direction="in" name="value"/>
+ </method>
+ <method name="GetActiveTime">
+ <arg type="u" direction="out" name="value"/>
+ </method>
+ <signal name="ActiveChanged">
+ <arg name="new_value" type="b"/>
+ </signal>
+ <signal name="WakeUpScreen"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SessionManager.EndSessionDialog.xml
b/data/dbus-interfaces/org.gnome.SessionManager.EndSessionDialog.xml
new file mode 100644
index 000000000..3a57aa4a3
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SessionManager.EndSessionDialog.xml
@@ -0,0 +1,16 @@
+<node>
+ <interface name="org.gnome.SessionManager.EndSessionDialog">
+ <method name="Open">
+ <arg type="u" direction="in"/>
+ <arg type="u" direction="in"/>
+ <arg type="u" direction="in"/>
+ <arg type="ao" direction="in"/>
+ </method>
+ <method name="Close"/>
+ <signal name="ConfirmedLogout"/>
+ <signal name="ConfirmedReboot"/>
+ <signal name="ConfirmedShutdown"/>
+ <signal name="Canceled"/>
+ <signal name="Closed"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SessionManager.Inhibitor.xml
b/data/dbus-interfaces/org.gnome.SessionManager.Inhibitor.xml
new file mode 100644
index 000000000..c745f8191
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SessionManager.Inhibitor.xml
@@ -0,0 +1,10 @@
+<node>
+ <interface name="org.gnome.SessionManager.Inhibitor">
+ <method name="GetAppId">
+ <arg type="s" direction="out"/>
+ </method>
+ <method name="GetReason">
+ <arg type="s" direction="out"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SessionManager.Presence.xml
b/data/dbus-interfaces/org.gnome.SessionManager.Presence.xml
new file mode 100644
index 000000000..78bc6041e
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SessionManager.Presence.xml
@@ -0,0 +1,11 @@
+<node>
+ <interface name="org.gnome.SessionManager.Presence">
+ <method name="SetStatus">
+ <arg type="u" direction="in"/>
+ </method>
+ <property name="status" type="u" access="readwrite"/>
+ <signal name="StatusChanged">
+ <arg type="u" direction="out"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SessionManager.xml
b/data/dbus-interfaces/org.gnome.SessionManager.xml
new file mode 100644
index 000000000..c81c90f08
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SessionManager.xml
@@ -0,0 +1,23 @@
+<node>
+ <interface name="org.gnome.SessionManager">
+ <method name="Logout">
+ <arg type="u" direction="in"/>
+ </method>
+ <method name="Shutdown"/>
+ <method name="Reboot"/>
+ <method name="CanShutdown">
+ <arg type="b" direction="out"/>
+ </method>
+ <method name="IsInhibited">
+ <arg type="u" direction="in"/>
+ <arg type="b" direction="out"/>
+ </method>
+ <property name="SessionIsActive" type="b" access="read"/>
+ <signal name="InhibitorAdded">
+ <arg type="o" direction="out"/>
+ </signal>
+ <signal name="InhibitorRemoved">
+ <arg type="o" direction="out"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SettingsDaemon.Color.xml
b/data/dbus-interfaces/org.gnome.SettingsDaemon.Color.xml
new file mode 100644
index 000000000..1528f9032
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SettingsDaemon.Color.xml
@@ -0,0 +1,6 @@
+<node>
+ <interface name="org.gnome.SettingsDaemon.Color">
+ <property name="DisabledUntilTomorrow" type="b" access="readwrite"/>
+ <property name="NightLightActive" type="b" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SettingsDaemon.Power.Screen.xml
b/data/dbus-interfaces/org.gnome.SettingsDaemon.Power.Screen.xml
new file mode 100644
index 000000000..05e4b8dc0
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SettingsDaemon.Power.Screen.xml
@@ -0,0 +1,5 @@
+<node>
+ <interface name="org.gnome.SettingsDaemon.Power.Screen">
+ <property name="Brightness" type="i" access="readwrite"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SettingsDaemon.Rfkill.xml
b/data/dbus-interfaces/org.gnome.SettingsDaemon.Rfkill.xml
new file mode 100644
index 000000000..628b17ff9
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SettingsDaemon.Rfkill.xml
@@ -0,0 +1,10 @@
+<node>
+ <interface name="org.gnome.SettingsDaemon.Rfkill">
+ <property name="AirplaneMode" type="b" access="readwrite"/>
+ <property name="HardwareAirplaneMode" type="b" access="read"/>
+ <property name="BluetoothAirplaneMode" type="b" access="readwrite"/>
+ <property name="BluetoothHasAirplaneMode" type="b" access="read"/>
+ <property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite"/>
+ <property name="ShouldShowAirplaneMode" type="b" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.SettingsDaemon.Wacom.xml
b/data/dbus-interfaces/org.gnome.SettingsDaemon.Wacom.xml
new file mode 100644
index 000000000..13702141c
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.SettingsDaemon.Wacom.xml
@@ -0,0 +1,13 @@
+<node>
+<interface name="org.gnome.SettingsDaemon.Wacom">
+ <method name="SetGroupModeLED">
+ <arg name="device_path" direction="in" type="s"/>
+ <arg name="group" direction="in" type="u"/>
+ <arg name="mode" direction="in" type="u"/>
+ </method>
+ <method name="SetOLEDLabels">
+ <arg name="device_path" direction="in" type="s"/>
+ <arg name="labels" direction="in" type="as"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Shell.AudioDeviceSelection.xml
b/data/dbus-interfaces/org.gnome.Shell.AudioDeviceSelection.xml
new file mode 100644
index 000000000..28cc6da39
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Shell.AudioDeviceSelection.xml
@@ -0,0 +1,12 @@
+<node>
+ <interface name="org.gnome.Shell.AudioDeviceSelection">
+ <method name="Open">
+ <arg name="devices" direction="in" type="as"/>
+ </method>
+ <method name="Close">
+ </method>
+ <signal name="DeviceSelected">
+ <arg name="device" type="s"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Shell.HotplugSniffer.xml
b/data/dbus-interfaces/org.gnome.Shell.HotplugSniffer.xml
new file mode 100644
index 000000000..b4373cc79
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Shell.HotplugSniffer.xml
@@ -0,0 +1,8 @@
+<node>
+ <interface name="org.gnome.Shell.HotplugSniffer">
+ <method name="SniffURI">
+ <arg type="s" direction="in"/>
+ <arg type="as" direction="out"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Shell.PerfHelper.xml
b/data/dbus-interfaces/org.gnome.Shell.PerfHelper.xml
new file mode 100644
index 000000000..98fea27e9
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Shell.PerfHelper.xml
@@ -0,0 +1,13 @@
+<node>
+ <interface name="org.gnome.Shell.PerfHelper">
+ <method name="CreateWindow">
+ <arg type="i" direction="in"/>
+ <arg type="i" direction="in"/>
+ <arg type="b" direction="in"/>
+ <arg type="b" direction="in"/>
+ <arg type="b" direction="in"/>
+ </method>
+ <method name="WaitWindows"/>
+ <method name="DestroyWindows"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Shell.PortalHelper.xml
b/data/dbus-interfaces/org.gnome.Shell.PortalHelper.xml
new file mode 100644
index 000000000..8c6a13ebd
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Shell.PortalHelper.xml
@@ -0,0 +1,19 @@
+<node>
+ <interface name="org.gnome.Shell.PortalHelper">
+ <method name="Authenticate">
+ <arg name="connection" type="o" direction="in"/>
+ <arg name="url" type="s" direction="in"/>
+ <arg name="timestamp" type="u" direction="in"/>
+ </method>
+ <method name="Close">
+ <arg name="connection" type="o" direction="in"/>
+ </method>
+ <method name="Refresh">
+ <arg name="connection" type="o" direction="in"/>
+ </method>
+ <signal name="Done">
+ <arg type="o" name="connection"/>
+ <arg type="u" name="result"/>
+ </signal>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Shell.Wacom.PadOsd.xml
b/data/dbus-interfaces/org.gnome.Shell.Wacom.PadOsd.xml
new file mode 100644
index 000000000..5e046c76c
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Shell.Wacom.PadOsd.xml
@@ -0,0 +1,8 @@
+<node>
+ <interface name="org.gnome.Shell.Wacom.PadOsd">
+ <method name="Show">
+ <arg name="device_node" direction="in" type="o"/>
+ <arg name="edition_mode" direction="in" type="b"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gnome.Shell.xml b/data/dbus-interfaces/org.gnome.Shell.xml
new file mode 100644
index 000000000..233c5e105
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Shell.xml
@@ -0,0 +1,44 @@
+<node>
+ <interface name="org.gnome.Shell">
+ <method name="Eval">
+ <arg type="s" direction="in" name="script"/>
+ <arg type="b" direction="out" name="success"/>
+ <arg type="s" direction="out" name="result"/>
+ </method>
+ <method name="FocusSearch"/>
+ <method name="ShowOSD">
+ <arg type="a{sv}" direction="in" name="params"/>
+ </method>
+ <method name="ShowMonitorLabels">
+ <arg type="a{uv}" direction="in" name="params"/>
+ </method>
+ <method name="ShowMonitorLabels2">
+ <arg type="a{sv}" direction="in" name="params"/>
+ </method>
+ <method name="HideMonitorLabels"/>
+ <method name="FocusApp">
+ <arg type="s" direction="in" name="id"/>
+ </method>
+ <method name="ShowApplications"/>
+ <method name="GrabAccelerator">
+ <arg type="s" direction="in" name="accelerator"/>
+ <arg type="u" direction="in" name="flags"/>
+ <arg type="u" direction="out" name="action"/>
+ </method>
+ <method name="GrabAccelerators">
+ <arg type="a(su)" direction="in" name="accelerators"/>
+ <arg type="au" direction="out" name="actions"/>
+ </method>
+ <method name="UngrabAccelerator">
+ <arg type="u" direction="in" name="action"/>
+ <arg type="b" direction="out" name="success"/>
+ </method>
+ <signal name="AcceleratorActivated">
+ <arg name="action" type="u"/>
+ <arg name="parameters" type="a{sv}"/>
+ </signal>
+ <property name="Mode" type="s" access="read"/>
+ <property name="OverviewActive" type="b" access="readwrite"/>
+ <property name="ShellVersion" type="s" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.gtk.Notifications.xml b/data/dbus-interfaces/org.gtk.Notifications.xml
new file mode 100644
index 000000000..e2461fff8
--- /dev/null
+++ b/data/dbus-interfaces/org.gtk.Notifications.xml
@@ -0,0 +1,13 @@
+<node>
+ <interface name="org.gtk.Notifications">
+ <method name="AddNotification">
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ <arg type="a{sv}" direction="in"/>
+ </method>
+ <method name="RemoveNotification">
+ <arg type="s" direction="in"/>
+ <arg type="s" direction="in"/>
+ </method>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.mpris.MediaPlayer2.Player.xml
b/data/dbus-interfaces/org.mpris.MediaPlayer2.Player.xml
new file mode 100644
index 000000000..550cb4c5f
--- /dev/null
+++ b/data/dbus-interfaces/org.mpris.MediaPlayer2.Player.xml
@@ -0,0 +1,12 @@
+<node>
+ <interface name="org.mpris.MediaPlayer2.Player">
+ <method name="PlayPause"/>
+ <method name="Next"/>
+ <method name="Previous"/>
+ <property name="CanGoNext" type="b" access="read"/>
+ <property name="CanGoPrevious" type="b" access="read"/>
+ <property name="CanPlay" type="b" access="read"/>
+ <property name="Metadata" type="a{sv}" access="read"/>
+ <property name="PlaybackStatus" type="s" access="read"/>
+ </interface>
+</node>
diff --git a/data/dbus-interfaces/org.mpris.MediaPlayer2.xml b/data/dbus-interfaces/org.mpris.MediaPlayer2.xml
new file mode 100644
index 000000000..5febaf90b
--- /dev/null
+++ b/data/dbus-interfaces/org.mpris.MediaPlayer2.xml
@@ -0,0 +1,7 @@
+<node>
+ <interface name="org.mpris.MediaPlayer2">
+ <method name="Raise"/>
+ <property name="CanRaise" type="b" access="read"/>
+ <property name="DesktopEntry" type="s" access="read"/>
+ </interface>
+</node>
diff --git a/data/gnome-shell-dbus-interfaces.gresource.xml b/data/gnome-shell-dbus-interfaces.gresource.xml
index bc637eefd..5183672c9 100644
--- a/data/gnome-shell-dbus-interfaces.gresource.xml
+++ b/data/gnome-shell-dbus-interfaces.gresource.xml
@@ -1,5 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/dbus-interfaces">
+ <file preprocess="xml-stripblanks">net.hadess.SensorProxy.xml</file>
+ <file preprocess="xml-stripblanks">net.hadess.SwitcherooControl.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.Application.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.bolt1.Device.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.bolt1.Manager.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.DBus.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.GeoClue2.Agent.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.GeoClue2.Manager.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.impl.portal.Access.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.impl.portal.PermissionStore.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.impl.portal.Request.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.login1.Manager.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.login1.Session.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.login1.User.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.ModemManager1.Modem.Modem3gpp.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.ModemManager1.Modem.ModemCdma.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.ModemManager1.Modem.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.ModemManager.Modem.Cdma.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.ModemManager.Modem.Gsm.Network.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.Notifications.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.PackageKit.Offline.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.realmd.Provider.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.realmd.Realm.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.realmd.Service.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.UPower.Device.xml</file>
+ <file preprocess="xml-stripblanks">org.freedesktop.UPower.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Magnifier.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Magnifier.ZoomRegion.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.ScreenSaver.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SessionManager.EndSessionDialog.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SessionManager.Inhibitor.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SessionManager.Presence.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SessionManager.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Color.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Power.Screen.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Rfkill.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Wacom.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.AudioDeviceSelection.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.Extensions.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.HotplugSniffer.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.PerfHelper.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.PortalHelper.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.Screencast.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.Screenshot.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.Wacom.PadOsd.xml</file>
+ <file preprocess="xml-stripblanks">org.gnome.Shell.xml</file>
+ <file preprocess="xml-stripblanks">org.Gtk.MountOperationHandler.xml</file>
+ <file preprocess="xml-stripblanks">org.gtk.Notifications.xml</file>
+ <file preprocess="xml-stripblanks">org.mpris.MediaPlayer2.Player.xml</file>
+ <file preprocess="xml-stripblanks">org.mpris.MediaPlayer2.xml</file>
</gresource>
</gresources>
diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js
index 80b8d5cda..7660856f5 100644
--- a/js/extensionPrefs/main.js
+++ b/js/extensionPrefs/main.js
@@ -13,18 +13,9 @@ const _ = Gettext.gettext;
const Config = imports.misc.config;
const ExtensionUtils = imports.misc.extensionUtils;
+const { loadInterfaceXML } = imports.misc.fileUtils;
-const GnomeShellIface = `
-<node>
-<interface name="org.gnome.Shell.Extensions">
-<signal name="ExtensionStatusChanged">
- <arg type="s" name="uuid"/>
- <arg type="i" name="state"/>
- <arg type="s" name="error"/>
-</signal>
-</interface>
-</node>`;
-
+const GnomeShellIface = loadInterfaceXML('org.gnome.Shell.Extensions');
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
function stripPrefix(string, prefix) {
diff --git a/js/gdm/realmd.js b/js/gdm/realmd.js
index ae87aa193..7b1fb907d 100644
--- a/js/gdm/realmd.js
+++ b/js/gdm/realmd.js
@@ -5,61 +5,15 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
-const ProviderIface = `
-<node>
-<interface name="org.freedesktop.realmd.Provider">
- <property name="Name" type="s" access="read"/>
- <property name="Version" type="s" access="read"/>
- <property name="Realms" type="ao" access="read"/>
- <method name="Discover">
- <arg name="string" type="s" direction="in"/>
- <arg name="options" type="a{sv}" direction="in"/>
- <arg name="relevance" type="i" direction="out"/>
- <arg name="realm" type="ao" direction="out"/>
- </method>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const ProviderIface = loadInterfaceXML("org.freedesktop.realmd.Provider");
const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface);
-const ServiceIface = `
-<node>
-<interface name="org.freedesktop.realmd.Service">
- <method name="Cancel">
- <arg name="operation" type="s" direction="in"/>
- </method>
- <method name="Release" />
- <method name="SetLocale">
- <arg name="locale" type="s" direction="in"/>
- </method>
- <signal name="Diagnostics">
- <arg name="data" type="s"/>
- <arg name="operation" type="s"/>
- </signal>
-</interface>
-</node>`;
+const ServiceIface = loadInterfaceXML("org.freedesktop.realmd.Service");
const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface);
-const RealmIface = `
-<node>
-<interface name="org.freedesktop.realmd.Realm">
- <property name="Name" type="s" access="read"/>
- <property name="Configured" type="s" access="read"/>
- <property name="Details" type="a(ss)" access="read"/>
- <property name="LoginFormats" type="as" access="read"/>
- <property name="LoginPolicy" type="s" access="read"/>
- <property name="PermittedLogins" type="as" access="read"/>
- <property name="SupportedInterfaces" type="as" access="read"/>
- <method name="ChangeLoginPolicy">
- <arg name="login_policy" type="s" direction="in"/>
- <arg name="permitted_add" type="as" direction="in"/>
- <arg name="permitted_remove" type="as" direction="in"/>
- <arg name="options" type="a{sv}" direction="in"/>
- </method>
- <method name="Deconfigure">
- <arg name="options" type="a{sv}" direction="in"/>
- </method>
-</interface>
-</node>`;
+const RealmIface = loadInterfaceXML("org.freedesktop.realmd.Realm");
const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface);
var Manager = new Lang.Class({
diff --git a/js/misc/gnomeSession.js b/js/misc/gnomeSession.js
index 15a22023b..d747aadf6 100644
--- a/js/misc/gnomeSession.js
+++ b/js/misc/gnomeSession.js
@@ -4,18 +4,9 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Signals = imports.signals;
-const PresenceIface = `
-<node>
-<interface name="org.gnome.SessionManager.Presence">
-<method name="SetStatus">
- <arg type="u" direction="in"/>
-</method>
-<property name="status" type="u" access="readwrite"/>
-<signal name="StatusChanged">
- <arg type="u" direction="out"/>
-</signal>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const PresenceIface = loadInterfaceXML('org.gnome.SessionManager.Presence');
var PresenceStatus = {
AVAILABLE: 0,
@@ -33,49 +24,14 @@ function Presence(initCallback, cancellable) {
// Note inhibitors are immutable objects, so they don't
// change at runtime (changes always come in the form
// of new inhibitors)
-const InhibitorIface = `
-<node>
-<interface name="org.gnome.SessionManager.Inhibitor">
-<method name="GetAppId">
- <arg type="s" direction="out" />
-</method>
-<method name="GetReason">
- <arg type="s" direction="out" />
-</method>
-</interface>
-</node>`;
-
+const InhibitorIface = loadInterfaceXML('org.gnome.SessionManager.Inhibitor');
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
function Inhibitor(objectPath, initCallback, cancellable) {
return new InhibitorProxy(Gio.DBus.session, 'org.gnome.SessionManager', objectPath, initCallback,
cancellable);
}
// Not the full interface, only the methods we use
-const SessionManagerIface = `
-<node>
-<interface name="org.gnome.SessionManager">
-<method name="Logout">
- <arg type="u" direction="in" />
-</method>
-<method name="Shutdown" />
-<method name="Reboot" />
-<method name="CanShutdown">
- <arg type="b" direction="out" />
-</method>
-<method name="IsInhibited">
- <arg type="u" direction="in" />
- <arg type="b" direction="out" />
-</method>
-<property name="SessionIsActive" type="b" access="read"/>
-<signal name="InhibitorAdded">
- <arg type="o" direction="out"/>
-</signal>
-<signal name="InhibitorRemoved">
- <arg type="o" direction="out"/>
-</signal>
-</interface>
-</node>`;
-
+const SessionManagerIface = loadInterfaceXML('org.gnome.SessionManager');
var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface);
function SessionManager(initCallback, cancellable) {
return new SessionManagerProxy(Gio.DBus.session, 'org.gnome.SessionManager',
'/org/gnome/SessionManager', initCallback, cancellable);
diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js
index b5891a383..d3868184e 100644
--- a/js/misc/loginManager.js
+++ b/js/misc/loginManager.js
@@ -7,56 +7,11 @@ const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
-const SystemdLoginManagerIface = `
-<node>
-<interface name="org.freedesktop.login1.Manager">
-<method name="Suspend">
- <arg type="b" direction="in"/>
-</method>
-<method name="CanSuspend">
- <arg type="s" direction="out"/>
-</method>
-<method name="Inhibit">
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="h" direction="out"/>
-</method>
-<method name="GetSession">
- <arg type="s" direction="in"/>
- <arg type="o" direction="out"/>
-</method>
-<method name="ListSessions">
- <arg name="sessions" type="a(susso)" direction="out"/>
-</method>
-<signal name="PrepareForSleep">
- <arg type="b" direction="out"/>
-</signal>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
-const SystemdLoginSessionIface = `
-<node>
-<interface name="org.freedesktop.login1.Session">
-<signal name="Lock" />
-<signal name="Unlock" />
-<property name="Active" type="b" access="read" />
-<property name="Class" type="s" access="read" />
-<property name="Id" type="s" access="read" />
-<method name="SetLockedHint">
- <arg type="b" direction="in"/>
-</method>
-</interface>
-</node>`;
-
-const SystemdLoginUserIface = `
-<node>
-<interface name="org.freedesktop.login1.User">
-<property name="Display" type="(so)" access="read" />
-<property name="Sessions" type="a(so)" access="read" />
-</interface>
-</node>`;
+const SystemdLoginManagerIface = loadInterfaceXML('org.freedesktop.login1.Manager');
+const SystemdLoginSessionIface = loadInterfaceXML('org.freedesktop.login1.Session');
+const SystemdLoginUserIface = loadInterfaceXML('org.freedesktop.login1.User');
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
diff --git a/js/misc/modemManager.js b/js/misc/modemManager.js
index c47393781..f57057848 100644
--- a/js/misc/modemManager.js
+++ b/js/misc/modemManager.js
@@ -5,6 +5,8 @@ const Lang = imports.lang;
const NMA = imports.gi.NMA;
const Signals = imports.signals;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
// _getMobileProvidersDatabase:
//
// Gets the database of mobile providers, with references between MCCMNC/SID and
@@ -92,44 +94,10 @@ function _findProviderForSid(sid) {
// The following are not the complete interfaces, just the methods we need
// (or may need in the future)
-const ModemGsmNetworkInterface = `
-<node>
-<interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
-<method name="GetRegistrationInfo">
- <arg type="(uss)" direction="out" />
-</method>
-<method name="GetSignalQuality">
- <arg type="u" direction="out" />
-</method>
-<property name="AccessTechnology" type="u" access="read" />
-<signal name="SignalQuality">
- <arg type="u" direction="out" />
-</signal>
-<signal name="RegistrationInfo">
- <arg type="u" direction="out" />
- <arg type="s" direction="out" />
- <arg type="s" direction="out" />
-</signal>
-</interface>
-</node>`;
-
+const ModemGsmNetworkInterface = loadInterfaceXML('org.freedesktop.ModemManager.Modem.Gsm.Network');
const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface);
-const ModemCdmaInterface = `
-<node>
-<interface name="org.freedesktop.ModemManager.Modem.Cdma">
-<method name="GetSignalQuality">
- <arg type="u" direction="out" />
-</method>
-<method name="GetServingSystem">
- <arg type="(usu)" direction="out" />
-</method>
-<signal name="SignalQuality">
- <arg type="u" direction="out" />
-</signal>
-</interface>
-</node>`;
-
+const ModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager.Modem.Cdma');
const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
var ModemGsm = new Lang.Class({
@@ -224,29 +192,13 @@ Signals.addSignalMethods(ModemCdma.prototype);
// Support for the new ModemManager1 interface (MM >= 0.7)
//------------------------------------------------------------------------------
-const BroadbandModemInterface = `
-<node>
-<interface name="org.freedesktop.ModemManager1.Modem">
-<property name="SignalQuality" type="(ub)" access="read" />
-</interface>
-</node>`;
+const BroadbandModemInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem');
const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface);
-const BroadbandModem3gppInterface = `
-<node>
-<interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp">
-<property name="OperatorCode" type="s" access="read" />
-<property name="OperatorName" type="s" access="read" />
-</interface>
-</node>`;
+const BroadbandModem3gppInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem.Modem3gpp');
const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface);
-const BroadbandModemCdmaInterface = `
-<node>
-<interface name="org.freedesktop.ModemManager1.Modem.ModemCdma">
-<property name="Sid" type="u" access="read" />
-</interface>
-</node>`;
+const BroadbandModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem.ModemCdma');
const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface);
var BroadbandModem = new Lang.Class({
diff --git a/js/misc/permissionStore.js b/js/misc/permissionStore.js
index 6126e1fe4..9118d4d3f 100644
--- a/js/misc/permissionStore.js
+++ b/js/misc/permissionStore.js
@@ -2,32 +2,9 @@
const Gio = imports.gi.Gio;
-const PermissionStoreIface = `
-<node>
- <interface name="org.freedesktop.impl.portal.PermissionStore">
- <method name="Lookup">
- <arg name="table" type="s" direction="in"/>
- <arg name="id" type="s" direction="in"/>
- <arg name="permissions" type="a{sas}" direction="out"/>
- <arg name="data" type="v" direction="out"/>
- </method>
- <method name="Set">
- <arg name="table" type="s" direction="in"/>
- <arg name="create" type="b" direction="in"/>
- <arg name="id" type="s" direction="in"/>
- <arg name="app_permissions" type="a{sas}" direction="in"/>
- <arg name="data" type="v" direction="in"/>
- </method>
- <signal name="Changed">
- <arg name="table" type="s" direction="out"/>
- <arg name="id" type="s" direction="out"/>
- <arg name="deleted" type="b" direction="out"/>
- <arg name="data" type="v" direction="out"/>
- <arg name="permissions" type="a{sas}" direction="out"/>
- </signal>
- </interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+const PermissionStoreIface = loadInterfaceXML('org.freedesktop.impl.portal.PermissionStore');
const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface);
function PermissionStore(initCallback, cancellable) {
diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js
index 434dd9555..3c1713745 100644
--- a/js/misc/systemActions.js
+++ b/js/misc/systemActions.js
@@ -11,6 +11,8 @@ const GnomeSession = imports.misc.gnomeSession;
const LoginManager = imports.misc.loginManager;
const Main = imports.ui.main;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
@@ -22,12 +24,7 @@ const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
-const SensorProxyInterface = `
-<node>
-<interface name="net.hadess.SensorProxy">
- <property name="HasAccelerometer" type="b" access="read"/>
-</interface>
-</node>`;
+const SensorProxyInterface = loadInterfaceXML('net.hadess.SensorProxy');
const POWER_OFF_ACTION_ID = 'power-off';
const LOCK_SCREEN_ACTION_ID = 'lock-screen';
diff --git a/js/portal-resources.gresource.xml b/js/portal-resources.gresource.xml
index 3a06747b0..7961c755f 100644
--- a/js/portal-resources.gresource.xml
+++ b/js/portal-resources.gresource.xml
@@ -2,6 +2,7 @@
<gresources>
<gresource prefix="/org/gnome/shell">
<file>misc/config.js</file>
+ <file>misc/fileUtils.js</file>
<file>portalHelper/main.js</file>
</gresource>
</gresources>
diff --git a/js/portalHelper/main.js b/js/portalHelper/main.js
index e112f820f..a788b7479 100644
--- a/js/portalHelper/main.js
+++ b/js/portalHelper/main.js
@@ -12,6 +12,7 @@ const WebKit = imports.gi.WebKit2;
const _ = Gettext.gettext;
const Config = imports.misc.config;
+const { loadInterfaceXML } = imports.misc.fileUtils;
const PortalHelperResult = {
CANCELLED: 0,
@@ -30,26 +31,7 @@ const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org';
const CONNECTIVITY_CHECK_URI = 'http://' + CONNECTIVITY_CHECK_HOST;
const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC;
-const HelperDBusInterface = `
-<node>
-<interface name="org.gnome.Shell.PortalHelper">
-<method name="Authenticate">
- <arg type="o" direction="in" name="connection" />
- <arg type="s" direction="in" name="url" />
- <arg type="u" direction="in" name="timestamp" />
-</method>
-<method name="Close">
- <arg type="o" direction="in" name="connection" />
-</method>
-<method name="Refresh">
- <arg type="o" direction="in" name="connection" />
-</method>
-<signal name="Done">
- <arg type="o" name="connection" />
- <arg type="u" name="result" />
-</signal>
-</interface>
-</node>`;
+const HelperDBusInterface = loadInterfaceXML('org.gnome.Shell.PortalHelper');
var PortalHeaderBar = new Lang.Class({
Name: 'PortalHeaderBar',
diff --git a/js/ui/accessDialog.js b/js/ui/accessDialog.js
index bb59ee5ce..ca0ff54a5 100644
--- a/js/ui/accessDialog.js
+++ b/js/ui/accessDialog.js
@@ -10,29 +10,10 @@ const CheckBox = imports.ui.checkBox;
const Dialog = imports.ui.dialog;
const ModalDialog = imports.ui.modalDialog;
-const RequestIface = `
-<node>
-<interface name="org.freedesktop.impl.portal.Request">
-<method name="Close"/>
-</interface>
-</node>`;
-
-const AccessIface = `
-<node>
-<interface name="org.freedesktop.impl.portal.Access">
-<method name="AccessDialog">
- <arg type="o" name="handle" direction="in"/>
- <arg type="s" name="app_id" direction="in"/>
- <arg type="s" name="parent_window" direction="in"/>
- <arg type="s" name="title" direction="in"/>
- <arg type="s" name="subtitle" direction="in"/>
- <arg type="s" name="body" direction="in"/>
- <arg type="a{sv}" name="options" direction="in"/>
- <arg type="u" name="response" direction="out"/>
- <arg type="a{sv}" name="results" direction="out"/>
-</method>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const RequestIface = loadInterfaceXML('org.freedesktop.impl.portal.Request');
+const AccessIface = loadInterfaceXML('org.freedesktop.impl.portal.Access');
var DialogResponse = {
OK: 0,
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 623dc6f38..67b796a26 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -30,6 +30,8 @@ const Params = imports.misc.params;
const Util = imports.misc.util;
const SystemActions = imports.misc.systemActions;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
var MAX_APPLICATION_WORK_MILLIS = 75;
var MENU_POPUP_TIMEOUT = 600;
var MAX_COLUMNS = 6;
@@ -66,13 +68,7 @@ var PAGE_SWITCH_TIME = 0.3;
const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl';
const SWITCHEROO_OBJECT_PATH = '/net/hadess/SwitcherooControl';
-const SwitcherooProxyInterface = `
-<node>
-<interface name="net.hadess.SwitcherooControl">
- <property name="HasDualGpu" type="b" access="read"/>
-</interface>
-</node>`;
-
+const SwitcherooProxyInterface = loadInterfaceXML('net.hadess.SwitcherooControl');
const SwitcherooProxy = Gio.DBusProxy.makeProxyWrapper(SwitcherooProxyInterface);
let discreteGpuAvailable = false;
diff --git a/js/ui/audioDeviceSelection.js b/js/ui/audioDeviceSelection.js
index 8010ec12c..3f4b9bcc7 100644
--- a/js/ui/audioDeviceSelection.js
+++ b/js/ui/audioDeviceSelection.js
@@ -9,25 +9,15 @@ const St = imports.gi.St;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
var AudioDevice = {
HEADPHONES: 1 << 0,
HEADSET: 1 << 1,
MICROPHONE: 1 << 2
};
-const AudioDeviceSelectionIface = `
-<node>
-<interface name="org.gnome.Shell.AudioDeviceSelection">
-<method name="Open">
- <arg name="devices" direction="in" type="as" />
-</method>
-<method name="Close">
-</method>
-<signal name="DeviceSelected">
- <arg name="device" type="s" />
-</signal>
-</interface>
-</node>`;
+const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection');
var AudioDeviceSelectionDialog = new Lang.Class({
Name: 'AudioDeviceSelectionDialog',
diff --git a/js/ui/components/autorunManager.js b/js/ui/components/autorunManager.js
index 37c774c53..68a1643f2 100644
--- a/js/ui/components/autorunManager.js
+++ b/js/ui/components/autorunManager.js
@@ -8,6 +8,8 @@ const GnomeSession = imports.misc.gnomeSession;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
// GSettings keys
const SETTINGS_SCHEMA = 'org.gnome.desktop.media-handling';
const SETTING_DISABLE_AUTORUN = 'autorun-never';
@@ -74,16 +76,7 @@ function startAppForMount(app, mount) {
/******************************************/
-const HotplugSnifferIface = `
-<node>
-<interface name="org.gnome.Shell.HotplugSniffer">
-<method name="SniffURI">
- <arg type="s" direction="in" />
- <arg type="as" direction="out" />
-</method>
-</interface>
-</node>`;
-
+const HotplugSnifferIface = loadInterfaceXML('org.gnome.Shell.HotplugSniffer');
const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface);
function HotplugSniffer() {
return new HotplugSnifferProxy(Gio.DBus.session,
diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js
index a6b928ce2..23ed69769 100644
--- a/js/ui/endSessionDialog.js
+++ b/js/ui/endSessionDialog.js
@@ -36,6 +36,8 @@ const ModalDialog = imports.ui.modalDialog;
const Tweener = imports.ui.tweener;
const UserWidget = imports.ui.userWidget;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
let _endSessionDialog = null;
const _ITEM_ICON_SIZE = 48;
@@ -43,23 +45,7 @@ const _DIALOG_ICON_SIZE = 48;
var GSM_SESSION_MANAGER_LOGOUT_FORCE = 2;
-const EndSessionDialogIface = `
-<node>
-<interface name="org.gnome.SessionManager.EndSessionDialog">
-<method name="Open">
- <arg type="u" direction="in" />
- <arg type="u" direction="in" />
- <arg type="u" direction="in" />
- <arg type="ao" direction="in" />
-</method>
-<method name="Close" />
-<signal name="ConfirmedLogout" />
-<signal name="ConfirmedReboot" />
-<signal name="ConfirmedShutdown" />
-<signal name="Canceled" />
-<signal name="Closed" />
-</interface>
-</node>`;
+const EndSessionDialogIface = loadInterfaceXML('org.gnome.SessionManager.EndSessionDialog');
const logoutDialogContent = {
subjectWithUser: C_("title", "Log Out %s"),
@@ -169,43 +155,13 @@ const DialogContent = {
var MAX_USERS_IN_SESSION_DIALOG = 5;
-const LogindSessionIface = `
-<node>
-<interface name="org.freedesktop.login1.Session">
- <property name="Id" type="s" access="read"/>
- <property name="Remote" type="b" access="read"/>
- <property name="Class" type="s" access="read"/>
- <property name="Type" type="s" access="read"/>
- <property name="State" type="s" access="read"/>
-</interface>
-</node>`;
-
+const LogindSessionIface = loadInterfaceXML('org.freedesktop.login1.Session');
const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
-const PkOfflineIface = `
-<node>
-<interface name="org.freedesktop.PackageKit.Offline">
- <property name="UpdatePrepared" type="b" access="read"/>
- <property name="UpdateTriggered" type="b" access="read"/>
- <property name="UpgradePrepared" type="b" access="read"/>
- <property name="UpgradeTriggered" type="b" access="read"/>
- <property name="PreparedUpgrade" type="a{sv}" access="read"/>
- <method name="Trigger">
- <arg type="s" name="action" direction="in"/>
- </method>
- <method name="Cancel"/>
-</interface>
-</node>`;
-
+const PkOfflineIface = loadInterfaceXML('org.freedesktop.PackageKit.Offline');
const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface);
-const UPowerIface = `
-<node>
-<interface name="org.freedesktop.UPower">
- <property name="OnBattery" type="b" access="read"/>
-</interface>
-</node>`;
-
+const UPowerIface = loadInterfaceXML('org.freedesktop.UPower');
const UPowerProxy = Gio.DBusProxy.makeProxyWrapper(UPowerIface);
function findAppFromInhibitor(inhibitor) {
diff --git a/js/ui/magnifierDBus.js b/js/ui/magnifierDBus.js
index c796d0735..210c5e337 100644
--- a/js/ui/magnifierDBus.js
+++ b/js/ui/magnifierDBus.js
@@ -4,96 +4,18 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Main = imports.ui.main;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const MAG_SERVICE_PATH = '/org/gnome/Magnifier';
const ZOOM_SERVICE_PATH = '/org/gnome/Magnifier/ZoomRegion';
// Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See:
// http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml
-const MagnifierIface = `
-<node>
-<interface name="org.gnome.Magnifier">
-<method name="setActive">
- <arg type="b" direction="in" />
-</method>
-<method name="isActive">
- <arg type="b" direction="out" />
-</method>
-<method name="showCursor" />
-<method name="hideCursor" />
-<method name="createZoomRegion">
- <arg type="d" direction="in" />
- <arg type="d" direction="in" />
- <arg type="ai" direction="in" />
- <arg type="ai" direction="in" />
- <arg type="o" direction="out" />
-</method>
-<method name="addZoomRegion">
- <arg type="o" direction="in" />
- <arg type="b" direction="out" />
-</method>
-<method name="getZoomRegions">
- <arg type="ao" direction="out" />
-</method>
-<method name="clearAllZoomRegions" />
-<method name="fullScreenCapable">
- <arg type="b" direction="out" />
-</method>
-<method name="setCrosswireSize">
- <arg type="i" direction="in" />
-</method>
-<method name="getCrosswireSize">
- <arg type="i" direction="out" />
-</method>
-<method name="setCrosswireLength">
- <arg type="i" direction="in" />
-</method>
-<method name="getCrosswireLength">
- <arg type="i" direction="out" />
-</method>
-<method name="setCrosswireClip">
- <arg type="b" direction="in" />
-</method>
-<method name="getCrosswireClip">
- <arg type="b" direction="out" />
-</method>
-<method name="setCrosswireColor">
- <arg type="u" direction="in" />
-</method>
-<method name="getCrosswireColor">
- <arg type="u" direction="out" />
-</method>
-</interface>
-</node>`;
+const MagnifierIface = loadInterfaceXML('org.gnome.Magnifier');
// Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See:
// http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml
-const ZoomRegionIface = `
-<node>
-<interface name="org.gnome.Magnifier.ZoomRegion">
-<method name="setMagFactor">
- <arg type="d" direction="in" />
- <arg type="d" direction="in" />
-</method>
-<method name="getMagFactor">
- <arg type="d" direction="out" />
- <arg type="d" direction="out" />
-</method>
-<method name="setRoi">
- <arg type="ai" direction="in" />
-</method>
-<method name="getRoi">
- <arg type="ai" direction="out" />
-</method>
-<method name="shiftContentsTo">
- <arg type="i" direction="in" />
- <arg type="i" direction="in" />
- <arg type="b" direction="out" />
-</method>
-<method name="moveResize">
- <arg type="ai" direction="in" />
-</method>
-</interface>
-</node>`;
+const ZoomRegionIface = loadInterfaceXML('org.gnome.Magnifier.ZoomRegion');
// For making unique ZoomRegion DBus proxy object paths of the form:
// '/org/gnome/Magnifier/ZoomRegion/zoomer0',
diff --git a/js/ui/mpris.js b/js/ui/mpris.js
index a3b369ce2..3b5521265 100644
--- a/js/ui/mpris.js
+++ b/js/ui/mpris.js
@@ -8,44 +8,15 @@ const Calendar = imports.ui.calendar;
const Main = imports.ui.main;
const MessageList = imports.ui.messageList;
-const DBusIface = `
-<node>
-<interface name="org.freedesktop.DBus">
- <method name="ListNames">
- <arg type="as" direction="out" name="names" />
- </method>
- <signal name="NameOwnerChanged">
- <arg type="s" direction="out" name="name" />
- <arg type="s" direction="out" name="oldOwner" />
- <arg type="s" direction="out" name="newOwner" />
- </signal>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const DBusIface = loadInterfaceXML('org.freedesktop.DBus');
const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface);
-const MprisIface = `
-<node>
-<interface name="org.mpris.MediaPlayer2">
- <method name="Raise" />
- <property name="CanRaise" type="b" access="read" />
- <property name="DesktopEntry" type="s" access="read" />
-</interface>
-</node>`;
+const MprisIface = loadInterfaceXML('org.mpris.MediaPlayer2');
const MprisProxy = Gio.DBusProxy.makeProxyWrapper(MprisIface);
-const MprisPlayerIface = `
-<node>
-<interface name="org.mpris.MediaPlayer2.Player">
- <method name="PlayPause" />
- <method name="Next" />
- <method name="Previous" />
- <property name="CanGoNext" type="b" access="read" />
- <property name="CanGoPrevious" type="b" access="read" />
- <property name="CanPlay" type="b" access="read" />
- <property name="Metadata" type="a{sv}" access="read" />
- <property name="PlaybackStatus" type="s" access="read" />
-</interface>
-</node>`;
+const MprisPlayerIface = loadInterfaceXML('org.mpris.MediaPlayer2.Player');
const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface);
const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.';
diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js
index 19d23da14..81d3e3ae3 100644
--- a/js/ui/notificationDaemon.js
+++ b/js/ui/notificationDaemon.js
@@ -16,58 +16,16 @@ const MessageTray = imports.ui.messageTray;
const Params = imports.misc.params;
const Util = imports.misc.util;
-// Should really be defined in Gio.js
-const BusIface = `
-<node>
-<interface name="org.freedesktop.DBus">
-<method name="GetConnectionUnixProcessID">
- <arg type="s" direction="in" />
- <arg type="u" direction="out" />
-</method>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+// Should really be defined in Gio.js
+const BusIface = loadInterfaceXML('org.freedesktop.DBus');
var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface);
function Bus() {
return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
}
-const FdoNotificationsIface = `
-<node>
-<interface name="org.freedesktop.Notifications">
-<method name="Notify">
- <arg type="s" direction="in"/>
- <arg type="u" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="s" direction="in"/>
- <arg type="as" direction="in"/>
- <arg type="a{sv}" direction="in"/>
- <arg type="i" direction="in"/>
- <arg type="u" direction="out"/>
-</method>
-<method name="CloseNotification">
- <arg type="u" direction="in"/>
-</method>
-<method name="GetCapabilities">
- <arg type="as" direction="out"/>
-</method>
-<method name="GetServerInformation">
- <arg type="s" direction="out"/>
- <arg type="s" direction="out"/>
- <arg type="s" direction="out"/>
- <arg type="s" direction="out"/>
-</method>
-<signal name="NotificationClosed">
- <arg type="u"/>
- <arg type="u"/>
-</signal>
-<signal name="ActionInvoked">
- <arg type="u"/>
- <arg type="s"/>
-</signal>
-</interface>
-</node>`;
+const FdoNotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
var NotificationClosedReason = {
EXPIRED: 1,
@@ -656,19 +614,7 @@ var GtkNotificationDaemonNotification = new Lang.Class({
},
});
-const FdoApplicationIface = `
-<node>
-<interface name="org.freedesktop.Application">
-<method name="ActivateAction">
- <arg type="s" direction="in" />
- <arg type="av" direction="in" />
- <arg type="a{sv}" direction="in" />
-</method>
-<method name="Activate">
- <arg type="a{sv}" direction="in" />
-</method>
-</interface>
-</node>`;
+const FdoApplicationIface = loadInterfaceXML('org.freedesktop.Application');
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
function objectPathFromAppId(appId) {
@@ -777,20 +723,7 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
},
});
-const GtkNotificationsIface = `
-<node>
-<interface name="org.gtk.Notifications">
-<method name="AddNotification">
- <arg type="s" direction="in" />
- <arg type="s" direction="in" />
- <arg type="a{sv}" direction="in" />
-</method>
-<method name="RemoveNotification">
- <arg type="s" direction="in" />
- <arg type="s" direction="in" />
-</method>
-</interface>
-</node>`;
+const GtkNotificationsIface = loadInterfaceXML('org.gtk.Notifications');
var GtkNotificationDaemon = new Lang.Class({
Name: 'GtkNotificationDaemon',
diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js
index 76321f5f5..48219026c 100644
--- a/js/ui/padOsd.js
+++ b/js/ui/padOsd.js
@@ -19,6 +19,8 @@ const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const Layout = imports.ui.layout;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const ACTIVE_COLOR = "#729fcf";
const LTR = 0;
@@ -962,15 +964,7 @@ var PadOsd = new Lang.Class({
});
Signals.addSignalMethods(PadOsd.prototype);
-const PadOsdIface = `
-<node>
-<interface name="org.gnome.Shell.Wacom.PadOsd">
-<method name="Show">
- <arg name="device_node" direction="in" type="o"/>
- <arg name="edition_mode" direction="in" type="b"/>
-</method>
-</interface>
-</node>`;
+const PadOsdIface = loadInterfaceXML('org.gnome.Shell.Wacom.PadOsd');
var PadOsdService = new Lang.Class({
Name: 'PadOsdService',
diff --git a/js/ui/screencast.js b/js/ui/screencast.js
index 91514e3a0..e57b0ef7d 100644
--- a/js/ui/screencast.js
+++ b/js/ui/screencast.js
@@ -8,30 +8,9 @@ const Signals = imports.signals;
const Main = imports.ui.main;
-const ScreencastIface = `
-<node>
-<interface name="org.gnome.Shell.Screencast">
-<method name="Screencast">
- <arg type="s" direction="in" name="file_template"/>
- <arg type="a{sv}" direction="in" name="options"/>
- <arg type="b" direction="out" name="success"/>
- <arg type="s" direction="out" name="filename_used"/>
-</method>
-<method name="ScreencastArea">
- <arg type="i" direction="in" name="x"/>
- <arg type="i" direction="in" name="y"/>
- <arg type="i" direction="in" name="width"/>
- <arg type="i" direction="in" name="height"/>
- <arg type="s" direction="in" name="file_template"/>
- <arg type="a{sv}" direction="in" name="options"/>
- <arg type="b" direction="out" name="success"/>
- <arg type="s" direction="out" name="filename_used"/>
-</method>
-<method name="StopScreencast">
- <arg type="b" direction="out" name="success"/>
-</method>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const ScreencastIface = loadInterfaceXML('org.gnome.Shell.Screencast');
var ScreencastService = new Lang.Class({
Name: 'ScreencastService',
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
index 653454256..edfac1dd9 100644
--- a/js/ui/screenshot.js
+++ b/js/ui/screenshot.js
@@ -16,51 +16,9 @@ const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
-const ScreenshotIface = `
-<node>
-<interface name="org.gnome.Shell.Screenshot">
-<method name="ScreenshotArea">
- <arg type="i" direction="in" name="x"/>
- <arg type="i" direction="in" name="y"/>
- <arg type="i" direction="in" name="width"/>
- <arg type="i" direction="in" name="height"/>
- <arg type="b" direction="in" name="flash"/>
- <arg type="s" direction="in" name="filename"/>
- <arg type="b" direction="out" name="success"/>
- <arg type="s" direction="out" name="filename_used"/>
-</method>
-<method name="ScreenshotWindow">
- <arg type="b" direction="in" name="include_frame"/>
- <arg type="b" direction="in" name="include_cursor"/>
- <arg type="b" direction="in" name="flash"/>
- <arg type="s" direction="in" name="filename"/>
- <arg type="b" direction="out" name="success"/>
- <arg type="s" direction="out" name="filename_used"/>
-</method>
-<method name="Screenshot">
- <arg type="b" direction="in" name="include_cursor"/>
- <arg type="b" direction="in" name="flash"/>
- <arg type="s" direction="in" name="filename"/>
- <arg type="b" direction="out" name="success"/>
- <arg type="s" direction="out" name="filename_used"/>
-</method>
-<method name="SelectArea">
- <arg type="i" direction="out" name="x"/>
- <arg type="i" direction="out" name="y"/>
- <arg type="i" direction="out" name="width"/>
- <arg type="i" direction="out" name="height"/>
-</method>
-<method name="FlashArea">
- <arg type="i" direction="in" name="x"/>
- <arg type="i" direction="in" name="y"/>
- <arg type="i" direction="in" name="width"/>
- <arg type="i" direction="in" name="height"/>
-</method>
-<method name="PickColor">
- <arg type="a{sv}" direction="out" name="result"/>
-</method>
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const ScreenshotIface = loadInterfaceXML('org.gnome.Shell.Screenshot');
var ScreenshotService = new Lang.Class({
Name: 'ScreenshotService',
diff --git a/js/ui/scripting.js b/js/ui/scripting.js
index b325eb10d..495319591 100644
--- a/js/ui/scripting.js
+++ b/js/ui/scripting.js
@@ -9,6 +9,8 @@ const Shell = imports.gi.Shell;
const Main = imports.ui.main;
const Params = imports.misc.params;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
// This module provides functionality for driving the shell user interface
// in an automated fashion. The primary current use case for this is
// automated performance testing (see runPerfScript()), but it could
@@ -68,21 +70,7 @@ function waitLeisure() {
return callback => { cb = callback; };
}
-const PerfHelperIface = `
-<node>
-<interface name="org.gnome.Shell.PerfHelper">
-<method name="CreateWindow">
- <arg type="i" direction="in" />
- <arg type="i" direction="in" />
- <arg type="b" direction="in" />
- <arg type="b" direction="in" />
- <arg type="b" direction="in" />
-</method>
-<method name="WaitWindows" />
-<method name="DestroyWindows" />
-</interface>
-</node>`;
-
+const PerfHelperIface = loadInterfaceXML('org.gnome.Shell.PerfHelper');
var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface);
function PerfHelper() {
return new PerfHelperProxy(Gio.DBus.session, 'org.gnome.Shell.PerfHelper',
'/org/gnome/Shell/PerfHelper');
diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js
index 871fe9924..a200a1bdd 100644
--- a/js/ui/shellDBus.js
+++ b/js/ui/shellDBus.js
@@ -14,72 +14,10 @@ const Main = imports.ui.main;
const Screenshot = imports.ui.screenshot;
const ViewSelector = imports.ui.viewSelector;
-const GnomeShellIface = `
-<node>
-<interface name="org.gnome.Shell">
-<method name="Eval">
- <arg type="s" direction="in" name="script" />
- <arg type="b" direction="out" name="success" />
- <arg type="s" direction="out" name="result" />
-</method>
-<method name="FocusSearch"/>
-<method name="ShowOSD">
- <arg type="a{sv}" direction="in" name="params"/>
-</method>
-<method name="ShowMonitorLabels">
- <arg type="a{uv}" direction="in" name="params" />
-</method>
-<method name="ShowMonitorLabels2">
- <arg type="a{sv}" direction="in" name="params" />
-</method>
-<method name="HideMonitorLabels" />
-<method name="FocusApp">
- <arg type="s" direction="in" name="id"/>
-</method>
-<method name="ShowApplications" />
-<method name="GrabAccelerator">
- <arg type="s" direction="in" name="accelerator"/>
- <arg type="u" direction="in" name="flags"/>
- <arg type="u" direction="out" name="action"/>
-</method>
-<method name="GrabAccelerators">
- <arg type="a(su)" direction="in" name="accelerators"/>
- <arg type="au" direction="out" name="actions"/>
-</method>
-<method name="UngrabAccelerator">
- <arg type="u" direction="in" name="action"/>
- <arg type="b" direction="out" name="success"/>
-</method>
-<signal name="AcceleratorActivated">
- <arg name="action" type="u" />
- <arg name="parameters" type="a{sv}" />
-</signal>
-<property name="Mode" type="s" access="read" />
-<property name="OverviewActive" type="b" access="readwrite" />
-<property name="ShellVersion" type="s" access="read" />
-</interface>
-</node>`;
-
-const ScreenSaverIface = `
-<node>
-<interface name="org.gnome.ScreenSaver">
-<method name="Lock">
-</method>
-<method name="GetActive">
- <arg name="active" direction="out" type="b" />
-</method>
-<method name="SetActive">
- <arg name="value" direction="in" type="b" />
-</method>
-<method name="GetActiveTime">
- <arg name="value" direction="out" type="u" />
-</method>
-<signal name="ActiveChanged">
- <arg name="new_value" type="b" />
-</signal>
-<signal name="WakeUpScreen" />
-</interface>
-</node>`;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const GnomeShellIface = loadInterfaceXML('org.gnome.Shell');
+const ScreenSaverIface = loadInterfaceXML('org.gnome.ScreenSaver');
var GnomeShell = new Lang.Class({
Name: 'GnomeShellDBus',
@@ -295,44 +233,7 @@ var GnomeShell = new Lang.Class({
ShellVersion: Config.PACKAGE_VERSION
});
-const GnomeShellExtensionsIface = `
-<node>
-<interface name="org.gnome.Shell.Extensions">
-<method name="ListExtensions">
- <arg type="a{sa{sv}}" direction="out" name="extensions" />
-</method>
-<method name="GetExtensionInfo">
- <arg type="s" direction="in" name="extension" />
- <arg type="a{sv}" direction="out" name="info" />
-</method>
-<method name="GetExtensionErrors">
- <arg type="s" direction="in" name="extension" />
- <arg type="as" direction="out" name="errors" />
-</method>
-<signal name="ExtensionStatusChanged">
- <arg type="s" name="uuid"/>
- <arg type="i" name="state"/>
- <arg type="s" name="error"/>
-</signal>
-<method name="InstallRemoteExtension">
- <arg type="s" direction="in" name="uuid"/>
- <arg type="s" direction="out" name="result"/>
-</method>
-<method name="UninstallExtension">
- <arg type="s" direction="in" name="uuid"/>
- <arg type="b" direction="out" name="success"/>
-</method>
-<method name="LaunchExtensionPrefs">
- <arg type="s" direction="in" name="uuid"/>
-</method>
-<method name="ReloadExtension">
- <arg type="s" direction="in" name="uuid"/>
-</method>
-<method name="CheckForUpdates">
-</method>
-<property name="ShellVersion" type="s" access="read" />
-</interface>
-</node>`;
+const GnomeShellExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions');
var GnomeShellExtensions = new Lang.Class({
Name: 'GnomeShellExtensionsDBus',
diff --git a/js/ui/shellMountOperation.js b/js/ui/shellMountOperation.js
index 9be0a4650..4b03490d5 100644
--- a/js/ui/shellMountOperation.js
+++ b/js/ui/shellMountOperation.js
@@ -18,6 +18,8 @@ const ModalDialog = imports.ui.modalDialog;
const Params = imports.misc.params;
const ShellEntry = imports.ui.shellEntry;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
var LIST_ITEM_ICON_SIZE = 48;
const REMEMBER_MOUNT_PASSWORD_KEY = 'remember-mount-password';
@@ -436,39 +438,7 @@ var ShellProcessesDialog = new Lang.Class({
});
Signals.addSignalMethods(ShellProcessesDialog.prototype);
-const GnomeShellMountOpIface = `
-<node>
-<interface name="org.Gtk.MountOperationHandler">
-<method name="AskPassword">
- <arg type="s" direction="in" name="object_id"/>
- <arg type="s" direction="in" name="message"/>
- <arg type="s" direction="in" name="icon_name"/>
- <arg type="s" direction="in" name="default_user"/>
- <arg type="s" direction="in" name="default_domain"/>
- <arg type="u" direction="in" name="flags"/>
- <arg type="u" direction="out" name="response"/>
- <arg type="a{sv}" direction="out" name="response_details"/>
-</method>
-<method name="AskQuestion">
- <arg type="s" direction="in" name="object_id"/>
- <arg type="s" direction="in" name="message"/>
- <arg type="s" direction="in" name="icon_name"/>
- <arg type="as" direction="in" name="choices"/>
- <arg type="u" direction="out" name="response"/>
- <arg type="a{sv}" direction="out" name="response_details"/>
-</method>
-<method name="ShowProcesses">
- <arg type="s" direction="in" name="object_id"/>
- <arg type="s" direction="in" name="message"/>
- <arg type="s" direction="in" name="icon_name"/>
- <arg type="ai" direction="in" name="application_pids"/>
- <arg type="as" direction="in" name="choices"/>
- <arg type="u" direction="out" name="response"/>
- <arg type="a{sv}" direction="out" name="response_details"/>
-</method>
-<method name="Close"/>
-</interface>
-</node>`;
+const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler');
var ShellMountOperationType = {
NONE: 0,
diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
index c81f8362e..69347ba38 100644
--- a/js/ui/status/bluetooth.js
+++ b/js/ui/status/bluetooth.js
@@ -8,18 +8,12 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
-const RfkillManagerInterface = `
-<node>
-<interface name="org.gnome.SettingsDaemon.Rfkill">
-<property name="BluetoothAirplaneMode" type="b" access="readwrite" />
-<property name="BluetoothHasAirplaneMode" type="b" access="read" />
-<property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" />
-</interface>
-</node>`;
-
+const RfkillManagerInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Rfkill');
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
const HAD_BLUETOOTH_DEVICES_SETUP = 'had-bluetooth-devices-setup';
diff --git a/js/ui/status/brightness.js b/js/ui/status/brightness.js
index 50640d2db..a1fb976d8 100644
--- a/js/ui/status/brightness.js
+++ b/js/ui/status/brightness.js
@@ -8,16 +8,12 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Slider = imports.ui.slider;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const BUS_NAME = 'org.gnome.SettingsDaemon.Power';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
-const BrightnessInterface = `
-<node>
-<interface name="org.gnome.SettingsDaemon.Power.Screen">
-<property name="Brightness" type="i" access="readwrite"/>
-</interface>
-</node>`;
-
+const BrightnessInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Power.Screen');
const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface);
var Indicator = new Lang.Class({
diff --git a/js/ui/status/location.js b/js/ui/status/location.js
index b5d6c7dd3..ed4863eca 100644
--- a/js/ui/status/location.js
+++ b/js/ui/status/location.js
@@ -15,6 +15,8 @@ const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const LOCATION_SCHEMA = 'org.gnome.system.location';
const MAX_ACCURACY_LEVEL = 'max-accuracy-level';
const ENABLED = 'enabled';
@@ -40,31 +42,10 @@ function accuracyLevelToString(accuracyLevel) {
return 'NONE';
}
-var GeoclueIface = `
-<node>
- <interface name="org.freedesktop.GeoClue2.Manager">
- <property name="InUse" type="b" access="read"/>
- <property name="AvailableAccuracyLevel" type="u" access="read"/>
- <method name="AddAgent">
- <arg name="id" type="s" direction="in"/>
- </method>
- </interface>
-</node>`;
-
+var GeoclueIface = loadInterfaceXML('org.freedesktop.GeoClue2.Manager');
const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface);
-var AgentIface = `
-<node>
- <interface name="org.freedesktop.GeoClue2.Agent">
- <property name="MaxAccuracyLevel" type="u" access="read"/>
- <method name="AuthorizeApp">
- <arg name="desktop_id" type="s" direction="in"/>
- <arg name="req_accuracy_level" type="u" direction="in"/>
- <arg name="authorized" type="b" direction="out"/>
- <arg name="allowed_accuracy_level" type="u" direction="out"/>
- </method>
- </interface>
-</node>`;
+var AgentIface = loadInterfaceXML('org.freedesktop.GeoClue2.Agent');
var Indicator = new Lang.Class({
Name: 'LocationIndicator',
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index d4a09bc32..b575a726d 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -21,6 +21,8 @@ const ModemManager = imports.misc.modemManager;
const Rfkill = imports.ui.status.rfkill;
const Util = imports.misc.util;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const NMConnectionCategory = {
INVALID: 'invalid',
WIRED: 'wired',
@@ -51,26 +53,7 @@ var PortalHelperResult = {
RECHECK: 2
};
-const PortalHelperIface = `
-<node>
-<interface name="org.gnome.Shell.PortalHelper">
-<method name="Authenticate">
- <arg type="o" direction="in" name="connection" />
- <arg type="s" direction="in" name="url" />
- <arg type="u" direction="in" name="timestamp" />
-</method>
-<method name="Close">
- <arg type="o" direction="in" name="connection" />
-</method>
-<method name="Refresh">
- <arg type="o" direction="in" name="connection" />
-</method>
-<signal name="Done">
- <arg type="o" name="connection" />
- <arg type="u" name="result" />
-</signal>
-</interface>
-</node>`;
+const PortalHelperIface = loadInterfaceXML('org.gnome.Shell.PortalHelper');
const PortalHelperProxy = Gio.DBusProxy.makeProxyWrapper(PortalHelperIface);
function signalToIcon(value) {
diff --git a/js/ui/status/nightLight.js b/js/ui/status/nightLight.js
index f369d3df2..d4a2fef93 100644
--- a/js/ui/status/nightLight.js
+++ b/js/ui/status/nightLight.js
@@ -7,17 +7,12 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const BUS_NAME = 'org.gnome.SettingsDaemon.Color';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color';
-const ColorInterface = `
-<node>
-<interface name="org.gnome.SettingsDaemon.Color">
- <property name="DisabledUntilTomorrow" type="b" access="readwrite"/>
- <property name="NightLightActive" type="b" access="read"/>
-</interface>
-</node>`;
-
+const ColorInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Color');
const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface);
var Indicator = new Lang.Class({
diff --git a/js/ui/status/power.js b/js/ui/status/power.js
index cf57d8cf1..f21693f53 100644
--- a/js/ui/status/power.js
+++ b/js/ui/status/power.js
@@ -10,22 +10,12 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const BUS_NAME = 'org.freedesktop.UPower';
const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice';
-const DisplayDeviceInterface = `
-<node>
-<interface name="org.freedesktop.UPower.Device">
- <property name="Type" type="u" access="read"/>
- <property name="State" type="u" access="read"/>
- <property name="Percentage" type="d" access="read"/>
- <property name="TimeToEmpty" type="x" access="read"/>
- <property name="TimeToFull" type="x" access="read"/>
- <property name="IsPresent" type="b" access="read"/>
- <property name="IconName" type="s" access="read"/>
-</interface>
-</node>`;
-
+const DisplayDeviceInterface = loadInterfaceXML('org.freedesktop.UPower.Device');
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface);
const SHOW_BATTERY_PERCENTAGE = 'show-battery-percentage';
diff --git a/js/ui/status/rfkill.js b/js/ui/status/rfkill.js
index ecc874596..8022fb94b 100644
--- a/js/ui/status/rfkill.js
+++ b/js/ui/status/rfkill.js
@@ -8,18 +8,12 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
-const RfkillManagerInterface = `
-<node>
-<interface name="org.gnome.SettingsDaemon.Rfkill">
-<property name="AirplaneMode" type="b" access="readwrite" />
-<property name="HardwareAirplaneMode" type="b" access="read" />
-<property name="ShouldShowAirplaneMode" type="b" access="read" />
-</interface>
-</node>`;
-
+const RfkillManagerInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Rfkill');
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
var RfkillManager = new Lang.Class({
diff --git a/js/ui/status/thunderbolt.js b/js/ui/status/thunderbolt.js
index efb401a16..4584748ed 100644
--- a/js/ui/status/thunderbolt.js
+++ b/js/ui/status/thunderbolt.js
@@ -12,44 +12,12 @@ const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const PanelMenu = imports.ui.panelMenu;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
/* Keep in sync with data/org.freedesktop.bolt.xml */
-const BoltClientInterface = `
-<node>
- <interface name="org.freedesktop.bolt1.Manager">
- <property name="Probing" type="b" access="read"></property>
- <property name="AuthMode" type="s" access="readwrite"></property>
- <method name="EnrollDevice">
- <arg type="s" name="uid" direction="in"> </arg>
- <arg type="s" name="policy" direction="in"> </arg>
- <arg type="s" name="flags" direction="in"> </arg>
- <arg name="device" direction="out" type="o"> </arg>
- </method>
- <signal name="DeviceAdded">
- <arg name="device" type="o"> </arg>
- </signal>
- </interface>
-</node>`;
-
-const BoltDeviceInterface = `
-<node>
- <interface name="org.freedesktop.bolt1.Device">
- <property name="Uid" type="s" access="read"></property>
- <property name="Name" type="s" access="read"></property>
- <property name="Vendor" type="s" access="read"></property>
- <property name="Type" type="s" access="read"></property>
- <property name="Status" type="s" access="read"></property>
- <property name="Parent" type="s" access="read"></property>
- <property name="SysfsPath" type="s" access="read"></property>
- <property name="Stored" type="b" access="read"></property>
- <property name="Policy" type="s" access="read"></property>
- <property name="Key" type="s" access="read"></property>
- <property name="Label" type="s" access="read"></property>
- <property name="ConnectTime" type="t" access="read"></property>
- <property name="AuthorizeTime" type="t" access="read"></property>
- <property name="StoreTime" type="t" access="read"></property>
- </interface>
-</node>`;
+const BoltClientInterface = loadInterfaceXML('org.freedesktop.bolt1.Manager');
+const BoltDeviceInterface = loadInterfaceXML('org.freedesktop.bolt1.Device');
const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface);
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index b6627e253..116378d99 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -25,6 +25,8 @@ const EdgeDragAction = imports.ui.edgeDragAction;
const CloseDialog = imports.ui.closeDialog;
const SwitchMonitor = imports.ui.switchMonitor;
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
var SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
var MINIMIZE_WINDOW_ANIMATION_TIME = 0.2;
var SHOW_WINDOW_ANIMATION_TIME = 0.15;
@@ -42,21 +44,7 @@ var ONE_SECOND = 1000; // in ms
const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom';
const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
-const GsdWacomIface = `
-<node name="/org/gnome/SettingsDaemon/Wacom">
-<interface name="org.gnome.SettingsDaemon.Wacom">
- <method name="SetGroupModeLED">
- <arg name="device_path" direction="in" type="s"/>
- <arg name="group" direction="in" type="u"/>
- <arg name="mode" direction="in" type="u"/>
- </method>
- <method name="SetOLEDLabels">
- <arg name="device_path" direction="in" type="s"/>
- <arg name="labels" direction="in" type="as"/>
- </method>
- </interface>
-</node>`;
-
+const GsdWacomIface = loadInterfaceXML('org.gnome.SettingsDaemon.Wacom');
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
var DisplayChangeDialog = new Lang.Class({
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]