1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
--- a/daemon/gdm-server.c 2014-07-30 23:00:17.786841724 +0200
+++ b/daemon/gdm-server.c 2014-07-30 23:02:10.491239180 +0200
@@ -322,7 +322,11 @@
fallback:
#endif
- server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
+ if (g_getenv("GDM_X_SERVER") != NULL) {
+ server->priv->command = g_strdup (g_getenv("GDM_X_SERVER"));
+ } else {
+ server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
+ }
}
static gboolean
--- gdm-3.16.0/daemon/gdm-x-session.c.orig 2015-04-15 18:44:16.875743928 +0200
+++ gdm-3.16.0/daemon/gdm-x-session.c 2015-04-16 13:34:02.335708638 +0200
@@ -207,6 +207,8 @@
char *display_fd_string = NULL;
char *vt_string = NULL;
char *display_number;
+ int nixos_argc = 0;
+ char **nixos_argv = NULL;
gsize display_number_size;
auth_file = prepare_auth_file ();
@@ -236,7 +238,15 @@
display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO);
- g_ptr_array_add (arguments, X_SERVER);
+ if (g_getenv("GDM_X_SERVER") != NULL) {
+ int i = 0;
+ g_shell_parse_argv(g_getenv("GDM_X_SERVER"), &nixos_argc, &nixos_argv, NULL);
+ for (i = 0; i < nixos_argc; i++) {
+ g_ptr_array_add (arguments, nixos_argv[i]);
+ }
+ } else {
+ g_ptr_array_add (arguments, X_SERVER);
+ }
if (vt_string != NULL) {
g_ptr_array_add (arguments, vt_string);
@@ -259,12 +269,12 @@
g_ptr_array_add (arguments, "-noreset");
g_ptr_array_add (arguments, "-keeptty");
- g_ptr_array_add (arguments, "-verbose");
+ /*g_ptr_array_add (arguments, "-verbose");
if (state->debug_enabled) {
g_ptr_array_add (arguments, "7");
} else {
g_ptr_array_add (arguments, "3");
- }
+ }*/
if (state->debug_enabled) {
g_ptr_array_add (arguments, "-core");
@@ -275,6 +285,9 @@
(const char * const *) arguments->pdata,
&error);
g_free (display_fd_string);
+ if (nixos_argv) {
+ g_strfreev (nixos_argv);
+ }
g_clear_object (&launcher);
g_ptr_array_free (arguments, TRUE);
--- gdm-3.16.0/daemon/gdm-session.c.orig 2015-04-16 14:19:01.392802683 +0200
+++ gdm-3.16.0/daemon/gdm-session.c 2015-04-16 14:20:36.012296764 +0200
@@ -2359,6 +2359,12 @@
gchar *desktop_names;
const char *locale;
+ if (g_getenv ("GDM_X_SERVER") != NULL) {
+ gdm_session_set_environment_variable (self,
+ "GDM_X_SERVER",
+ g_getenv ("GDM_X_SERVER"));
+ }
+
gdm_session_set_environment_variable (self,
"GDMSESSION",
get_session_name (self));
|