summaryrefslogtreecommitdiff
path: root/gnome-settings-daemon
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2015-01-27 19:06:46 +0100
committerBastien Nocera <hadess@hadess.net>2015-01-27 23:15:50 +0100
commit4092695a6d4e02e3f0b07e9f10e918dfa1c13f67 (patch)
tree050d08184659bda2ca88df93afd0afa5de71c3d1 /gnome-settings-daemon
parent9c1ed01d676e4515e4aa81375a08c65ea37f0df2 (diff)
downloadgnome-settings-daemon-4092695a6d4e02e3f0b07e9f10e918dfa1c13f67.tar.gz
daemon: Add chassis type helper
https://bugzilla.gnome.org/show_bug.cgi?id=743456
Diffstat (limited to 'gnome-settings-daemon')
-rw-r--r--gnome-settings-daemon/gnome-settings-bus.c46
-rw-r--r--gnome-settings-daemon/gnome-settings-bus.h1
2 files changed, 47 insertions, 0 deletions
diff --git a/gnome-settings-daemon/gnome-settings-bus.c b/gnome-settings-daemon/gnome-settings-bus.c
index 9e884a66..cd1a6860 100644
--- a/gnome-settings-daemon/gnome-settings-bus.c
+++ b/gnome-settings-daemon/gnome-settings-bus.c
@@ -122,6 +122,52 @@ gnome_settings_bus_get_shell_proxy (void)
return shell_proxy;
}
+char *
+gnome_settings_get_chassis_type (void)
+{
+ char *ret = NULL;
+ GError *error = NULL;
+ GVariant *inner;
+ GVariant *variant = NULL;
+ GDBusConnection *connection;
+
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM,
+ NULL,
+ &error);
+ if (connection == NULL) {
+ g_warning ("system bus not available: %s", error->message);
+ g_error_free (error);
+ goto out;
+ }
+
+ variant = g_dbus_connection_call_sync (connection,
+ "org.freedesktop.hostname1",
+ "/org/freedesktop/hostname1",
+ "org.freedesktop.DBus.Properties",
+ "Get",
+ g_variant_new ("(ss)",
+ "org.freedesktop.hostname1",
+ "Chassis"),
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
+ if (variant == NULL) {
+ g_debug ("Failed to get property '%s': %s", "Chassis", error->message);
+ g_error_free (error);
+ goto out;
+ }
+
+ g_variant_get (variant, "(v)", &inner);
+ ret = g_variant_dup_string (inner, NULL);
+ g_variant_unref (inner);
+out:
+ g_clear_object (&connection);
+ g_clear_pointer (&variant, g_variant_unref);
+ return ret;
+}
+
static gpointer
is_wayland_session (gpointer user_data)
{
diff --git a/gnome-settings-daemon/gnome-settings-bus.h b/gnome-settings-daemon/gnome-settings-bus.h
index 845a3694..1d14980e 100644
--- a/gnome-settings-daemon/gnome-settings-bus.h
+++ b/gnome-settings-daemon/gnome-settings-bus.h
@@ -33,6 +33,7 @@ GsdSessionManager *gnome_settings_bus_get_session_proxy (void);
GsdScreenSaver *gnome_settings_bus_get_screen_saver_proxy (void);
GsdShell *gnome_settings_bus_get_shell_proxy (void);
gboolean gnome_settings_is_wayland (void);
+char * gnome_settings_get_chassis_type (void);
G_END_DECLS