diff options
author | Bastien Nocera <hadess@hadess.net> | 2015-01-27 19:06:46 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2015-01-27 23:15:50 +0100 |
commit | 4092695a6d4e02e3f0b07e9f10e918dfa1c13f67 (patch) | |
tree | 050d08184659bda2ca88df93afd0afa5de71c3d1 /gnome-settings-daemon | |
parent | 9c1ed01d676e4515e4aa81375a08c65ea37f0df2 (diff) | |
download | gnome-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.c | 46 | ||||
-rw-r--r-- | gnome-settings-daemon/gnome-settings-bus.h | 1 |
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 |