diff options
author | Laurent Bigonville <bigon@bigon.be> | 2013-11-11 11:31:48 +0100 |
---|---|---|
committer | Laurent Bigonville <bigon@bigon.be> | 2013-11-11 18:10:11 +0100 |
commit | b2fb259e7ba7cb029469c47a93988387349e7b2c (patch) | |
tree | 4e8462b73a4edc62dc8d58b4aa5a9b2a5e445944 /daemon/gdm-manager.c | |
parent | c14b16af23529afb7371890e3c686457c365e8be (diff) | |
download | gdm-b2fb259e7ba7cb029469c47a93988387349e7b2c.tar.gz |
Add an option to use GDM as a standalone XDMCP server
This patch add an option (xdmcp/ShowLocalGreeter) to disable the local X
console and turn GDM into a simple XDMCP server
Thanks to Patrick Monnerat and Josselin Mouette for the patch
https://bugzilla.gnome.org/show_bug.cgi?id=567522
Diffstat (limited to 'daemon/gdm-manager.c')
-rw-r--r-- | daemon/gdm-manager.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c index ad0ac63f..5108c374 100644 --- a/daemon/gdm-manager.c +++ b/daemon/gdm-manager.c @@ -65,7 +65,7 @@ struct GdmManagerPrivate gboolean started; gboolean wait_for_go; - gboolean no_console; + gboolean show_local_greeter; GDBusProxy *bus_proxy; GDBusConnection *connection; @@ -74,7 +74,8 @@ struct GdmManagerPrivate enum { PROP_0, - PROP_XDMCP_ENABLED + PROP_XDMCP_ENABLED, + PROP_SHOW_LOCAL_GREETER }; enum { @@ -544,7 +545,7 @@ gdm_manager_start (GdmManager *manager) { g_debug ("GdmManager: GDM starting to manage displays"); - if (! manager->priv->wait_for_go) { + if (! manager->priv->wait_for_go && (!manager->priv->xdmcp_enabled || manager->priv->show_local_greeter)) { gdm_display_factory_start (GDM_DISPLAY_FACTORY (manager->priv->local_factory)); } @@ -570,7 +571,9 @@ gdm_manager_set_wait_for_go (GdmManager *manager, if (! wait_for_go) { /* we got a go */ - gdm_display_factory_start (GDM_DISPLAY_FACTORY (manager->priv->local_factory)); + if (!manager->priv->xdmcp_enabled || manager->priv->show_local_greeter) { + gdm_display_factory_start (GDM_DISPLAY_FACTORY (manager->priv->local_factory)); + } #ifdef HAVE_LIBXDMCP if (manager->priv->xdmcp_enabled && manager->priv->xdmcp_factory != NULL) { @@ -643,6 +646,15 @@ gdm_manager_set_xdmcp_enabled (GdmManager *manager, } +void +gdm_manager_set_show_local_greeter (GdmManager *manager, + gboolean show_local_greeter) +{ + g_return_if_fail (GDM_IS_MANAGER (manager)); + + manager->priv->show_local_greeter = show_local_greeter; +} + static void gdm_manager_set_property (GObject *object, guint prop_id, @@ -657,6 +669,9 @@ gdm_manager_set_property (GObject *object, case PROP_XDMCP_ENABLED: gdm_manager_set_xdmcp_enabled (self, g_value_get_boolean (value)); break; + case PROP_SHOW_LOCAL_GREETER: + gdm_manager_set_show_local_greeter (self, g_value_get_boolean (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -677,6 +692,9 @@ gdm_manager_get_property (GObject *object, case PROP_XDMCP_ENABLED: g_value_set_boolean (value, self->priv->xdmcp_enabled); break; + case PROP_SHOW_LOCAL_GREETER: + g_value_set_boolean (value, self->priv->show_local_greeter); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; |