summaryrefslogtreecommitdiff
blob: f7e361767615a2a63c9ac314201daab4fe720173 (plain)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
diff -Naur slim-1.3.5/app.cpp slim-1.3.5.new/app.cpp
--- slim-1.3.5/app.cpp	2012-12-31 08:03:42.000000000 -0500
+++ slim-1.3.5.new/app.cpp	2013-08-22 14:16:37.994854259 -0400
@@ -138,11 +138,14 @@
 	daemonmode = false;
 	force_nodaemon = false;
 	firstlogin = true;
+#ifdef USE_CONSOLEKIT
+	consolekit_support_enabled = true;
+#endif
 	Dpy = NULL;
 
 	/* Parse command line
 	   Note: we force a option for nodaemon switch to handle "-nodaemon" */
-	while((tmp = getopt(argc, argv, "vhp:n:d?")) != EOF) {
+	while((tmp = getopt(argc, argv, "vhsp:n:d?")) != EOF) {
 		switch (tmp) {
 		case 'p':	/* Test theme */
 			testtheme = optarg;
@@ -163,6 +166,11 @@
 			std::cout << APPNAME << " version " << VERSION << endl;
 			exit(OK_EXIT);
 			break;
+#ifdef USE_CONSOLEKIT
+		case 's':	/* Disable consolekit support */
+			consolekit_support_enabled = false;
+			break;
+#endif
 		case '?':	/* Illegal */
 			logStream << endl;
 		case 'h':   /* Help */
@@ -171,6 +179,9 @@
 			<< "	-d: daemon mode" << endl
 			<< "	-nodaemon: no-daemon mode" << endl
 			<< "	-v: show version" << endl
+#ifdef USE_CONSOLEKIT
+			<< "	-s: start for systemd, disable consolekit support" << endl
+#endif
 			<< "	-p /path/to/theme/dir: preview theme" << endl;
 			exit(OK_EXIT);
 			break;
@@ -559,6 +570,7 @@
 #endif
 
 #ifdef USE_CONSOLEKIT
+	if (consolekit_support_enabled) {
 	/* Setup the ConsoleKit session */
 	try {
 		ck.open_session(DisplayName, pw->pw_uid);
@@ -567,6 +579,7 @@
 		logStream << APPNAME << ": " << e << endl;
 		exit(ERR_EXIT);
 	}
+	}
 #endif
 
 	/* Create new process */
@@ -578,6 +591,7 @@
 		char** child_env = pam.getenvlist();
 
 # ifdef USE_CONSOLEKIT
+		if (consolekit_support_enabled) {
 		char** old_env = child_env;
 
 		/* Grow the copy of the environment for the session cookie */
@@ -590,6 +604,7 @@
 		memcpy(child_env, old_env, sizeof(char*)*n+1);
 		child_env[n - 1] = StrConcat("XDG_SESSION_COOKIE=", ck.get_xdg_session_cookie());
 		child_env[n] = NULL;
+		}
 # endif /* USE_CONSOLEKIT */
 #else
 
@@ -611,6 +626,7 @@
 		child_env[n++]=StrConcat("MAIL=", maildir.c_str());
 		child_env[n++]=StrConcat("XAUTHORITY=", xauthority.c_str());
 # ifdef USE_CONSOLEKIT
+		if (consolekit_support_enabled)
 		child_env[n++]=StrConcat("XDG_SESSION_COOKIE=", ck.get_xdg_session_cookie());
 # endif /* USE_CONSOLEKIT */
 		child_env[n++]=0;
@@ -656,12 +672,14 @@
 	}
 
 #ifdef USE_CONSOLEKIT
+	if (consolekit_support_enabled) {
 	try {
 		ck.close_session();
 	}
 	catch(Ck::Exception &e) {
 		logStream << APPNAME << ": " << e << endl;
 	};
+	}
 #endif
 
 #ifdef USE_PAM
diff -Naur slim-1.3.5/app.h slim-1.3.5.new/app.h
--- slim-1.3.5/app.h	2012-12-31 08:03:42.000000000 -0500
+++ slim-1.3.5.new/app.h	2013-08-22 14:12:45.536850016 -0400
@@ -108,6 +108,10 @@
 	char *testtheme;
 	bool testing;
 
+#ifdef USE_CONSOLEKIT
+	bool consolekit_support_enabled;
+#endif
+
 	std::string themeName;
 	std::string mcookie;
 
diff -Naur slim-1.3.5/slim.service slim-1.3.5.new/slim.service
--- slim-1.3.5/slim.service	2012-12-31 08:03:42.000000000 -0500
+++ slim-1.3.5.new/slim.service	2013-08-22 14:15:39.186853186 -0400
@@ -3,7 +3,7 @@
 After=systemd-user-sessions.service
 
 [Service]
-ExecStart=/usr/bin/slim -nodaemon
+ExecStart=/usr/bin/slim -nodaemon -s
 
 [Install]
 Alias=display-manager.service