diff --git a/client/client.py b/client/client.py
index 4423c7e840c4b70319024fc493e99cad5a1e729c..310abefc3b1c2e27f1c7d64007d6f1cddfd90fea 100755
--- a/client/client.py
+++ b/client/client.py
@@ -11,6 +11,8 @@ import time
 import logging
 import argparse
 import websockets
+import pathlib
+import tempfile
 
 
 class MPV:
@@ -159,7 +161,14 @@ running""",
     del args.start_mpv
 
     if args.mpv_socket is None:
-        args.mpv_socket = "/tmp/mpvsocket"
+        if "XDG_RUNTIME_DIR" in os.environ:
+            args.tmp_dir = None
+            xdg_runtime_dir = os.environ["XDG_RUNTIME_DIR"]
+        else:
+            args.tmp_dir = tempfile.TemporaryDirectory(dir="/tmp", prefix="mpvsync-")
+            xdg_runtime_dir = args.tmp_dir.name
+
+        args.mpv_socket = pathlib.Path(xdg_runtime_dir) / "mpvsocket"
     elif not is_socket(args.mpv_socket):
         parser.error(
             f"""The given socket path {args.mpv_socket} is not a UNIX socket"""
@@ -183,6 +192,8 @@ def main():
         asyncio.run(async_main(args))
     except KeyboardInterrupt:
         logging.info("Got KeyboardInterrupt. Terminating gracefully.")
+        if args.tmp_dir is not None:
+            args.tmp_dir.cleanup()
         sys.exit(0)