diff --git a/onmainwindow.cpp b/onmainwindow.cpp
index 461ab76..b75c761 100644
--- a/onmainwindow.cpp
+++ b/onmainwindow.cpp
@@ -5147,9 +5147,18 @@ void ONMainWindow::slotRetResumeSess ( bool result,
                                             "/.pulse-cookie", this, SLOT ( slotPCookieReady ( bool, QString,int )));
                 }
 #else
-                QString cooFile=
-                    wapiShortFileName ( homeDir )  +
-                    "/.x2go/pulse/.pulse-cookie";
+                QString cooFile;
+                if ( QFile::exists
+                    (wapiShortFileName ( homeDir )  + "/.x2go/pulse/.config/pulse/cookie") )
+                {
+                    cooFile =
+                        (wapiShortFileName ( homeDir )  + "/.x2go/pulse/.config/pulse/cookie");
+                }
+                else
+                {
+                    cooFile = wapiShortFileName ( homeDir )  + "/.x2go/pulse/.pulse-cookie";
+                }
+
                 QString destFile="$HOME/.x2go/C-"+
                                  resumingSession.sessionId+
                                  "/.pulse-cookie";
@@ -9687,6 +9696,11 @@ void ONMainWindow::startPulsed()
     QDir drr(homeDir+"/.x2go/pulse/.pulse/"+QHostInfo::localHostName ()+"-runtime");
     if (!drr.exists())
         drr.mkpath(drr.path());
+    /* Directory is needed for PulseAudio 3.0 and later to start successfuilly
+       when launched by X2Go Client */
+    QDir cooDir(homeDir+"/.x2go/pulse/.config/pulse/");
+    if (!cooDir.exists())
+        cooDir.mkpath(cooDir.path());
     if (QFile::exists(homeDir+"/.x2go/pulse/.pulse/"+QHostInfo::localHostName ()+"-runtime/pid"))
         QFile::remove(homeDir+"/.x2go/pulse/.pulse/"+QHostInfo::localHostName ()+"-runtime/pid");
     pulseDir.replace("/","\\");
