You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.2 KiB
123 lines
3.2 KiB
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
|