]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Finished rearranging config
authorRobert Ancell <robert.ancell@canonical.com>
Fri, 15 Jul 2011 14:36:03 +0000 (00:36 +1000)
committerRobert Ancell <robert.ancell@canonical.com>
Fri, 15 Jul 2011 14:36:03 +0000 (00:36 +1000)
18 files changed:
configure.ac
data/lightdm.conf
src/display-manager.c
src/display.c
src/display.h
src/seat-local.c
src/seat-xdmcp-client.c
src/seat-xdmcp-session.c
src/seat-xdmcp-session.h
src/seat.c
src/seat.h
src/xserver.c
src/xserver.h
tests/scripts/autologin-logout.conf
tests/scripts/autologin-xserver-crash.conf
tests/scripts/autologin.conf
tests/scripts/xdmcp-login.conf
tests/scripts/xserver-fail-start.conf

index be71c10533888ec1d92e5e35bc1a7410d7cead35..bad0f598a96ce0064161f184d1fce174df61acc2 100644 (file)
@@ -213,17 +213,6 @@ AC_ARG_WITH(default-xsession,
 AC_SUBST(DEFAULT_XSESSION)
 AC_DEFINE_UNQUOTED(DEFAULT_XSESSION, "$DEFAULT_XSESSION", Default X session)
 
-GREETER_USER=
-AC_ARG_WITH(greeter-user,
-            AS_HELP_STRING(--with-greeter-user=<username>,
-                           User to run greeter as),
-    if test x$withval != x; then
-        GREETER_USER="$withval"
-    fi
-)
-AC_SUBST(GREETER_USER)
-AC_DEFINE_UNQUOTED(GREETER_USER, "$GREETER_USER", User to run greeter as)
-
 DEFAULT_PAM_SERVICE=lightdm
 AC_ARG_WITH(default-pam-service,
             AS_HELP_STRING(--with-default-pam-service=<name>,
@@ -331,7 +320,6 @@ echo "
         Cache dir:                $CACHE_DIR
         X session dir:            $XSESSIONS_DIR
         Default X session:        $DEFAULT_XSESSION
-        Greeter user:             $GREETER_USER
         PAM service:              $DEFAULT_PAM_SERVICE
         PAM service (autologins): $DEFAULT_PAM_AUTOLOGIN_SERVICE
         Greeter theme directory:  $GREETER_THEME_DIR
index f0f80316104a219c22d62f97d99858c2c02be1b1..a137cfec81720ad64ed662d6f5d1207b7a1750fa 100644 (file)
@@ -1,40 +1,40 @@
 #
 # General configuration
 #
+# greeter-user = User to run greeter as
 # minimum-display-number = Minimum display number to use for X servers
 # minimum-vt = First VT to run displays on
 # user-authority-in-system-dir = True if session authority should be in the system location
-# greeter-user = User to run greeter as
 # seats = list of seats to start displays on
 #
 [LightDM]
+#greeter-user=lightdm
 #minimum-display-number=0
 #minimum-vt=7
 #user-authority-in-system-dir=false
-#greeter-user=lightdm
-seats=seat-0
+seats=Seat0
 
 #
 # Seat defaults
 #
+# xserver-command = X server command to run
 # xserver-layout = Layout to pass to X server
 # xserver-config = Config file to pass to X server
-# xserver-command = X server command to run
-# greeter-them = Greeter theme to use
+# greeter-theme = Greeter theme to use
 # xsession = X session to load by default
 # xsession-wrapper = Wrapper script to run X session with
 # autologin-user = User to log in with by default
 # autologin-user-timeout = Number of seconds to wait before loading default user
 #
 #[Defaults]
+#xserver-command=/usr/bin/X
 #xserver-layout=
 #xserver-config=
-#xserver-command=/usr/bin/X
 #greeter-theme=example-gtk-gnome
-#xsession=
+#xsession=gnome
 #xsession-wrapper=
 #autologin-user=
-#autologin-user-timeout=5
+#autologin-user-timeout=0
 
 #
 # Seat configuration
@@ -42,9 +42,9 @@ seats=seat-0
 # xdmcp-manager = XDMCP manager to connect to
 # xdmcp-port = XDMCP UDP/IP port to communicate on
 # key = Authentication key to use
-# Can override any of the options from defaults
+# Can override any of the options from defaults e.g. greeter-theme=kde
 #
-[seat-0]
+[Seat0]
 #xdmcp-manager=
 #xdmcp-port=177
 #key=0x0123456789ABCD
index fb272a7537f6ccd5b2c4efa2e120c20729721ced..87cd5834058d6e1ea39b8256117a65be32c7805f 100644 (file)
@@ -78,7 +78,7 @@ xdmcp_session_cb (XDMCPServer *server, XDMCPSession *session, DisplayManager *ma
     SeatXDMCPSession *seat;
     gboolean result;
 
-    seat = seat_xdmcp_session_new (session);  
+    seat = seat_xdmcp_session_new ("XDMCPServer", session);
     result = add_seat (manager, SEAT (seat));
     g_object_unref (seat);
   
index 25b58513945fa312ab256b06a19f845d5c44529c..91f720eb793e5b35bae621ca5193144517e9bcf4 100644 (file)
@@ -98,7 +98,7 @@ G_DEFINE_TYPE (Display, display, G_TYPE_OBJECT);
 static gboolean start_greeter (Display *display);
 
 Display *
-display_new (XServer *xserver)
+display_new (const gchar *config_section, XServer *xserver)
 {
     Display *self = g_object_new (DISPLAY_TYPE, NULL);
 
@@ -108,6 +108,19 @@ display_new (XServer *xserver)
     self->priv->pam_autologin_service = g_strdup (DEFAULT_PAM_AUTOLOGIN_SERVICE);
     self->priv->xserver = g_object_ref (xserver);
 
+    self->priv->greeter_user = config_get_string (config_get_instance (), config_section, "greeter-user");
+    if (!self->priv->greeter_user)
+        self->priv->greeter_user = config_get_string (config_get_instance (), "Defaults", "greeter-user");
+    self->priv->greeter_theme = config_get_string (config_get_instance (), config_section, "greeter-theme");
+    if (!self->priv->greeter_theme)
+        self->priv->greeter_theme = config_get_string (config_get_instance (), "Defaults", "greeter-theme");
+    self->priv->default_session = config_get_string (config_get_instance (), config_section, "xsession");
+    if (!self->priv->default_session)
+        self->priv->default_session = config_get_string (config_get_instance (), "Defaults", "xsession");
+    self->priv->session_wrapper = config_get_string (config_get_instance (), config_section, "xsession-wrapper");
+    if (!self->priv->session_wrapper)
+        self->priv->session_wrapper = config_get_string (config_get_instance (), "Defaults", "xsession-wrapper");
+
     return self;
 }
 
@@ -967,10 +980,6 @@ static void
 display_init (Display *display)
 {
     display->priv = G_TYPE_INSTANCE_GET_PRIVATE (display, DISPLAY_TYPE, DisplayPrivate);
-    if (strcmp (GREETER_USER, "") != 0)
-        display->priv->greeter_user = g_strdup (GREETER_USER);
-    display->priv->greeter_theme = config_get_string (config_get_instance (), "LightDM", "default-greeter-theme");
-    display->priv->default_session = config_get_string (config_get_instance (), "LightDM", "default-xsession");
 }
 
 static void
index dbcd04a32eae10483729cd49c235eb381db519c9..cbdaebdeb5932bcdba83e1531ee361a2cc8abd3e 100644 (file)
@@ -42,7 +42,7 @@ typedef struct
 
 GType display_get_type (void);
 
-Display *display_new (XServer *xserver);
+Display *display_new (const gchar *config_section, XServer *xserver);
 
 XServer *display_get_xserver (Display *display);
 
index e59a2a06a87e57d16453215859c628631a1998f1..60b2e114a2602444bf4e8b5490588daaf40fc471 100644 (file)
@@ -28,19 +28,11 @@ SeatLocal *
 seat_local_new (const gchar *config_section)
 {
     SeatLocal *seat;
-    gchar *username;
-    guint timeout;
 
     seat = g_object_new (SEAT_LOCAL_TYPE, NULL);
     seat->priv->config_section = g_strdup (config_section);
-
+    seat_load_config (SEAT (seat), config_section);
     seat_set_can_switch (SEAT (seat), TRUE);
-    username = config_get_string (config_get_instance (), config_section, "autologin-user");
-    timeout = config_get_integer (config_get_instance (), config_section, "autologin-user-timeout");
-    if (timeout < 0)
-        timeout = 0;
-    if (username)
-        seat_set_autologin_user (SEAT (seat), username, timeout);
 
     return seat;
 }
@@ -51,14 +43,13 @@ seat_local_add_display (Seat *seat)
     XServer *xserver;
     XAuthorization *authorization = NULL;
     gchar *dir, *filename, *path;
-    gchar *xserver_command, *xserver_layout, *xserver_config;
     gchar *number;
     gchar hostname[1024];
     Display *display;
 
     g_debug ("Starting display");
 
-    xserver = xserver_new (XSERVER_TYPE_LOCAL, NULL, xserver_get_free_display_number ());
+    xserver = xserver_new (SEAT_LOCAL (seat)->priv->config_section, XSERVER_TYPE_LOCAL, NULL, xserver_get_free_display_number ());
     number = g_strdup_printf ("%d", xserver_get_display_number (xserver));
     gethostname (hostname, 1024);
     authorization = xauth_new_cookie (XAUTH_FAMILY_LOCAL, hostname, number);
@@ -78,30 +69,10 @@ seat_local_add_display (Seat *seat)
     g_free (dir);
     g_free (path);
 
-    xserver_command = config_get_string (config_get_instance (), "Defaults", "xserver-command");
-    if (!xserver_command)
-        xserver_command = config_get_string (config_get_instance (), SEAT_LOCAL (seat)->priv->config_section, "xserver-command");
-    if (xserver_command)
-        xserver_set_command (xserver, xserver_command);
-    g_free (xserver_command);
     if (config_get_boolean (config_get_instance (), "LightDM", "use-xephyr"))
         xserver_set_command (xserver, "Xephyr");
 
-    xserver_layout = config_get_string (config_get_instance (), "Defaults", "layout");
-    if (!xserver_layout)
-        xserver_layout = config_get_string (config_get_instance (), SEAT_LOCAL (seat)->priv->config_section, "xserver-layout");
-    if (xserver_layout)
-        xserver_set_layout (xserver, xserver_layout);
-    g_free (xserver_layout);
-
-    xserver_config = config_get_string (config_get_instance (), "Defaults", "xserver-config");
-    if (!xserver_config)
-        xserver_config = config_get_string (config_get_instance (), SEAT_LOCAL (seat)->priv->config_section, "xserver-config");
-    if (xserver_config)
-        xserver_set_config_file (xserver, xserver_config);
-    g_free (xserver_config);
-
-    display = display_new (xserver);
+    display = display_new (SEAT_LOCAL (seat)->priv->config_section, xserver);
     g_object_unref (xserver);
 
     return display;
index d30e8405b93e965021fd5feb4d187bdcffb78b61..f54a3e1a8a3d1a15b951f2c8b14bee466618cbe5 100644 (file)
@@ -34,6 +34,7 @@ seat_xdmcp_client_new (const gchar *config_section)
 
     seat = g_object_new (SEAT_XDMCP_CLIENT_TYPE, NULL);
     seat->priv->config_section = g_strdup (config_section);
+    seat_load_config (SEAT (seat), config_section);
 
     return seat;
 }
@@ -44,7 +45,6 @@ seat_xdmcp_client_add_display (Seat *seat)
     XServer *xserver;
     XAuthorization *authorization = NULL;
     gchar *xdmcp_manager, *dir, *filename, *path;
-    gchar *xserver_command, *xserver_layout, *xserver_config;
     gint port;
     //gchar *key;
   
@@ -53,7 +53,7 @@ seat_xdmcp_client_add_display (Seat *seat)
     g_debug ("Starting seat %s", SEAT_XDMCP_CLIENT (seat)->priv->config_section);
 
     xdmcp_manager = config_get_string (config_get_instance (), SEAT_XDMCP_CLIENT (seat)->priv->config_section, "xdmcp-manager");
-    xserver = xserver_new (XSERVER_TYPE_LOCAL_TERMINAL, xdmcp_manager, xserver_get_free_display_number ());
+    xserver = xserver_new (SEAT_XDMCP_CLIENT (seat)->priv->config_section, XSERVER_TYPE_LOCAL_TERMINAL, xdmcp_manager, xserver_get_free_display_number ());
     g_free (xdmcp_manager);
 
     port = config_get_integer (config_get_instance (), SEAT_XDMCP_CLIENT (seat)->priv->config_section, "xdmcp-port");
@@ -83,30 +83,10 @@ seat_xdmcp_client_add_display (Seat *seat)
     g_free (dir);
     g_free (path);
 
-    xserver_command = config_get_string (config_get_instance (), "Defaults", "xserver-command");
-    if (!xserver_command)
-        xserver_command = config_get_string (config_get_instance (), SEAT_XDMCP_CLIENT (seat)->priv->config_section, "xserver-command");
-    if (xserver_command)
-        xserver_set_command (xserver, xserver_command);
-    g_free (xserver_command);
     if (config_get_boolean (config_get_instance (), "LightDM", "use-xephyr"))
         xserver_set_command (xserver, "Xephyr");
 
-    xserver_layout = config_get_string (config_get_instance (), "Defaults", "layout");
-    if (!xserver_layout)
-        xserver_layout = config_get_string (config_get_instance (), SEAT_XDMCP_CLIENT (seat)->priv->config_section, "xserver-layout");
-    if (xserver_layout)
-        xserver_set_layout (xserver, xserver_layout);
-    g_free (xserver_layout);
-
-    xserver_config = config_get_string (config_get_instance (), "Defaults", "xserver-config");
-    if (!xserver_config)
-        xserver_config = config_get_string (config_get_instance (), SEAT_XDMCP_CLIENT (seat)->priv->config_section, "xserver-config");
-    if (xserver_config)
-        xserver_set_config_file (xserver, xserver_config);
-    g_free (xserver_config);
-
-    SEAT_XDMCP_CLIENT (seat)->priv->display = g_object_ref (display_new (xserver));
+    SEAT_XDMCP_CLIENT (seat)->priv->display = g_object_ref (display_new (SEAT_XDMCP_CLIENT (seat)->priv->config_section, xserver));
     g_object_unref (xserver);
 
     return SEAT_XDMCP_CLIENT (seat)->priv->display;
index e9d6ad3e66de60e4ca75a701f48ed75a38be394d..2616d06b5d179c33e8c94205f1fce0e68cfec3ec 100644 (file)
@@ -16,6 +16,9 @@
 
 struct SeatXDMCPSessionPrivate
 {
+    /* The section in the config for this seat */
+    gchar *config_section;
+
     /* Session being serviced */
     XDMCPSession *session;
 };
@@ -23,12 +26,13 @@ struct SeatXDMCPSessionPrivate
 G_DEFINE_TYPE (SeatXDMCPSession, seat_xdmcp_session, SEAT_TYPE);
 
 SeatXDMCPSession *
-seat_xdmcp_session_new (XDMCPSession *session)
+seat_xdmcp_session_new (const gchar *config_section, XDMCPSession *session)
 {
     SeatXDMCPSession *seat;
 
     seat = g_object_new (SEAT_XDMCP_SESSION_TYPE, NULL);
     seat->priv->session = g_object_ref (session);
+    seat_load_config (SEAT (seat), config_section);
 
     return seat;
 }
@@ -42,7 +46,7 @@ seat_xdmcp_session_add_display (Seat *seat)
 
     // FIXME: Try IPv6 then fallback to IPv4
     address = g_inet_address_to_string (G_INET_ADDRESS (xdmcp_session_get_address (SEAT_XDMCP_SESSION (seat)->priv->session)));
-    xserver = xserver_new (XSERVER_TYPE_REMOTE, address, xdmcp_session_get_display_number (SEAT_XDMCP_SESSION (seat)->priv->session));
+    xserver = xserver_new (SEAT_XDMCP_SESSION (seat)->priv->config_section, XSERVER_TYPE_REMOTE, address, xdmcp_session_get_display_number (SEAT_XDMCP_SESSION (seat)->priv->session));
 
     if (strcmp (xdmcp_session_get_authorization_name (SEAT_XDMCP_SESSION (seat)->priv->session), "") != 0)
     {
@@ -63,7 +67,7 @@ seat_xdmcp_session_add_display (Seat *seat)
     }
     g_free (address);
 
-    display = display_new (xserver);
+    display = display_new (SEAT_XDMCP_SESSION (seat)->priv->config_section, xserver);
     g_object_unref (xserver);
 
     return display;
@@ -78,9 +82,11 @@ seat_xdmcp_session_init (SeatXDMCPSession *seat)
 static void
 seat_xdmcp_session_finalize (GObject *object)
 {
-    //SeatXDMCPSession *self;
+    SeatXDMCPSession *self;
+
+    self = SEAT_XDMCP_SESSION (object);
 
-    //self = SEAT_XDMCP_SESSION (object);
+    g_free (self->priv->config_section);
 
     G_OBJECT_CLASS (seat_xdmcp_session_parent_class)->finalize (object);
 }
index 9c8dba278b30a8c3902506abdf2bc2979e8cf996..0b84cbf059704600f04fd7bcd188ef28ada9b542 100644 (file)
@@ -35,7 +35,7 @@ typedef struct
 
 GType seat_xdmcp_session_get_type (void);
 
-SeatXDMCPSession *seat_xdmcp_session_new (XDMCPSession *session);
+SeatXDMCPSession *seat_xdmcp_session_new (const gchar *config_section, XDMCPSession *session);
 
 G_END_DECLS
 
index 7c335e465a9720d88d600fb640eee01e14d5e01d..43dfc45f698a112d1eae2c80d8dd77986c5de4cb 100644 (file)
@@ -44,6 +44,24 @@ struct SeatPrivate
 
 G_DEFINE_TYPE (Seat, seat, G_TYPE_OBJECT);
 
+void
+seat_load_config (Seat *seat, const gchar *config_section)
+{
+    gchar *username;
+    guint timeout;
+
+    username = config_get_string (config_get_instance (), config_section, "autologin-user");
+    if (!username)
+        username = config_get_string (config_get_instance (), "Defaults", "autologin-user");
+    if (config_has_key (config_get_instance (), config_section, "autologin-user-timeout"))
+        timeout = config_get_integer (config_get_instance (), config_section, "autologin-user-timeout");
+    else
+        timeout = config_get_integer (config_get_instance (), "Defaults", "autologin-user-timeout");
+    if (timeout < 0)
+        timeout = 0;
+    seat_set_autologin_user (SEAT (seat), username, timeout);
+}
+
 void
 seat_set_can_switch (Seat *seat, gboolean can_switch)
 {
index 36f907e923a8a6be9b17f01b6ceaa98eef4d9245..025d0ccf6333ea26147059fb1b8cfc694e95b297 100644 (file)
@@ -45,6 +45,8 @@ typedef struct
 
 GType seat_get_type (void);
 
+void seat_load_config (Seat *seat, const gchar *config_section);
+
 void seat_set_can_switch (Seat *seat, gboolean can_switch);
 
 void seat_set_autologin_user (Seat *seat, const gchar *username, guint timeout);
index 9e3473abedbc12167c76188c03cd7757919589d5..4dadc202219c9634cd6b3ac7cde4387a9e01c3e1 100644 (file)
@@ -110,13 +110,25 @@ xserver_release_display_number (guint number)
 }
 
 XServer *
-xserver_new (XServerType type, const gchar *hostname, gint display_number)
+xserver_new (const gchar *config_section, XServerType type, const gchar *hostname, gint display_number)
 {
     XServer *self = g_object_new (XSERVER_TYPE, NULL);
 
     self->priv->type = type;
     self->priv->hostname = g_strdup (hostname);
     self->priv->display_number = display_number;
+
+    self->priv->command = config_get_string (config_get_instance (), "Defaults", "xserver-command");
+    if (!self->priv->command)
+        self->priv->command = config_get_string (config_get_instance (), config_section, "xserver-command");
+
+    self->priv->layout = config_get_string (config_get_instance (), "Defaults", "layout");
+    if (!self->priv->layout)
+        self->priv->layout = config_get_string (config_get_instance (), config_section, "xserver-layout");
+
+    self->priv->config_file = config_get_string (config_get_instance (), "Defaults", "xserver-config");
+    if (!self->priv->config_file)
+        self->priv->config_file = config_get_string (config_get_instance (), config_section, "xserver-config");
   
     return self;
 }
index 185c7b861dfeb704dbc616cc30eaeab686c6ee5e..3ac6f1e1c5e677ec5a089c2eeae80e5ea9160baf 100644 (file)
@@ -53,7 +53,7 @@ void xserver_release_display_number (guint number);
 
 GType xserver_get_type (void);
 
-XServer *xserver_new (XServerType type, const gchar *hostname, gint display_number);
+XServer *xserver_new (const gchar *config_section, XServerType type, const gchar *hostname, gint display_number);
 
 XServerType xserver_get_server_type (XServer *server);
 
index 698093ab58d6e4b4c0e21c62a8f709ca25aec9d4..a749f8d33d092abab8d439c6ccd4b1ac8949c28a 100644 (file)
@@ -1,8 +1,8 @@
 [LightDM]
 seats=test-seat
 
-[test-seat]
-default-user=alice
+[Defaults]
+autologin-user=alice
 
 [test-session-config]
 logout=true
index aa49c563d91a2d36712a589f48d45a676ea58cd8..54e0287f493c68cd8229f4a57760a82c866e83b4 100644 (file)
@@ -1,8 +1,8 @@
 [LightDM]
 seats=test-seat
 
-[test-seat]
-default-user=alice
+[Defaults]
+autologin-user=alice
 
 [test-session-config]
 crash-xserver=true
index c17c3f32903d673312568d96049c62fbc5f53a2a..d060c1063adc6fd305d101b3f5f55fa5c6a5cee8 100644 (file)
@@ -1,5 +1,5 @@
 [LightDM]
 seats=test-seat
 
-[test-seat]
-default-user=alice
+[Defaults]
+autologin-user=alice
index 755c70bf98f9213784dc1ef64b8408f44f5c3ebd..5a8ee8b4ce18f126d996785e51682fb2fdad099b 100644 (file)
@@ -1,4 +1,4 @@
-[xdmcp]
+[XDMCPServer]
 enabled=true
 port=9999
 
index b4aa0492f3aa982165ac710c41535f8606bb44ce..5b30b948345a25e63a5269dffbcf8ffc7afecfc7 100644 (file)
@@ -1,8 +1,5 @@
 [LightDM]
 seats=test-seat
 
-[test-seat]
-xserver=test-xserver
-
 [test-xserver-config]
 return-value=1