Merge pull request #1250 from arandomhuman/wlr_session

Add support for WLR_SESSION env variable
This commit is contained in:
Drew DeVault 2018-09-17 19:52:41 -04:00 committed by GitHub
commit 50a8758313
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 3 deletions

View File

@ -66,11 +66,26 @@ static void handle_display_destroy(struct wl_listener *listener, void *data) {
struct wlr_session *wlr_session_create(struct wl_display *disp) { struct wlr_session *wlr_session_create(struct wl_display *disp) {
struct wlr_session *session = NULL; struct wlr_session *session = NULL;
const struct session_impl **iter;
const char *env_wlr_session = getenv("WLR_SESSION");
if (env_wlr_session) {
if (!strcmp(env_wlr_session, "logind") || !strcmp(env_wlr_session, "systemd")) {
#if defined(WLR_HAS_SYSTEMD) || defined(WLR_HAS_ELOGIND)
session = session_logind.create(disp);
#else
wlr_log(WLR_ERROR, "wlroots is not compiled with logind support");
#endif
} else if (!strcmp(env_wlr_session, "direct")) {
session = session_direct.create(disp);
} else {
wlr_log(WLR_ERROR, "WLR_SESSION has an invalid value: %s", env_wlr_session);
}
} else {
const struct session_impl **iter;
for (iter = impls; !session && *iter; ++iter) { for (iter = impls; !session && *iter; ++iter) {
session = (*iter)->create(disp); session = (*iter)->create(disp);
} }
}
if (!session) { if (!session) {
wlr_log(WLR_ERROR, "Failed to load session backend"); wlr_log(WLR_ERROR, "Failed to load session backend");

View File

@ -16,6 +16,8 @@ wlroots specific
of outputs of outputs
* *WLR_NO_HARDWARE_CURSORS*: set to 1 to use software cursors instead of * *WLR_NO_HARDWARE_CURSORS*: set to 1 to use software cursors instead of
hardware cursors hardware cursors
* *WLR_SESSION*: specifies the wlr\_session to be used (available sessions:
logind/systemd, direct)
rootston specific rootston specific
------------------ ------------------