# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
-# xsessions-directory = Directory to find X sessions
+# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
-# xgreeters-directory = Directory to find X greeters
+# greeters-directory = Directory to find greeters
# disable-guest-wrapper = Disable using guest session wrapper (temporary? required to make tests work without installing)
#
[LightDM]
#log-directory=/var/log/lightdm
#run-directory=/var/run/lightdm
#cache-directory=/var/cache/lightdm
-#xsessions-directory=/usr/share/xsessions
+#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
-#xgreeters-directory=/usr/share/xgreeters
+#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters
#disable-guest-wrapper=false
#
# 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=
liblightdm_gobject_1_la_CFLAGS = $(LIBLIGHTDM_GOBJECT_CFLAGS) \
$(WARN_CFLAGS) \
-DCONFIG_DIR=\"$(sysconfdir)/lightdm\" \
- -DXSESSIONS_DIR=\"$(datadir)/xsessions\" \
+ -DSESSIONS_DIR=\"$(pkgdatadir)/sessions:$(datadir)/xsessions\" \
-DREMOTE_SESSIONS_DIR=\"$(pkgdatadir)/remote-sessions\"
mainheader_HEADERS = lightdm.h
}
static GList *
-load_sessions (const gchar *sessions_dir)
+load_sessions_dir (GList *sessions, const gchar *sessions_dir)
{
GDir *directory;
- GList *sessions = NULL;
GError *error = NULL;
directory = g_dir_open (sessions_dir, 0, &error);
g_warning ("Failed to open sessions directory: %s", error->message);
g_clear_error (&error);
if (!directory)
- return NULL;
+ return sessions;
while (TRUE)
{
return sessions;
}
+static GList *
+load_sessions (const gchar *sessions_dir)
+{
+ GList *sessions = NULL;
+ gchar **dirs;
+ int i;
+
+ dirs = g_strsplit (sessions_dir, ":", -1);
+ for (i = 0; dirs[i]; i++)
+ sessions = load_sessions_dir (sessions, dirs[i]);
+ g_strfreev (dirs);
+
+ return sessions;
+}
+
static void
update_sessions (void)
{
GKeyFile *config_key_file = NULL;
gchar *config_path = NULL;
- gchar *xsessions_dir;
+ gchar *sessions_dir;
gchar *remote_sessions_dir;
gboolean result;
GError *error = NULL;
if (have_sessions)
return;
- xsessions_dir = g_strdup (XSESSIONS_DIR);
+ sessions_dir = g_strdup (SESSIONS_DIR);
remote_sessions_dir = g_strdup (REMOTE_SESSIONS_DIR);
/* Use session directory from configuration */
{
gchar *value;
- value = g_key_file_get_string (config_key_file, "LightDM", "xsessions-directory", NULL);
+ value = g_key_file_get_string (config_key_file, "LightDM", "sessions-directory", NULL);
if (value)
{
- g_free (xsessions_dir);
- xsessions_dir = value;
+ g_free (sessions_dir);
+ sessions_dir = value;
}
value = g_key_file_get_string (config_key_file, "LightDM", "remote-sessions-directory", NULL);
g_key_file_free (config_key_file);
g_free (config_path);
- local_sessions = load_sessions (xsessions_dir);
+ local_sessions = load_sessions (sessions_dir);
remote_sessions = load_sessions (remote_sessions_dir);
- g_free (xsessions_dir);
+ g_free (sessions_dir);
g_free (remote_sessions_dir);
have_sessions = TRUE;
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
"Language: sr\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-06-24 04:49+0000\n"
-"X-Generator: Launchpad (build 16677)\n"
+"X-Launchpad-Export-Date: 2013-07-02 05:18+0000\n"
+"X-Generator: Launchpad (build 16692)\n"
#: ../greeters/gtk/lightdm-gtk-greeter.c:409
msgid "Are you sure you want to close all programs and restart the computer?"
-DLOG_DIR=\"$(localstatedir)/log/lightdm\" \
-DRUN_DIR=\"$(localstatedir)/run/lightdm\" \
-DCACHE_DIR=\"$(localstatedir)/cache/lightdm\" \
- -DXSESSIONS_DIR=\"$(datadir)/xsessions\" \
+ -DSESSIONS_DIR=\"$(pkgdatadir)/sessions:$(datadir)/xsessions\" \
-DREMOTE_SESSIONS_DIR=\"$(pkgdatadir)/remote-sessions\" \
- -DXGREETERS_DIR=\"$(datadir)/xgreeters\"
+ -DGREETERS_DIR=\"$(pkgdatadir)/greeters:$(datadir)/xgreeters\"
lightdm_LDADD = \
$(LIGHTDM_LIBS) \
DISPLAY_SERVER_READY,
START_GREETER,
START_SESSION,
+ CREATE_DISPLAY,
STOPPED,
LAST_SIGNAL
};
/* Display server */
DisplayServer *display_server;
+ /* TRUE if the session can run on the same display server as the greeter */
+ gboolean share_display_server;
+
/* Greeter session */
gchar *greeter_session;
return display->priv->display_server;
}
+void
+display_set_share_display_server (Display *display, gboolean share_display_server)
+{
+ g_return_if_fail (display != NULL);
+ display->priv->share_display_server = share_display_server;
+}
+
const gchar *
display_get_username (Display *display)
{
g_signal_emit (display, signals[CREATE_SESSION], 0, &session);
if (!session)
return NULL;
+ session_set_display_server (session, display->priv->display_server);
/* Connect using the session bus */
if (getuid () != 0)
return create_session (display);
}
+static Display *
+create_display (Display *display, Session *session)
+{
+ Display *d;
+
+ g_signal_emit (display, signals[CREATE_DISPLAY], 0, session, &d);
+
+ return d;
+}
+
static gboolean
greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *session_name, Display *display)
{
return TRUE;
}
- /* Stop the greeter, the session will start when the greeter has quit */
- g_debug ("Stopping greeter");
- session_stop (display->priv->session);
+ /* If we can re-use this display server, then stop the greeter and start the session when it is done */
+ if (display->priv->share_display_server)
+ {
+ g_debug ("Stopping greeter");
+ session_stop (display->priv->session);
+ }
+ else
+ create_display (display, greeter_get_authentication_session (greeter));
return TRUE;
}
static gboolean
display_start_greeter (Display *display)
{
- gchar *log_dir, *filename, *log_filename, *sessions_dir, *path, *wrapper;
+ gchar *log_dir, *filename, *log_filename, *sessions_dir, *wrapper, **dirs;
gchar **argv;
+ int i;
/* Log the output of the greeter to a system location */
log_dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
g_free (log_filename);
/* Load the greeter session information */
- sessions_dir = config_get_string (config_get_instance (), "LightDM", "xgreeters-directory");
- filename = g_strdup_printf ("%s.desktop", display->priv->greeter_session);
- path = g_build_filename (sessions_dir, filename, NULL);
+ sessions_dir = config_get_string (config_get_instance (), "LightDM", "greeters-directory");
+ dirs = g_strsplit (sessions_dir, ":", -1);
g_free (sessions_dir);
- g_free (filename);
- argv = get_session_command (path, NULL);
- g_free (path);
+ for (i = 0; dirs[i]; i++)
+ {
+ gchar *path;
+
+ filename = g_strdup_printf ("%s.desktop", display->priv->greeter_session);
+ path = g_build_filename (dirs[i], filename, NULL);
+ g_free (filename);
+ argv = get_session_command (path, NULL);
+ g_free (path);
+ if (argv)
+ break;
+ }
+ g_strfreev (dirs);
if (!argv)
return TRUE;
display_start_session (Display *display)
{
User *user;
- gchar *filename, *sessions_dir, *path;
+ gchar *sessions_dir, **dirs;
const gchar *language;
gchar **argv;
gboolean disable_guest_wrapper;
+ int i;
user = session_get_user (display->priv->session);
/* Find the command to run for the selected session */
if (display->priv->user_session_type == SESSION_TYPE_LOCAL)
{
- sessions_dir = config_get_string (config_get_instance (), "LightDM", "xsessions-directory");
+ sessions_dir = config_get_string (config_get_instance (), "LightDM", "sessions-directory");
/* Store this session name so we automatically use it next time */
user_set_xsession (user, display->priv->user_session);
}
else
sessions_dir = config_get_string (config_get_instance (), "LightDM", "remote-sessions-directory");
- filename = g_strdup_printf ("%s.desktop", display->priv->user_session);
- path = g_build_filename (sessions_dir, filename, NULL);
+ dirs = g_strsplit (sessions_dir, ":", -1);
g_free (sessions_dir);
- g_free (filename);
- argv = get_session_command (path, display->priv->session_wrapper);
- g_free (path);
+ for (i = 0; dirs[i]; i++)
+ {
+ gchar *filename, *path;
+
+ filename = g_strdup_printf ("%s.desktop", display->priv->user_session);
+ path = g_build_filename (dirs[i], filename, NULL);
+ g_free (filename);
+ argv = get_session_command (path, display->priv->session_wrapper);
+ g_free (path);
+ if (argv)
+ break;
+ }
+ g_strfreev (dirs);
if (!argv)
return TRUE;
return;
}
+ /* If already have a session, run it */
+ if (display->priv->session != NULL)
+ {
+ if (display_start_session (display))
+ display_stop (display);
+ return;
+ }
+
/* Don't run any sessions on local terminals */
if (!display_server_get_start_local_sessions (display_server))
return;
return TRUE;
}
+gboolean
+display_start_with_session (Display *display, Session *session)
+{
+ g_return_val_if_fail (display != NULL, FALSE);
+ g_return_val_if_fail (session != NULL, FALSE);
+
+ display->priv->session = g_object_ref (session);
+ g_signal_connect_after (display->priv->session, "stopped", G_CALLBACK (user_session_stopped_cb), display);
+ session_set_display_server (session, display->priv->display_server);
+
+ return display_start (display);
+}
+
gboolean
display_get_is_ready (Display *display)
{
return NULL;
}
+static Display *
+display_real_create_display (Display *display, Session *session)
+{
+ return NULL;
+}
+
static void
display_init (Display *display)
{
klass->get_guest_username = display_real_get_guest_username;
klass->start_greeter = display_start_greeter;
klass->start_session = display_start_session;
+ klass->create_display = display_real_create_display;
object_class->finalize = display_finalize;
g_type_class_add_private (klass, sizeof (DisplayPrivate));
g_signal_accumulator_true_handled, NULL,
ldm_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
+ signals[CREATE_DISPLAY] =
+ g_signal_new ("create-display",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (DisplayClass, create_display),
+ NULL, NULL,
+ ldm_marshal_OBJECT__OBJECT,
+ DISPLAY_TYPE, 1, SESSION_TYPE);
signals[STOPPED] =
g_signal_new ("stopped",
G_TYPE_FROM_CLASS (klass),
void (*ready)(Display *display);
gboolean (*switch_to_user)(Display *display, User *user);
gboolean (*switch_to_guest)(Display *display);
+ Display *(*create_display)(Display *display, Session *session);
gchar *(*get_guest_username)(Display *display);
void (*stopped)(Display *display);
} DisplayClass;
DisplayServer *display_get_display_server (Display *display);
+void display_set_share_display_server (Display *display, gboolean share_display_server);
+
const gchar *display_get_username (Display *display);
Session *display_get_session (Display *display);
gboolean display_start (Display *display);
+gboolean display_start_with_session (Display *display, Session *session);
+
gboolean display_get_is_ready (Display *display);
void display_lock (Display *display);
STRING:VOID
OBJECT:VOID
OBJECT:STRING
+OBJECT:OBJECT
gboolean explicit_config = FALSE;
gboolean test_mode = FALSE;
gchar *pid_path = "/var/run/lightdm.pid";
- gchar *xsessions_dir = NULL;
- gchar *remote_sessions_dir = NULL;
- gchar *xgreeters_dir = NULL;
gchar *config_dir, *config_d_dir = NULL;
gchar *log_dir = NULL;
gchar *run_dir = NULL;
{ "pid-file", 0, 0, G_OPTION_ARG_STRING, &pid_path,
/* Help string for command line --pid-file flag */
N_("File to write PID into"), "FILE" },
- { "xsessions-dir", 0, 0, G_OPTION_ARG_STRING, &xsessions_dir,
- /* Help string for command line --xsessions-dir flag */
- N_("Directory to load X sessions from"), "DIRECTORY" },
- { "remote-sessions-dir", 0, 0, G_OPTION_ARG_STRING, &remote_sessions_dir,
- /* Help string for command line --remote-sessions-dir flag */
- N_("Directory to load remote sessions from"), "DIRECTORY" },
- { "xgreeters-dir", 0, 0, G_OPTION_ARG_STRING, &xgreeters_dir,
- /* Help string for command line --xgreeters-dir flag */
- N_("Directory to load X greeters from"), "DIRECTORY" },
{ "log-dir", 0, 0, G_OPTION_ARG_STRING, &log_dir,
/* Help string for command line --log-dir flag */
N_("Directory to write logs to"), "DIRECTORY" },
fclose (pid_file);
}
- /* Always use absolute directories as child processes may run from different locations */
- xsessions_dir = path_make_absolute (xsessions_dir);
- remote_sessions_dir = path_make_absolute (remote_sessions_dir);
- xgreeters_dir = path_make_absolute (xgreeters_dir);
-
/* If not running as root write output to directories we control */
if (getuid () != 0)
{
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", "unity-compositor-command"))
config_set_string (config_get_instance (), "SeatDefaults", "unity-compositor-command", "unity-system-compositor");
if (!config_has_key (config_get_instance (), "SeatDefaults", "start-session"))
if (!config_has_key (config_get_instance (), "LightDM", "cache-directory"))
config_set_string (config_get_instance (), "LightDM", "cache-directory", default_cache_dir);
g_free (default_cache_dir);
- if (!config_has_key (config_get_instance (), "LightDM", "xsessions-directory"))
- config_set_string (config_get_instance (), "LightDM", "xsessions-directory", XSESSIONS_DIR);
+ if (!config_has_key (config_get_instance (), "LightDM", "sessions-directory"))
+ config_set_string (config_get_instance (), "LightDM", "sessions-directory", SESSIONS_DIR);
if (!config_has_key (config_get_instance (), "LightDM", "remote-sessions-directory"))
config_set_string (config_get_instance (), "LightDM", "remote-sessions-directory", REMOTE_SESSIONS_DIR);
- if (!config_has_key (config_get_instance (), "LightDM", "xgreeters-directory"))
- config_set_string (config_get_instance (), "LightDM", "xgreeters-directory", XGREETERS_DIR);
+ if (!config_has_key (config_get_instance (), "LightDM", "greeters-directory"))
+ config_set_string (config_get_instance (), "LightDM", "greeters-directory", GREETERS_DIR);
/* Override defaults */
if (log_dir)
if (cache_dir)
config_set_string (config_get_instance (), "LightDM", "cache-directory", cache_dir);
g_free (cache_dir);
- if (xsessions_dir)
- config_set_string (config_get_instance (), "LightDM", "xsessions-directory", xsessions_dir);
- g_free (xsessions_dir);
- if (remote_sessions_dir)
- config_set_string (config_get_instance (), "LightDM", "remote-sessions-directory", remote_sessions_dir);
- g_free (remote_sessions_dir);
- if (xgreeters_dir)
- config_set_string (config_get_instance (), "LightDM", "xgreeters-directory", xgreeters_dir);
- g_free (xgreeters_dir);
/* Create run and cache directories */
dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
else
vt_number = SEAT_UNITY (seat)->priv->vt;
- session = xsession_new (XSERVER (xserver));
+ session = xsession_new ();
t = g_strdup_printf ("/dev/tty%d", vt_number);
session_set_tty (SESSION (session), t);
g_free (t);
xserver = XSERVER_REMOTE (display_get_display_server (display));
- session = xsession_new (XSERVER (xserver));
+ session = xsession_new ();
session_set_remote_host_name (SESSION (session), xserver_get_hostname (XSERVER (xserver)));
return SESSION (session);
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);
}
xserver = XSERVER_LOCAL (display_get_display_server (display));
- session = xsession_new (XSERVER (xserver));
+ session = xsession_new ();
t = g_strdup_printf ("/dev/tty%d", xserver_local_get_vt (xserver));
session_set_tty (SESSION (session), t);
g_free (t);
xserver = XSERVER_REMOTE (display_get_display_server (display));
- session = xsession_new (XSERVER (xserver));
+ session = xsession_new ();
session_set_remote_host_name (SESSION (session), xserver_get_hostname (XSERVER (xserver)));
return SESSION (session);
xserver = XSERVER_XVNC (display_get_display_server (display));
- session = xsession_new (XSERVER (xserver));
+ session = xsession_new ();
address = G_INET_SOCKET_ADDRESS (g_socket_get_remote_address (SEAT_XVNC (seat)->priv->connection, NULL));
hostname = g_inet_address_to_string (g_inet_socket_address_get_address (address));
session_set_remote_host_name (SESSION (session), hostname);
/* 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;
} SeatModule;
static GHashTable *seat_modules = NULL;
+static Display *create_display (Seat *seat);
+
void
seat_register_module (const gchar *name, GType type)
{
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)
{
SEAT_GET_CLASS (seat)->set_active_display (seat, display);
}
+static Display *
+display_create_display_cb (Display *display, Session *session, Seat *seat)
+{
+ Display *d;
+
+ d = create_display (seat);
+ g_signal_connect (d, "ready", G_CALLBACK (display_ready_cb), seat);
+ g_signal_emit (seat, signals[DISPLAY_ADDED], 0, d);
+
+ display_start_with_session (d, session);
+
+ return g_object_ref (d);
+}
+
static void
check_stopped (Seat *seat)
{
g_signal_connect (display, "start-greeter", G_CALLBACK (display_start_greeter_cb), seat);
g_signal_connect (display, "start-session", G_CALLBACK (display_start_session_cb), seat);
g_signal_connect_after (display, "start-session", G_CALLBACK (display_session_started_cb), seat);
+ g_signal_connect (display, "create-display", G_CALLBACK (display_create_display_cb), seat);
g_signal_connect (display, "stopped", G_CALLBACK (display_stopped_cb), seat);
display_set_greeter_session (display, seat_get_string_property (seat, "greeter-session"));
display_set_session_wrapper (display, seat_get_string_property (seat, "session-wrapper"));
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);
exit (EXIT_SUCCESS);
}
+static XAuthority *
+read_xauth (void)
+{
+ gchar *xauth_name;
+ guint16 xauth_family;
+ guint8 *xauth_address;
+ gsize xauth_address_length;
+ gchar *xauth_number;
+ guint8 *xauth_data;
+ gsize xauth_data_length;
+
+ xauth_name = read_string ();
+ if (!xauth_name)
+ return NULL;
+
+ read_data (&xauth_family, sizeof (xauth_family));
+ read_data (&xauth_address_length, sizeof (xauth_address_length));
+ xauth_address = g_malloc (xauth_address_length);
+ read_data (xauth_address, xauth_address_length);
+ xauth_number = read_string ();
+ read_data (&xauth_data_length, sizeof (xauth_data_length));
+ xauth_data = g_malloc (xauth_data_length);
+ read_data (xauth_data, xauth_data_length);
+
+ return xauth_new (xauth_family, xauth_address, xauth_address_length, xauth_number, xauth_name, xauth_data, xauth_data_length);
+}
+
int
session_child_run (int argc, char **argv)
{
gchar *tty;
gchar *remote_host_name;
gchar *xdisplay;
- gchar *xauth_name;
XAuthority *xauthority = NULL;
gchar *xauth_filename;
GDBusConnection *bus;
tty = read_string ();
remote_host_name = read_string ();
xdisplay = read_string ();
- xauth_name = read_string ();
- if (xauth_name)
- {
- guint16 xauth_family;
- guint8 *xauth_address;
- gsize xauth_address_length;
- gchar *xauth_number;
- guint8 *xauth_data;
- gsize xauth_data_length;
-
- read_data (&xauth_family, sizeof (xauth_family));
- read_data (&xauth_address_length, sizeof (xauth_address_length));
- xauth_address = g_malloc (xauth_address_length);
- read_data (xauth_address, xauth_address_length);
- xauth_number = read_string ();
- read_data (&xauth_data_length, sizeof (xauth_data_length));
- xauth_data = g_malloc (xauth_data_length);
- read_data (xauth_data, xauth_data_length);
-
- xauthority = xauth_new (xauth_family, xauth_address, xauth_address_length, xauth_number, xauth_name, xauth_data, xauth_data_length);
- }
+ xauthority = read_xauth ();
/* Setup PAM */
result = pam_start (service, username, &conversation, &pam_handle);
/* Get the command to run (blocks) */
log_filename = read_string ();
+ if (version >= 1)
+ {
+ g_free (tty);
+ tty = read_string ();
+ }
xauth_filename = read_string ();
+ if (version >= 1)
+ {
+ g_free (xdisplay);
+ xdisplay = read_string ();
+ if (xauthority)
+ g_object_unref (xauthority);
+ xauthority = read_xauth ();
+ }
read_data (&env_length, sizeof (env_length));
for (i = 0; i < env_length; i++)
pam_putenv (pam_handle, read_string ());
struct SessionPrivate
{
+ /* Display server running on */
+ DisplayServer *display_server;
+
/* PID of child process */
GPid pid;
session->priv->class = g_strdup (class);
}
+static void
+session_real_set_display_server (Session *session, DisplayServer *display_server)
+{
+ if (session->priv->display_server)
+ g_object_unref (session->priv->display_server);
+ session->priv->display_server = g_object_ref (display_server);
+}
+
+void
+session_set_display_server (Session *session, DisplayServer *display_server)
+{
+ g_return_if_fail (session != NULL);
+ g_return_if_fail (display_server != NULL);
+ SESSION_GET_CLASS (session)->set_display_server (session, display_server);
+}
+
void
session_set_tty (Session *session, const gchar *tty)
{
write_data (session, value, sizeof (char) * length);
}
+static void
+write_xauth (Session *session, XAuthority *xauthority)
+{
+ guint16 family;
+ gsize length;
+
+ if (!xauthority)
+ {
+ write_string (session, NULL);
+ return;
+ }
+
+ write_string (session, xauth_get_authorization_name (session->priv->xauthority));
+ family = xauth_get_family (session->priv->xauthority);
+ write_data (session, &family, sizeof (family));
+ length = xauth_get_address_length (session->priv->xauthority);
+ write_data (session, &length, sizeof (length));
+ write_data (session, xauth_get_address (session->priv->xauthority), length);
+ write_string (session, xauth_get_number (session->priv->xauthority));
+ length = xauth_get_authorization_data_length (session->priv->xauthority);
+ write_data (session, &length, sizeof (length));
+ write_data (session, xauth_get_authorization_data (session->priv->xauthority), length);
+}
+
static ssize_t
read_from_child (Session *session, void *buf, size_t count)
{
close (from_child_input);
/* Indicate what version of the protocol we are using */
- version = 0;
+ version = 1;
write_data (session, &version, sizeof (version));
/* Send configuration */
write_string (session, session->priv->tty);
write_string (session, session->priv->remote_host_name);
write_string (session, session->priv->xdisplay);
- if (session->priv->xauthority)
- {
- guint16 family;
- gsize length;
-
- write_string (session, xauth_get_authorization_name (session->priv->xauthority));
- family = xauth_get_family (session->priv->xauthority);
- write_data (session, &family, sizeof (family));
- length = xauth_get_address_length (session->priv->xauthority);
- write_data (session, &length, sizeof (length));
- write_data (session, xauth_get_address (session->priv->xauthority), length);
- write_string (session, xauth_get_number (session->priv->xauthority));
- length = xauth_get_authorization_data_length (session->priv->xauthority);
- write_data (session, &length, sizeof (length));
- write_data (session, xauth_get_authorization_data (session->priv->xauthority), length);
- }
- else
- write_string (session, NULL);
+ write_xauth (session, session->priv->xauthority);
g_debug ("Started session %d with service '%s', username '%s'", session->priv->pid, service, username);
session_run (Session *session, gchar **argv)
{
gsize i, argc;
- gchar *command, *filename;
+ gchar *command, *xauth_filename;
GList *link;
g_return_if_fail (session != NULL);
g_warning ("Failed to set ownership of user authority dir: %s", strerror (errno));
}
- filename = g_build_filename (dir, "xauthority", NULL);
+ xauth_filename = g_build_filename (dir, "xauthority", NULL);
g_free (dir);
}
else
- filename = g_build_filename (user_get_home_directory (session_get_user (session)), ".Xauthority", NULL);
+ xauth_filename = g_build_filename (user_get_home_directory (session_get_user (session)), ".Xauthority", NULL);
write_string (session, session->priv->log_filename);
- write_string (session, filename);
- g_free (filename);
+ write_string (session, session->priv->tty);
+ write_string (session, xauth_filename);
+ g_free (xauth_filename);
+ write_string (session, session->priv->xdisplay);
+ write_xauth (session, session->priv->xauthority);
argc = g_list_length (session->priv->env);
write_data (session, &argc, sizeof (argc));
for (link = session->priv->env; link; link = link->next)
Session *self = SESSION (object);
int i;
+ if (self->priv->display_server)
+ g_object_unref (self->priv->display_server);
if (self->priv->pid)
kill (self->priv->pid, SIGKILL);
if (self->priv->from_child_channel)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ klass->set_display_server = session_real_set_display_server;
object_class->finalize = session_finalize;
g_type_class_add_private (klass, sizeof (SessionPrivate));
#include <security/pam_appl.h>
+#include "display-server.h"
#include "accounts.h"
#include "xauthority.h"
void (*got_messages)(Session *session);
void (*authentication_complete)(Session *session);
void (*stopped)(Session *session);
+ void (*set_display_server)(Session *session, DisplayServer *display_server);
} SessionClass;
typedef enum
void session_set_class (Session *session, const gchar *class);
+void session_set_display_server (Session *session, DisplayServer *display_server);
+
void session_set_tty (Session *session, const gchar *tty);
void session_set_xdisplay (Session *session, const gchar *xdisplay);
#include "configuration.h"
#include "privileges.h"
-struct XSessionPrivate
-{
- /* X server connected to */
- XServer *xserver;
-};
-
G_DEFINE_TYPE (XSession, xsession, SESSION_TYPE);
XSession *
-xsession_new (XServer *xserver)
+xsession_new (void)
{
XSession *session;
- XAuthority *authority;
session = g_object_new (XSESSION_TYPE, NULL);
- session->priv->xserver = g_object_ref (xserver);
-
- session_set_env (SESSION (session), "DISPLAY", xserver_get_address (xserver));
- session_set_tty (SESSION (session), xserver_get_address (xserver));
- session_set_xdisplay (SESSION (session), xserver_get_address (xserver));
- authority = xserver_get_authority (xserver);
- if (authority)
- session_set_xauthority (SESSION (session), authority, config_get_boolean (config_get_instance (), "LightDM", "user-authority-in-system-dir"));
session_set_log_file (SESSION (session), ".xsession-errors");
return session;
}
static void
-xsession_init (XSession *session)
+xsession_set_display_server (Session *session, DisplayServer *display_server)
{
- session->priv = G_TYPE_INSTANCE_GET_PRIVATE (session, XSESSION_TYPE, XSessionPrivate);
-}
+ XServer *xserver;
+ XAuthority *authority;
-static void
-xsession_finalize (GObject *object)
-{
- XSession *self;
+ xserver = XSERVER (display_server);
- self = XSESSION (object);
+ session_set_env (session, "DISPLAY", xserver_get_address (xserver));
+ session_set_tty (session, xserver_get_address (xserver));
+ session_set_xdisplay (session, xserver_get_address (xserver));
+ authority = xserver_get_authority (xserver);
+ if (authority)
+ session_set_xauthority (session, authority, config_get_boolean (config_get_instance (), "LightDM", "user-authority-in-system-dir"));
- if (self->priv->xserver)
- g_object_unref (self->priv->xserver);
+ SESSION_CLASS (xsession_parent_class)->set_display_server (session, display_server);
+}
- G_OBJECT_CLASS (xsession_parent_class)->finalize (object);
+static void
+xsession_init (XSession *session)
+{
}
static void
xsession_class_init (XSessionClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = xsession_finalize;
+ SessionClass *session_class = SESSION_CLASS (klass);
- g_type_class_add_private (klass, sizeof (XSessionPrivate));
+ session_class->set_display_server = xsession_set_display_server;
}
GType xsession_get_type (void);
-XSession *xsession_new (XServer *xserver);
+XSession *xsession_new (void);
G_END_DECLS
test-login-python-remote-session \
test-login-session-crash \
test-login-xserver-crash \
+ test-xserver-no-share \
test-home-dir-on-authenticate \
test-home-dir-on-session \
test-plymouth-active-vt \
scripts/xauthority.conf \
scripts/xdmcp-login.conf \
scripts/xdmcp-open-file-descriptors.conf \
- scripts/xserver-fail-start.conf
+ scripts/xserver-fail-start.conf \
+ scripts/xserver-no-share.conf
--- /dev/null
+#
+# Check can configure a new X server to start for the session
+#
+
+[SeatDefaults]
+user-session=default
+xserver-share=false
+
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-0 RESPOND TEXT="password"
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# New X server starts for session
+#?XSERVER-1 START VT=8
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION-X-1 START USER=have-password1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Greeter stops
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
-DBUILDDIR=\"$(abs_top_builddir)\" \
-DSYSCONFDIR=\"$(sysconfdir)\" \
-DLOCALSTATEDIR=\"$(localstatedir)\" \
+ -DDATADIR=\"$(datadir)\" \
-DCONFIG_DIR=\"$(sysconfdir)/lightdm\"
libsystem_la_LIBADD = -ldl $(GLIB_LIBS) $(GIO_UNIX_LIBS)
if (g_str_has_prefix (path, LOCALSTATEDIR))
return g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "var", path + strlen (LOCALSTATEDIR), NULL);
+ if (g_str_has_prefix (path, DATADIR))
+ return g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "usr", "share", path + strlen (DATADIR), NULL);
+
// Don't redirect if inside the build directory
if (g_str_has_prefix (path, BUILDDIR))
return g_strdup (path);
if (getenv ("DEBUG"))
g_string_append (command_line, " --debug");
g_string_append_printf (command_line, " --cache-dir %s/cache", temp_dir);
- g_string_append_printf (command_line, " --xsessions-dir=%s/usr/share/xsessions", temp_dir);
- g_string_append_printf (command_line, " --remote-sessions-dir=%s/usr/share/remote-sessions", temp_dir);
- g_string_append_printf (command_line, " --xgreeters-dir=%s/usr/share/xgreeters", temp_dir);
test_runner_command = g_strdup_printf ("PATH=%s LD_PRELOAD=%s LD_LIBRARY_PATH=%s LIGHTDM_TEST_ROOT=%s DBUS_SESSION_BUS_ADDRESS=%s %s\n",
g_getenv ("PATH"), g_getenv ("LD_PRELOAD"), g_getenv ("LD_LIBRARY_PATH"), g_getenv ("LIGHTDM_TEST_ROOT"), g_getenv ("DBUS_SESSION_BUS_ADDRESS"),
/* Set up a skeleton file system */
g_mkdir_with_parents (g_strdup_printf ("%s/etc", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/usr/share", temp_dir), 0755);
- g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/xsessions", temp_dir), 0755);
- g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/remote-sessions", temp_dir), 0755);
- g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/xgreeters", temp_dir), 0755);
+ g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/lightdm/sessions", temp_dir), 0755);
+ g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/lightdm/remote-sessions", temp_dir), 0755);
+ g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/lightdm/greeters", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/tmp", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/var/run", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/var/log", temp_dir), 0755);
perror ("Failed to copy configuration");
/* Copy over the greeter files */
- if (system (g_strdup_printf ("cp %s/xsessions/* %s/usr/share/xsessions", DATADIR, temp_dir)))
- perror ("Failed to copy xsessions");
- if (system (g_strdup_printf ("cp %s/remote-sessions/* %s/usr/share/remote-sessions", DATADIR, temp_dir)))
+ if (system (g_strdup_printf ("cp %s/sessions/* %s/usr/share/lightdm/sessions", DATADIR, temp_dir)))
+ perror ("Failed to copy sessions");
+ if (system (g_strdup_printf ("cp %s/remote-sessions/* %s/usr/share/lightdm/remote-sessions", DATADIR, temp_dir)))
perror ("Failed to copy remote sessions");
- if (system (g_strdup_printf ("cp %s/xgreeters/* %s/usr/share/xgreeters", DATADIR, temp_dir)))
- perror ("Failed to copy xgreeters");
+ if (system (g_strdup_printf ("cp %s/greeters/* %s/usr/share/lightdm/greeters", DATADIR, temp_dir)))
+ perror ("Failed to copy greeters");
/* Set up the default greeter */
- path = g_build_filename (temp_dir, "usr", "share", "xgreeters", "default.desktop", NULL);
+ path = g_build_filename (temp_dir, "usr", "share", "lightdm", "greeters", "default.desktop", NULL);
greeter = g_strdup_printf ("%s.desktop", argv[2]);
if (symlink (greeter, path) < 0)
{
--- /dev/null
+#!/bin/sh
+./src/dbus-env ./src/test-runner xserver-no-share test-gobject-greeter