# xserver-layout = Layout to pass to X server
# xserver-config = Config file to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
+# xserver-share = True if the X server is shared for both greeter and session
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
#xserver-layout=
#xserver-config=
#xserver-allow-tcp=false
+#xserver-share=true
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
config_set_string (config_get_instance (), "SeatDefaults", "type", "xlocal");
if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-command"))
config_set_string (config_get_instance (), "SeatDefaults", "xserver-command", "X");
+ if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-share"))
+ config_set_boolean (config_get_instance (), "SeatDefaults", "xserver-share", TRUE);
if (!config_has_key (config_get_instance (), "SeatDefaults", "start-session"))
config_set_boolean (config_get_instance (), "SeatDefaults", "start-session", TRUE);
if (!config_has_key (config_get_instance (), "SeatDefaults", "allow-guest"))
seat_xlocal_setup (Seat *seat)
{
seat_set_can_switch (seat, TRUE);
+ seat_set_share_display_server (seat, seat_get_boolean_property (seat, "xserver-share"));
SEAT_CLASS (seat_xlocal_parent_class)->setup (seat);
}
/* TRUE if able to switch users */
gboolean can_switch;
+ /* TRUE if display server can be shared for sessions */
+ gboolean share_display_server;
+
/* Name of guest account */
gchar *guest_username;
seat->priv->can_switch = can_switch;
}
+void
+seat_set_share_display_server (Seat *seat, gboolean share_display_server)
+{
+ g_return_if_fail (seat != NULL);
+
+ seat->priv->share_display_server = share_display_server;
+}
+
gboolean
seat_start (Seat *seat)
{
display_set_allow_guest (display, seat_get_allow_guest (seat));
display_set_greeter_allow_guest (display, seat_get_greeter_allow_guest (seat));
display_set_user_session (display, SESSION_TYPE_LOCAL, seat_get_string_property (seat, "user-session"));
+ display_set_share_display_server (display, seat->priv->share_display_server);
seat->priv->displays = g_list_append (seat->priv->displays, display);
{
seat->priv = G_TYPE_INSTANCE_GET_PRIVATE (seat, SEAT_TYPE, SeatPrivate);
seat->priv->properties = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ seat->priv->share_display_server = TRUE;
}
static void
void seat_set_can_switch (Seat *seat, gboolean can_switch);
+void seat_set_share_display_server (Seat *seat, gboolean share_display_server);
+
gboolean seat_start (Seat *seat);
GList *seat_get_displays (Seat *seat);