--- /dev/null
+#
+# Check returns correct layout for a user
+#
+
+[LightDM]
+minimum-display-number=50
+
+[test-xserver-config]
+keyboard-layout=ara
+keyboard-variant=azerty
+
+[test-greeter-config]
+log-keyboard-layout=%DEFAULT%
+
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER :50 START
+#?XSERVER :50 INDICATE-READY
+
+# LightDM connects to X server
+#?XSERVER :50 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER :50 START
+#?XSERVER :50 ACCEPT-CONNECT
+#?GREETER :50 CONNECT-XSERVER
+#?GREETER :50 CONNECT-TO-DAEMON
+#?GREETER :50 CONNECTED-TO-DAEMON
+
+# Correct layout is found
+#?XSERVER :50 ACCEPT-CONNECT
+#?GREETER :50 GET-LAYOUT USERNAME=%DEFAULT% LAYOUT='ara azerty'
+
+# Cleanup
+#?*STOP-DAEMON
+# Don't know what order they will terminate
+#?(GREETER :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?(GREETER :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?RUNNER DAEMON-EXIT STATUS=0
+/* -*- Mode: C; indent-tabs-mode: nil; tab-width: 4 -*- */
+
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
LightDMUser *user;
const gchar *layout;
- user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), layout_username);
- layout = lightdm_user_get_layout (user);
+ if (g_strcmp0 (layout_username, "%DEFAULT%") == 0) /* Grab system default layout */
+ layout = lightdm_layout_get_name (lightdm_get_layout ());
+ else
+ {
+ user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), layout_username);
+ layout = lightdm_user_get_layout (user);
+ }
- status_notify ("GREETER %s GET-LAYOUT USERNAME=%s LAYOUT=%s", getenv ("DISPLAY"), layout_username, layout ? layout : "");
+ status_notify ("GREETER %s GET-LAYOUT USERNAME=%s LAYOUT='%s'", getenv ("DISPLAY"), layout_username, layout ? layout : "");
}
language_username = g_key_file_get_string (config, "test-greeter-config", "log-language", NULL);
gsize offset = 0;
guint8 delete;
- guint32 window;
guint32 property;
guint32 type;
read_padding (1, &offset); /* reqType */
delete = read_card8 (buffer, buffer_length, &offset);
read_padding (2, &offset); /* length */
- window = read_card32 (buffer, buffer_length, client->priv->byte_order, &offset);
+ read_padding (4, &offset); /* window */
property = read_card32 (buffer, buffer_length, client->priv->byte_order, &offset);
type = read_card32 (buffer, buffer_length, client->priv->byte_order, &offset);
read_padding (4, &offset); /* longOffset */
if (g_strcmp0 (name, "_XKB_RULES_NAMES") == 0)
{
+ GKeyFile *config;
+
+ config = g_key_file_new ();
+ if (g_getenv ("LIGHTDM_TEST_CONFIG"))
+ g_key_file_load_from_file (config, g_getenv ("LIGHTDM_TEST_CONFIG"), G_KEY_FILE_NONE, NULL);
+
reply = g_string_new ("");
g_string_append (reply, "evdev"); /* rules file */
g_string_append_c (reply, 0); /* embedded null byte */
- g_string_append (reply, "evdev"); /* model name */
+ g_string_append (reply, "pc105"); /* model name */
g_string_append_c (reply, 0); /* embedded null byte */
- if (g_getenv ("LIGHTDM_TEST_KEYBOARD_LAYOUT"))
- g_string_append (reply, g_getenv ("LIGHTDM_TEST_KEYBOARD_LAYOUT"));
+ if (g_key_file_has_key (config, "test-xserver-config", "keyboard-layout", NULL))
+ g_string_append (reply, g_key_file_get_string (config, "test-xserver-config", "keyboard-layout", NULL));
else
g_string_append (reply, "us");
g_string_append_c (reply, 0); /* embedded null byte */
- if (g_getenv ("LIGHTDM_TEST_KEYBOARD_VARIANT"))
- g_string_append (reply, g_getenv ("LIGHTDM_TEST_KEYBOARD_VARIANT"));
+ if (g_key_file_has_key (config, "test-xserver-config", "keyboard-variant", NULL))
+ g_string_append (reply, g_key_file_get_string (config, "test-xserver-config", "keyboard-variant", NULL));
g_string_append_c (reply, 0); /* embedded null byte */
/* no xkb options */
g_string_append_c (reply, 0); /* embedded null byte */
+
+ g_key_file_free (config);
}
if (name && delete)