LdmGreeter

LdmGreeter — LightDM greeter object

Synopsis

#include <lightdm/greeter.h>

                    LdmGreeter;
LdmGreeter *        ldm_greeter_new                     (void);
gboolean            ldm_greeter_connect                 (LdmGreeter *greeter);
const gchar *       ldm_greeter_get_hostname            (LdmGreeter *greeter);
const gchar *       ldm_greeter_get_theme               (LdmGreeter *greeter);
gchar *             ldm_greeter_get_string_property     (LdmGreeter *greeter,
                                                         const gchar *name);
gint                ldm_greeter_get_integer_property    (LdmGreeter *greeter,
                                                         const gchar *name);
gboolean            ldm_greeter_get_boolean_property    (LdmGreeter *greeter,
                                                         const gchar *name);
gint                ldm_greeter_get_num_users           (LdmGreeter *greeter);
const GList *       ldm_greeter_get_users               (LdmGreeter *greeter);
const gchar *       ldm_greeter_get_default_language    (LdmGreeter *greeter);
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);
const gchar *       ldm_greeter_get_layout              (LdmGreeter *greeter);
void                ldm_greeter_set_layout              (LdmGreeter *greeter,
                                                         const gchar *layout);
const GList *       ldm_greeter_get_sessions            (LdmGreeter *greeter);
const gchar *       ldm_greeter_get_default_session     (LdmGreeter *greeter);
const gchar *       ldm_greeter_get_timed_login_user    (LdmGreeter *greeter);
gint                ldm_greeter_get_timed_login_delay   (LdmGreeter *greeter);
void                ldm_greeter_cancel_timed_login      (LdmGreeter *greeter);
void                ldm_greeter_start_authentication    (LdmGreeter *greeter,
                                                         const char *username);
void                ldm_greeter_provide_secret          (LdmGreeter *greeter,
                                                         const gchar *secret);
void                ldm_greeter_cancel_authentication   (LdmGreeter *greeter);
gboolean            ldm_greeter_get_is_authenticated    (LdmGreeter *greeter);
const gchar *       ldm_greeter_get_authentication_user (LdmGreeter *greeter);
void                ldm_greeter_login                   (LdmGreeter *greeter,
                                                         const gchar *username,
                                                         const gchar *session,
                                                         const gchar *language);
gboolean            ldm_greeter_get_can_suspend         (LdmGreeter *greeter);
void                ldm_greeter_suspend                 (LdmGreeter *greeter);
gboolean            ldm_greeter_get_can_hibernate       (LdmGreeter *greeter);
void                ldm_greeter_hibernate               (LdmGreeter *greeter);
gboolean            ldm_greeter_get_can_restart         (LdmGreeter *greeter);
void                ldm_greeter_restart                 (LdmGreeter *greeter);
gboolean            ldm_greeter_get_can_shutdown        (LdmGreeter *greeter);
void                ldm_greeter_shutdown                (LdmGreeter *greeter);
gboolean            ldm_greeter_get_user_defaults       (LdmGreeter *greeter,
                                                         const gchar *username,
                                                         gchar **language,
                                                         gchar **layout,
                                                         gchar **session);

Object Hierarchy

  GObject
   +----LdmGreeter

Properties

  "authentication-user"      gchar*                : Read
  "can-hibernate"            gboolean              : Read
  "can-restart"              gboolean              : Read
  "can-shutdown"             gboolean              : Read
  "can-suspend"              gboolean              : Read
  "default-session"          gchar*                : Read / Write
  "hostname"                 gchar*                : Read
  "is-authenticated"         gboolean              : Read
  "layout"                   gchar*                : Read / Write
  "login-delay"              gint                  : Read
  "num-users"                gint                  : Read
  "timed-login-user"         gchar*                : Read

Signals

  "authentication-complete"                        : Run Last
  "quit"                                           : Run Last
  "show-error"                                     : Run Last
  "show-message"                                   : Run Last
  "show-prompt"                                    : Run Last
  "timed-login"                                    : Run Last

Description

LdmGreeter is an object that manages the connection to the LightDM server and provides common greeter functionality.

To connect to the display manager instanciate a LdmGreeter object from inside the greeter process:

Example 1. Connecting to the display manager

LdmGreeter *greeter = ldm_greeter_new ();
if (!ldm_greeter_connect (LDM_GREETER (greeter))) {
    // Log an error
    exit (0);
}


Information on how to connect to the display manager is passed using environment variables.

Once connected, start an authentication conversation like this:

Example 2. Example Authorization Conversation

static void show_prompt_cb (LdmGreeter *greeter, const char *text)
{
    // Show the user the message and prompt for some response
    gchar *secret = prompt_user (text);
    // Give the result to the user
    ldm_greeter_provide_secret (greeter, secret);
}
static void authentication_complete_cb (LdmGreeter *greeter)
{
    if (ldm_greeter_get_is_authenticated (greeter)) {
        // Log in to this session.
        ldm_greeter_login (greeter, ldm_greeter_get_authentication_user (greeter), ldm_greeter_get_default_session (greeter));
    }
    else {
        // Display a warning and reset the greeter
        reset_login_screen ();
    }
}
static void quit_cb (LdmGreeter *greeter)
{
    // Clean up
    // ...
    exit (0);
}
g_object_connect (G_OBJECT (greeter), "show-prompt", G_CALLBACK (show_prompt_cb), NULL);
g_object_connect (G_OBJECT (greeter), "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
g_object_connect (G_OBJECT (greeter), "quit", G_CALLBACK (quit_cb), NULL);


Details

LdmGreeter

typedef struct _LdmGreeter LdmGreeter;


ldm_greeter_new ()

LdmGreeter *        ldm_greeter_new                     (void);

Create a new greeter.

Returns :

the new LdmGreeter

ldm_greeter_connect ()

gboolean            ldm_greeter_connect                 (LdmGreeter *greeter);

Connects the greeter to the display manager.

greeter :

The greeter to connect

Returns :

TRUE if successfully connected

ldm_greeter_get_hostname ()

const gchar *       ldm_greeter_get_hostname            (LdmGreeter *greeter);

greeter :

a LdmGreeter

Returns :

The host this greeter is displaying

ldm_greeter_get_theme ()

const gchar *       ldm_greeter_get_theme               (LdmGreeter *greeter);

greeter :

a LdmGreeter

Returns :

The theme this greeter is using

ldm_greeter_get_string_property ()

gchar *             ldm_greeter_get_string_property     (LdmGreeter *greeter,
                                                         const gchar *name);

greeter :

a LdmGreeter

name :

the name of the property to get

Returns :

The value of this property or NULL if it is not defined

ldm_greeter_get_integer_property ()

gint                ldm_greeter_get_integer_property    (LdmGreeter *greeter,
                                                         const gchar *name);

greeter :

a LdmGreeter

name :

the name of the property to get

Returns :

The value of this property or 0 if it is not defined

ldm_greeter_get_boolean_property ()

gboolean            ldm_greeter_get_boolean_property    (LdmGreeter *greeter,
                                                         const gchar *name);

greeter :

a LdmGreeter

name :

the name of the property to get

Returns :

The value of this property or FALSE if it is not defined

ldm_greeter_get_num_users ()

gint                ldm_greeter_get_num_users           (LdmGreeter *greeter);

greeter :

a LdmGreeter

Returns :

The number of users able to log in

ldm_greeter_get_users ()

const GList *       ldm_greeter_get_users               (LdmGreeter *greeter);

Get a list of users to present to the user. This list may be a subset of the available users and may be empty depending on the server configuration.

greeter :

A LdmGreeter

Returns :

A list of LdmUser that should be presented to the user.

ldm_greeter_get_default_language ()

const gchar *       ldm_greeter_get_default_language    (LdmGreeter *greeter);

Get the default language.

greeter :

A LdmGreeter

Returns :

The default language.

ldm_greeter_get_languages ()

const GList *       ldm_greeter_get_languages           (LdmGreeter *greeter);

Get a list of languages to present to the user.

greeter :

A LdmGreeter

Returns :

A list of LdmLanguage that should be presented to the user.

ldm_greeter_get_default_layout ()

const gchar *       ldm_greeter_get_default_layout      (LdmGreeter *greeter);

greeter :

Returns :


ldm_greeter_get_layouts ()

const GList *       ldm_greeter_get_layouts             (LdmGreeter *greeter);

Get a list of keyboard layouts to present to the user.

greeter :

A LdmGreeter

Returns :

A list of LdmLayout that should be presented to the user.

ldm_greeter_get_layout ()

const gchar *       ldm_greeter_get_layout              (LdmGreeter *greeter);

Get the current keyboard layout.

greeter :

A LdmGreeter

Returns :

The currently active layout for this user.

ldm_greeter_set_layout ()

void                ldm_greeter_set_layout              (LdmGreeter *greeter,
                                                         const gchar *layout);

Set the layout for this session.

greeter :

A LdmGreeter

layout :

The layout to use

ldm_greeter_get_sessions ()

const GList *       ldm_greeter_get_sessions            (LdmGreeter *greeter);

Get the available sessions.

greeter :

A LdmGreeter

Returns :

A list of LdmSession

ldm_greeter_get_default_session ()

const gchar *       ldm_greeter_get_default_session     (LdmGreeter *greeter);

Get the default session to use.

greeter :

A LdmGreeter

Returns :

The session name

ldm_greeter_get_timed_login_user ()

const gchar *       ldm_greeter_get_timed_login_user    (LdmGreeter *greeter);

Get the user to log in by as default.

greeter :

A LdmGreeter

Returns :

A username

ldm_greeter_get_timed_login_delay ()

gint                ldm_greeter_get_timed_login_delay   (LdmGreeter *greeter);

Get the number of seconds to wait until logging in as the default user.

greeter :

A LdmGreeter

Returns :

The number of seconds before logging in as the default user

ldm_greeter_cancel_timed_login ()

void                ldm_greeter_cancel_timed_login      (LdmGreeter *greeter);

Cancel the login as the default user.

greeter :

A LdmGreeter

ldm_greeter_start_authentication ()

void                ldm_greeter_start_authentication    (LdmGreeter *greeter,
                                                         const char *username);

Starts the authentication procedure for a user.

greeter :

A LdmGreeter

username :

A username

ldm_greeter_provide_secret ()

void                ldm_greeter_provide_secret          (LdmGreeter *greeter,
                                                         const gchar *secret);

Provide secret information from a prompt.

greeter :

A LdmGreeter

secret :

Response to a prompt

ldm_greeter_cancel_authentication ()

void                ldm_greeter_cancel_authentication   (LdmGreeter *greeter);

Cancel the current user authentication.

greeter :

A LdmGreeter

ldm_greeter_get_is_authenticated ()

gboolean            ldm_greeter_get_is_authenticated    (LdmGreeter *greeter);

Checks if the greeter has successfully authenticated.

greeter :

A LdmGreeter

Returns :

TRUE if the greeter is authenticated for login.

ldm_greeter_get_authentication_user ()

const gchar *       ldm_greeter_get_authentication_user (LdmGreeter *greeter);

Get the user that is being authenticated.

greeter :

A LdmGreeter

Returns :

The username of the authentication user being authenticated or NULL if no authentication in progress.

ldm_greeter_login ()

void                ldm_greeter_login                   (LdmGreeter *greeter,
                                                         const gchar *username,
                                                         const gchar *session,
                                                         const gchar *language);

Login a user to a session

greeter :

A LdmGreeter

username :

The user to log in as

session :

The session to log into or NULL to use the default

language :

The language to use or NULL to use the default

ldm_greeter_get_can_suspend ()

gboolean            ldm_greeter_get_can_suspend         (LdmGreeter *greeter);

Checks if the greeter is authorized to do a system suspend.

greeter :

A LdmGreeter

Returns :

TRUE if the greeter can suspend the system

ldm_greeter_suspend ()

void                ldm_greeter_suspend                 (LdmGreeter *greeter);

Triggers a system suspend.

greeter :

A LdmGreeter

ldm_greeter_get_can_hibernate ()

gboolean            ldm_greeter_get_can_hibernate       (LdmGreeter *greeter);

Checks if the greeter is authorized to do a system hibernate.

greeter :

A LdmGreeter

Returns :

TRUE if the greeter can hibernate the system

ldm_greeter_hibernate ()

void                ldm_greeter_hibernate               (LdmGreeter *greeter);

Triggers a system hibernate.

greeter :

A LdmGreeter

ldm_greeter_get_can_restart ()

gboolean            ldm_greeter_get_can_restart         (LdmGreeter *greeter);

Checks if the greeter is authorized to do a system restart.

greeter :

A LdmGreeter

Returns :

TRUE if the greeter can restart the system

ldm_greeter_restart ()

void                ldm_greeter_restart                 (LdmGreeter *greeter);

Triggers a system restart.

greeter :

A LdmGreeter

ldm_greeter_get_can_shutdown ()

gboolean            ldm_greeter_get_can_shutdown        (LdmGreeter *greeter);

Checks if the greeter is authorized to do a system shutdown.

greeter :

A LdmGreeter

Returns :

TRUE if the greeter can shutdown the system

ldm_greeter_shutdown ()

void                ldm_greeter_shutdown                (LdmGreeter *greeter);

Triggers a system shutdown.

greeter :

A LdmGreeter

ldm_greeter_get_user_defaults ()

gboolean            ldm_greeter_get_user_defaults       (LdmGreeter *greeter,
                                                         const gchar *username,
                                                         gchar **language,
                                                         gchar **layout,
                                                         gchar **session);

greeter :

username :

language :

layout :

session :

Returns :

Property Details

The "authentication-user" property

  "authentication-user"      gchar*                : Read

The user being authenticated.

Default value: NULL


The "can-hibernate" property

  "can-hibernate"            gboolean              : Read

TRUE if allowed to hibernate the system.

Default value: FALSE


The "can-restart" property

  "can-restart"              gboolean              : Read

TRUE if allowed to restart the system.

Default value: FALSE


The "can-shutdown" property

  "can-shutdown"             gboolean              : Read

TRUE if allowed to shutdown the system.

Default value: FALSE


The "can-suspend" property

  "can-suspend"              gboolean              : Read

TRUE if allowed to suspend the system.

Default value: FALSE


The "default-session" property

  "default-session"          gchar*                : Read / Write

Default session.

Default value: NULL


The "hostname" property

  "hostname"                 gchar*                : Read

Hostname displaying greeter for.

Default value: NULL


The "is-authenticated" property

  "is-authenticated"         gboolean              : Read

TRUE if the selected user is authenticated.

Default value: FALSE


The "layout" property

  "layout"                   gchar*                : Read / Write

Current keyboard layout.

Default value: NULL


The "login-delay" property

  "login-delay"              gint                  : Read

Number of seconds until logging in as default user.

Default value: 0


The "num-users" property

  "num-users"                gint                  : Read

Number of login users.

Allowed values: >= 0

Default value: 0


The "timed-login-user" property

  "timed-login-user"         gchar*                : Read

User to login as when timed expires.

Default value: NULL

Signal Details

The "authentication-complete" signal

void                user_function                      (LdmGreeter *greeter,
                                                        gpointer    user_data)      : Run Last

The ::authentication-complete signal gets emitted when the greeter has completed authentication.

Call ldm_greeter_get_is_authenticated() to check if the authentication was successful.

greeter :

A LdmGreeter

user_data :

user data set when the signal handler was connected.

The "quit" signal

void                user_function                      (LdmGreeter *greeter,
                                                        gpointer    user_data)      : Run Last

The ::quit signal gets emitted when the greeter should exit.

greeter :

A LdmGreeter

user_data :

user data set when the signal handler was connected.

The "show-error" signal

void                user_function                      (LdmGreeter *greeter,
                                                        gchar      *text,
                                                        gpointer    user_data)      : Run Last

The ::show-error signal gets emitted when the greeter should show an error message to the user.

greeter :

A LdmGreeter

text :

Message text

user_data :

user data set when the signal handler was connected.

The "show-message" signal

void                user_function                      (LdmGreeter *greeter,
                                                        gchar      *text,
                                                        gpointer    user_data)      : Run Last

The ::show-message signal gets emitted when the greeter should show an informational message to the user.

greeter :

A LdmGreeter

text :

Message text

user_data :

user data set when the signal handler was connected.

The "show-prompt" signal

void                user_function                      (LdmGreeter *greeter,
                                                        gchar      *text,
                                                        gpointer    user_data)      : Run Last

The ::show-prompt signal gets emitted when the greeter should show a prompt to the user. The given text should be displayed and an input field for the user to provide a response.

Call ldm_greeter_provide_secret() with the resultant input or ldm_greeter_cancel_authentication() to abort the authentication.

greeter :

A LdmGreeter

text :

Prompt text

user_data :

user data set when the signal handler was connected.

The "timed-login" signal

void                user_function                      (LdmGreeter *greeter,
                                                        gchar      *username,
                                                        gpointer    user_data)      : Run Last

The ::timed-login signal gets emitted when the default user timer has expired.

greeter :

A LdmGreeter

username :

A username

user_data :

user data set when the signal handler was connected.