From eaa65989db386f6fa57bac0cc72bf9d71c01c608 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 7 Jan 2021 17:38:18 +0000 Subject: [PATCH] run: Try using /var/run/pulse/native as PulseAudio socket This brings us closer to matching what happens in libpulse.so.0. This path is the default for a system-wide PulseAudio instance, which is discouraged on non-embedded systems but is easy to check for. In particular, SteamOS, an "appliance"-style gaming OS, uses this socket. Adapted from Steam's pressure-vessel container tool, which reuses various Flatpak modules, including this function. Signed-off-by: Simon McVittie --- common/flatpak-run.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/common/flatpak-run.c b/common/flatpak-run.c index ecb5861f..8ebec5a9 100644 --- a/common/flatpak-run.c +++ b/common/flatpak-run.c @@ -554,11 +554,24 @@ flatpak_run_add_pulseaudio_args (FlatpakBwrap *bwrap) pulseaudio_socket = flatpak_run_parse_pulse_server (pulseaudio_server); if (!pulseaudio_socket) - pulseaudio_socket = g_build_filename (user_runtime_dir, "pulse/native", NULL); + { + pulseaudio_socket = g_build_filename (user_runtime_dir, "pulse/native", NULL); + + if (!g_file_test (pulseaudio_socket, G_FILE_TEST_EXISTS)) + g_clear_pointer (&pulseaudio_socket, g_free); + } + + if (!pulseaudio_socket) + { + pulseaudio_socket = realpath ("/var/run/pulse/native", NULL); + + if (pulseaudio_socket && !g_file_test (pulseaudio_socket, G_FILE_TEST_EXISTS)) + g_clear_pointer (&pulseaudio_socket, g_free); + } flatpak_bwrap_unset_env (bwrap, "PULSE_SERVER"); - if (g_file_test (pulseaudio_socket, G_FILE_TEST_EXISTS)) + if (pulseaudio_socket && g_file_test (pulseaudio_socket, G_FILE_TEST_EXISTS)) { gboolean share_shm = FALSE; /* TODO: When do we add this? */ g_autofree char *client_config = g_strdup_printf ("enable-shm=%s\n", share_shm ? "yes" : "no");