diff --git a/man/logind.conf.xml b/man/logind.conf.xml index 56981c1837..6cb41b6955 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -343,10 +343,11 @@ StopIdleSessionSec= Specifies a timeout in seconds, or a time span value after which - systemd-logind checks the idle state of all sessions. Every session that is idle for - longer then the timeout will be stopped. Defaults to infinity - (systemd-logind is not checking the idle state of sessions). For details about the syntax - of time spans, see + systemd-logind checks the idle state of all sessions. Every session that is idle + for longer than the timeout will be stopped. Note that this option doesn't apply to + greeter or lock-screen sessions. Defaults to + infinity (systemd-logind is not checking the idle state + of sessions). For details about the syntax of time spans, see systemd.time7. diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 4edc4b9b88..9ec7bd3344 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -713,7 +713,7 @@ static int session_setup_stop_on_idle_timer(Session *s) { assert(s); - if (s->manager->stop_idle_session_usec == USEC_INFINITY) + if (s->manager->stop_idle_session_usec == USEC_INFINITY || !SESSION_CLASS_CAN_STOP_ON_IDLE(s->class)) return 0; r = sd_event_add_time_relative( diff --git a/src/login/logind-session.h b/src/login/logind-session.h index 0557696761..955cd7de92 100644 --- a/src/login/logind-session.h +++ b/src/login/logind-session.h @@ -26,6 +26,9 @@ typedef enum SessionClass { _SESSION_CLASS_INVALID = -1 } SessionClass; +/* Which sessions classes should be subject to stop-in-idle */ +#define SESSION_CLASS_CAN_STOP_ON_IDLE(class) (IN_SET((class), SESSION_USER)) + typedef enum SessionType { SESSION_UNSPECIFIED, SESSION_TTY,