Overview of changes in lightdm 0.3.8
- * liblightdm API change:
+ * liblightdm API changes:
- ldm_greeter_start_authentication becomes ldm_greeter_login
- The existing ldm_greeter_login is now ldm_greeter_start_session
and the username parameter is not required.
+ - Drop ldm_greeter_get_default_layout (X controls the layout)
* Add guest account logins
Overview of changes in lightdm 0.3.7
# Display configuration
#
# vt = Virtual terminal to start on (0-n or 'active')
-# layout = Default keyboard layout to use in greeter and in sessions
# greeter-theme = Greeter theme
# greeter-user = User to run greeter process as
# session = Default session
#
[default-display]
vt=active
-#layout=us
#greeter-theme=example-gtk-gnome
#greeter-user=lightdm
#session=gnome
ldm_greeter_get_user_by_name
ldm_greeter_get_default_language
ldm_greeter_get_languages
-ldm_greeter_get_default_layout
ldm_greeter_get_layouts
ldm_greeter_get_layout
ldm_greeter_set_layout
@Returns:
-<!-- ##### FUNCTION ldm_greeter_get_default_layout ##### -->
-<para>
-
-</para>
-
-@greeter:
-@Returns:
-
-
<!-- ##### FUNCTION ldm_greeter_get_layouts ##### -->
<para>
gboolean have_languages;
GList *languages;
- gchar *default_layout;
XklEngine *xkl_engine;
XklConfigRec *xkl_config;
gboolean have_layouts;
{
case GREETER_MESSAGE_CONNECTED:
greeter->priv->theme = read_string (greeter, &offset);
- greeter->priv->default_layout = read_string (greeter, &offset);
greeter->priv->default_session = read_string (greeter, &offset);
greeter->priv->timed_user = read_string (greeter, &offset);
greeter->priv->login_delay = read_int (greeter, &offset);
greeter->priv->guest_account_supported = read_int (greeter, &offset) != 0;
- g_debug ("Connected theme=%s default-layout=%s default-session=%s timed-user=%s login-delay=%d guest-account-supported=%s",
+ g_debug ("Connected theme=%s default-session=%s timed-user=%s login-delay=%d guest-account-supported=%s",
greeter->priv->theme,
- greeter->priv->default_layout, greeter->priv->default_session,
+ greeter->priv->default_session,
greeter->priv->timed_user, greeter->priv->login_delay,
greeter->priv->guest_account_supported ? "true" : "false");
return greeter->priv->languages;
}
-const gchar *
-ldm_greeter_get_default_layout (LdmGreeter *greeter)
-{
- g_return_val_if_fail (LDM_IS_GREETER (greeter), NULL);
- return greeter->priv->default_layout;
-}
-
static void
layout_cb (XklConfigRegistry *config,
const XklConfigItem *item,
const GList *ldm_greeter_get_languages (LdmGreeter *greeter);
-const gchar *ldm_greeter_get_default_layout (LdmGreeter *greeter);
-
const GList *ldm_greeter_get_layouts (LdmGreeter *greeter);
void ldm_greeter_set_layout (LdmGreeter *greeter, const gchar *layout);
{
public:
QString theme;
- QString defaultLayout;
QString defaultSession;
QString timedUser;
int loginDelay;
{
case GREETER_MESSAGE_CONNECTED:
d->theme = readString(&offset);
- d->defaultLayout = readString(&offset);
d->defaultSession = readString(&offset);
d->timedUser = readString(&offset);
d->loginDelay = readInt(&offset);
d->guestAccountSupported = readInt(&offset) != 0;
- qDebug() << "Connected theme=" << d->theme << " default-layout=" << d->defaultLayout << " default-session=" << d->defaultSession << " timed-user=" << d->timedUser << " login-delay" << d->loginDelay << " guestAccountSupported" << d->guestAccountSupported;
+ qDebug() << "Connected theme=" << d->theme << " default-session=" << d->defaultSession << " timed-user=" << d->timedUser << " login-delay" << d->loginDelay << " guestAccountSupported" << d->guestAccountSupported;
/* Set timeout for default login */
if(d->timedUser != "" && d->loginDelay > 0)
return getenv("LANG");
}
-QString Greeter::defaultLayout() const
-{
- return d->defaultLayout;
-}
-
QString Greeter::defaultSession() const
{
return d->defaultSession;
QString defaultLanguage() const;
//QList<LdmLayout> layouts() const;
- QString defaultLayout() const;
QString layout() const;
QLightDM::Config *config() const;
g_free (vt);
}
- value = g_key_file_get_string (manager->priv->config, display_name, "layout", NULL);
- if (value)
- display_set_default_layout (display, value);
- g_free (value);
value = g_key_file_get_string (manager->priv->config, display_name, "session", NULL);
if (value)
display_set_default_session (display, value);
/* Number of times have logged in */
gint login_count;
- /* Layout to use in greeter/sessions */
- gchar *default_layout;
-
/* User to run greeter as */
gchar *greeter_user;
return display->priv->greeter_theme;
}
-void
-display_set_default_layout (Display *display, const gchar *layout)
-{
- g_free (display->priv->default_layout);
- display->priv->default_layout = g_strdup (layout);
-}
-
-const gchar *
-display_get_default_layout (Display *display)
-{
- return display->priv->default_layout;
-}
-
void
display_set_default_session (Display *display, const gchar *session)
{
g_key_file_remove_key (dmrc_file, "Desktop", "LCMess", NULL);
}
g_free (old_language);
- if (!g_key_file_has_key (dmrc_file, "Desktop", "Layout", NULL))
- g_key_file_set_string (dmrc_file, "Desktop", "Layout", display->priv->default_layout);
filename = g_strdup_printf ("%s.desktop", session);
path = g_build_filename (XSESSIONS_DIR, filename, NULL);
display->priv->greeter_session = greeter_new ();
greeter_set_theme (display->priv->greeter_session, display->priv->greeter_theme);
greeter_set_default_user (display->priv->greeter_session, display->priv->default_user, display->priv->timeout);
- greeter_set_layout (display->priv->greeter_session, display->priv->default_layout);
- greeter_set_session (display->priv->greeter_session, display->priv->default_session);
+ greeter_set_default_session (display->priv->greeter_session, display->priv->default_session);
g_signal_connect (G_OBJECT (display->priv->greeter_session), "start-session", G_CALLBACK (greeter_start_session_cb), display);
g_signal_connect (G_OBJECT (display->priv->greeter_session), "quit", G_CALLBACK (greeter_quit_cb), display);
session_set_username (SESSION (display->priv->greeter_session), username);
if (strcmp (GREETER_USER, "") != 0)
display->priv->greeter_user = g_strdup (GREETER_USER);
display->priv->greeter_theme = g_strdup (GREETER_THEME);
- display->priv->default_layout = g_strdup ("us"); // FIXME: Is there a better default to get?
display->priv->default_session = g_strdup (DEFAULT_SESSION);
}
g_free (self->priv->greeter_user);
g_free (self->priv->greeter_theme);
g_free (self->priv->default_user);
- g_free (self->priv->default_layout);
g_free (self->priv->default_session);
G_OBJECT_CLASS (display_parent_class)->finalize (object);
const gchar *display_get_greeter_theme (Display *display);
-void display_set_default_layout (Display *display, const gchar *layout);
-
-const gchar *display_get_default_layout (Display *display);
-
void display_set_default_session (Display *display, const gchar *session);
const gchar *display_get_default_session (Display *display);
struct GreeterPrivate
{
+ /* TRUE if the greeter has connected to the daemon pipe */
gboolean connected;
/* Pipe to communicate to greeter */
int pipe[2];
+
+ /* Buffer for data read from greeter */
gchar *read_buffer;
gsize n_read;
-
+
+ /* Theme for greeter to use */
gchar *theme;
- gchar *layout;
- gchar *session;
+
+ /* Default session to use */
+ gchar *default_session;
+
+ /* Default user to log in as, or NULL for no default */
gchar *default_user;
+
+ /* Time in seconds to wait until logging in as default user */
gint autologin_timeout;
+ /* Timeout for greeter to respond to quit request */
guint quit_timeout;
-
+
+ /* PAM session being constructed by the greeter */
PAMSession *pam_session;
};
}
void
-greeter_set_layout (Greeter *greeter, const gchar *layout)
-{
- g_free (greeter->priv->layout);
- greeter->priv->layout = g_strdup (layout);
-}
-
-const gchar *
-greeter_get_layout (Greeter *greeter)
-{
- return greeter->priv->layout;
-}
-
-void
-greeter_set_session (Greeter *greeter, const gchar *session)
+greeter_set_default_session (Greeter *greeter, const gchar *session)
{
- g_free (greeter->priv->session);
- greeter->priv->session = g_strdup (session);
+ g_free (greeter->priv->default_session);
+ greeter->priv->default_session = g_strdup (session);
}
const gchar *
-greeter_get_session (Greeter *greeter)
+greeter_get_default_session (Greeter *greeter)
{
- return greeter->priv->session;
+ return greeter->priv->default_session;
}
PAMSession *
theme = g_build_filename (THEME_DIR, greeter->priv->theme, "index.theme", NULL);
- write_header (greeter, GREETER_MESSAGE_CONNECTED, string_length (theme) + string_length (greeter->priv->layout) + string_length (greeter->priv->session) + string_length (greeter->priv->default_user ? greeter->priv->default_user : "") + int_length () + int_length ());
+ write_header (greeter, GREETER_MESSAGE_CONNECTED, string_length (theme) + string_length (greeter->priv->default_session) + string_length (greeter->priv->default_user ? greeter->priv->default_user : "") + int_length () + int_length ());
write_string (greeter, theme);
- write_string (greeter, greeter->priv->layout);
- write_string (greeter, greeter->priv->session);
+ write_string (greeter, greeter->priv->default_session);
write_string (greeter, greeter->priv->default_user ? greeter->priv->default_user : "");
write_int (greeter, greeter->priv->autologin_timeout);
write_int (greeter, FALSE);
return;
}*/
- g_debug ("Greeter start session %s with language", session, language);
+ g_debug ("Greeter start session %s with language %s", session, language);
g_signal_emit (greeter, signals[START_SESSION], 0, session, language);
}
g_free (self->priv->read_buffer);
g_free (self->priv->theme);
- g_free (self->priv->layout);
- g_free (self->priv->session);
+ g_free (self->priv->default_session);
g_free (self->priv->default_user);
G_OBJECT_CLASS (greeter_parent_class)->finalize (object);
const gchar *greeter_get_layout (Greeter *greeter);
-void greeter_set_session (Greeter *greeter, const gchar *session);
+void greeter_set_default_session (Greeter *greeter, const gchar *session);
-const gchar *greeter_get_session (Greeter *greeter);
+const gchar *greeter_get_default_session (Greeter *greeter);
PAMSession *greeter_get_pam_session (Greeter *greeter);