From 2bb1f0dbd0772ba57ede8837c2f3856b4e7198c0 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
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 <kurtz.alex@googlemail.com>
---
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=<X11 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