From 2bb1f0dbd0772ba57ede8837c2f3856b4e7198c0 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 12 Sep 2019 09:49:40 +0200 Subject: [PATCH 1/3] X11: Add xauthority parameter Add an xauthority parameter and use it in the startup script. Based on patch by Alexander Kurtz --- src/daemon/start-pulseaudio-x11.in | 6 +++--- src/modules/x11/module-x11-bell.c | 8 ++++++++ src/modules/x11/module-x11-cork-request.c | 8 ++++++++ src/modules/x11/module-x11-publish.c | 8 ++++++++ src/modules/x11/module-x11-xsmp.c | 8 ++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/daemon/start-pulseaudio-x11.in b/src/daemon/start-pulseaudio-x11.in index 15c79e187..2afa88563 100755 --- a/src/daemon/start-pulseaudio-x11.in +++ b/src/daemon/start-pulseaudio-x11.in @@ -22,14 +22,14 @@ set -e if [ x"$DISPLAY" != x ] ; then - @PACTL_BINARY@ load-module module-x11-publish "display=$DISPLAY" > /dev/null - @PACTL_BINARY@ load-module module-x11-cork-request "display=$DISPLAY" > /dev/null + @PACTL_BINARY@ load-module module-x11-publish "display=$DISPLAY xauthority=$XAUTHORITY" > /dev/null + @PACTL_BINARY@ load-module module-x11-cork-request "display=$DISPLAY xauthority=$XAUTHORITY" > /dev/null if [ x"$KDE_FULL_SESSION" = x"true" ]; then @PACTL_BINARY@ load-module module-device-manager "do_routing=1" > /dev/null fi if [ x"$SESSION_MANAGER" != x ] ; then - @PACTL_BINARY@ load-module module-x11-xsmp "display=$DISPLAY session_manager=$SESSION_MANAGER" > /dev/null + @PACTL_BINARY@ load-module module-x11-xsmp "display=$DISPLAY xauthority=$XAUTHORITY session_manager=$SESSION_MANAGER" > /dev/null fi fi diff --git a/src/modules/x11/module-x11-bell.c b/src/modules/x11/module-x11-bell.c index 7b2be57bf..ec63c672f 100644 --- a/src/modules/x11/module-x11-bell.c +++ b/src/modules/x11/module-x11-bell.c @@ -46,6 +46,7 @@ static const char* const valid_modargs[] = { "sink", "sample", "display", + "xauthority", NULL }; @@ -127,6 +128,13 @@ int pa__init(pa_module*m) { u->sink_name = pa_xstrdup(pa_modargs_get_value(ma, "sink", NULL)); u->x11_client = NULL; + if (pa_modargs_get_value(ma, "xauthority", NULL)) { + if (setenv("XAUTHORITY", pa_modargs_get_value(ma, "xauthority", NULL), 1)) { + pa_log("setenv() for $XAUTHORITY failed"); + goto fail; + } + } + if (!(u->x11_wrapper = pa_x11_wrapper_get(m->core, pa_modargs_get_value(ma, "display", NULL)))) goto fail; diff --git a/src/modules/x11/module-x11-cork-request.c b/src/modules/x11/module-x11-cork-request.c index 5c76711f2..966907109 100644 --- a/src/modules/x11/module-x11-cork-request.c +++ b/src/modules/x11/module-x11-cork-request.c @@ -48,6 +48,7 @@ PA_MODULE_USAGE("display="); static const char* const valid_modargs[] = { "display", + "xauthority", NULL }; @@ -130,6 +131,13 @@ int pa__init(pa_module *m) { m->userdata = u = pa_xnew0(struct userdata, 1); u->module = m; + if (pa_modargs_get_value(ma, "xauthority", NULL)) { + if (setenv("XAUTHORITY", pa_modargs_get_value(ma, "xauthority", NULL), 1)) { + pa_log("setenv() for $XAUTHORITY failed"); + goto fail; + } + } + if (!(u->x11_wrapper = pa_x11_wrapper_get(m->core, pa_modargs_get_value(ma, "display", NULL)))) goto fail; diff --git a/src/modules/x11/module-x11-publish.c b/src/modules/x11/module-x11-publish.c index 553b3417e..fcf306bef 100644 --- a/src/modules/x11/module-x11-publish.c +++ b/src/modules/x11/module-x11-publish.c @@ -58,6 +58,7 @@ static const char* const valid_modargs[] = { "sink", "source", "cookie", + "xauthority", NULL }; @@ -158,6 +159,13 @@ int pa__init(pa_module*m) { if (!(u->auth_cookie = pa_auth_cookie_get(m->core, pa_modargs_get_value(ma, "cookie", PA_NATIVE_COOKIE_FILE), true, PA_NATIVE_COOKIE_LENGTH))) goto fail; + if (pa_modargs_get_value(ma, "xauthority", NULL)) { + if (setenv("XAUTHORITY", pa_modargs_get_value(ma, "xauthority", NULL), 1)) { + pa_log("setenv() for $XAUTHORITY failed"); + goto fail; + } + } + if (!(u->x11_wrapper = pa_x11_wrapper_get(m->core, pa_modargs_get_value(ma, "display", NULL)))) goto fail; diff --git a/src/modules/x11/module-x11-xsmp.c b/src/modules/x11/module-x11-xsmp.c index 29737c531..8f1d46ad3 100644 --- a/src/modules/x11/module-x11-xsmp.c +++ b/src/modules/x11/module-x11-xsmp.c @@ -48,6 +48,7 @@ static bool ice_in_use = false; static const char* const valid_modargs[] = { "session_manager", "display", + "xauthority", NULL }; @@ -141,6 +142,13 @@ int pa__init(pa_module*m) { goto fail; } + if (pa_modargs_get_value(ma, "xauthority", NULL)) { + if (setenv("XAUTHORITY", pa_modargs_get_value(ma, "xauthority", NULL), 1)) { + pa_log("setenv() for $XAUTHORITY failed"); + goto fail; + } + } + if (!(u->x11 = pa_x11_wrapper_get(m->core, pa_modargs_get_value(ma, "display", NULL)))) goto fail; -- 2.21.0