summaryrefslogtreecommitdiff
path: root/daemon/gdm-manager.c
diff options
context:
space:
mode:
authorLaurent Bigonville <bigon@bigon.be>2013-11-11 11:31:48 +0100
committerLaurent Bigonville <bigon@bigon.be>2013-11-11 18:10:11 +0100
commitb2fb259e7ba7cb029469c47a93988387349e7b2c (patch)
tree4e8462b73a4edc62dc8d58b4aa5a9b2a5e445944 /daemon/gdm-manager.c
parentc14b16af23529afb7371890e3c686457c365e8be (diff)
downloadgdm-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.c26
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;