diff --git a/gnu/local.mk b/gnu/local.mk
index bfa816d717..36417f1fe9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2131,8 +2131,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
   %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
   %D%/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch	\
-  %D%/packages/patches/xpra-4.2-systemd-run.patch		\
-  %D%/packages/patches/xpra-4.2-install_libs.patch		\
+  %D%/packages/patches/xpra-5.0-systemd-run.patch		\
+  %D%/packages/patches/xpra-5.0-install_libs.patch		\
   %D%/packages/patches/xsane-fix-memory-leak.patch		\
   %D%/packages/patches/xsane-fix-pdf-floats.patch		\
   %D%/packages/patches/xsane-fix-snprintf-buffer-length.patch	\
diff --git a/gnu/packages/patches/xpra-4.2-install_libs.patch b/gnu/packages/patches/xpra-5.0-install_libs.patch
similarity index 53%
rename from gnu/packages/patches/xpra-4.2-install_libs.patch
rename to gnu/packages/patches/xpra-5.0-install_libs.patch
index 65d489a3b8..4d40bf1f79 100644
--- a/gnu/packages/patches/xpra-4.2-install_libs.patch
+++ b/gnu/packages/patches/xpra-5.0-install_libs.patch
@@ -1,18 +1,32 @@
+Distribution specific patch, not going upstream
+
 This workaround for Gentoo interferes with our use of --no-compile during
 the 'install stage.
 
---- a/setup.py	2022-01-04 10:10:05.039825000 +0100
-+++ b/setup.py	2022-01-06 15:10:31.952656039 +0100
-@@ -589,8 +589,6 @@
-         })
+diff --git a/setup.py b/setup.py
+index e254bf99c..90db55c3f 100755
+--- a/setup.py
++++ b/setup.py
+@@ -663,8 +663,6 @@ if modules_ENABLED:
+ # Utility methods for building with Cython
  
  def add_cython_ext(*args, **kwargs):
 -    if "--no-compile" in sys.argv and not ("build" in sys.argv and "install" in sys.argv):
 -        return
-     assert cython_ENABLED, "cython compilation is disabled"
+     if not cython_ENABLED:
+         raise ValueError(f"cannot build {args}: cython compilation is disabled")
      if cython_tracing_ENABLED:
-         kwargs["define_macros"] = [
-@@ -1703,14 +1701,6 @@
+@@ -1809,9 +1807,6 @@ else:
+             if root_prefix.endswith("/usr"):
+                 #ie: "/" or "/usr/src/rpmbuild/BUILDROOT/xpra-0.18.0-0.20160513r12573.fc23.x86_64/"
+                 root_prefix = root_prefix[:-4]
+-            for x in sys.argv:
+-                if x.startswith("--root="):
+-                    root_prefix = x[len("--root="):]
+             print(f"install_data_override.run() root_prefix={root_prefix}")
+             build_xpra_conf(root_prefix)
+ 
+@@ -1955,13 +1950,6 @@ else:
              if uinput_ENABLED:
                  add_data_files("lib/udev/rules.d/", ["fs/lib/udev/rules.d/71-xpra-virtual-pointer.rules"])
  
@@ -23,7 +37,6 @@ the 'install stage.
 -    #otherwise we use the flags to skip pkgconfig
 -    if ("--no-compile" in sys.argv or "--skip-build" in sys.argv) and not ("build" in sys.argv and "install" in sys.argv):
 -        pkgconfig = no_pkgconfig
--
+ 
      if OSX and "py2app" in sys.argv:
          import py2app    #@UnresolvedImport
-         assert py2app is not None
diff --git a/gnu/packages/patches/xpra-4.2-systemd-run.patch b/gnu/packages/patches/xpra-5.0-systemd-run.patch
similarity index 69%
rename from gnu/packages/patches/xpra-4.2-systemd-run.patch
rename to gnu/packages/patches/xpra-5.0-systemd-run.patch
index 8dfd9c82f0..437a8cc37f 100644
--- a/gnu/packages/patches/xpra-4.2-systemd-run.patch
+++ b/gnu/packages/patches/xpra-5.0-systemd-run.patch
@@ -1,13 +1,16 @@
+Distriction specific patch, not going upstream
+
 Disable systemd-run if the command is not found.
 
-diff -ru xpra-4.2~/xpra/scripts/main.py xpra-4.2/xpra/scripts/main.py
---- xpra-4.2~/xpra/scripts/main.py	2021-06-06 08:51:13.756815842 -0700
-+++ xpra-4.2/xpra/scripts/main.py	2021-06-06 16:07:13.371024486 -0700
-@@ -331,23 +331,26 @@
-     if not is_systemd_pid1():
-         return False    # pragma: no cover
-     #test it:
--    cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
+diff --git a/xpra/scripts/main.py b/xpra/scripts/main.py
+index 3813331a5..46e2c83a6 100755
+--- a/xpra/scripts/main.py
++++ b/xpra/scripts/main.py
+@@ -337,23 +337,26 @@ def use_systemd_run(s) -> bool:
+     cmd = ["systemd-run", "--quiet"]
+     if getuid()!=0:
+         cmd += ["--user"]
+-    cmd += ["--scope", "--", "true"]
 -    proc = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=False)
      try:
 -        proc.communicate(timeout=2)
@@ -15,13 +18,13 @@ diff -ru xpra-4.2~/xpra/scripts/main.py xpra-4.2/xpra/scripts/main.py
 -    except TimeoutExpired:  # pragma: no cover
 -        r = None
 -    if r is None:
-+        cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
-+        proc = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=False)
-         try:
+-        try:
 -            proc.terminate()
 -        except Exception:
 -            pass
--        try:
++        cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
++        proc = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=False)
+         try:
 -            proc.communicate(timeout=1)
 +            proc.communicate(timeout=2)
 +            r = proc.returncode
@@ -41,5 +44,5 @@ diff -ru xpra-4.2~/xpra/scripts/main.py xpra-4.2/xpra/scripts/main.py
 +    except FileNotFoundError:
 +        return False
  
- 
- def run_mode(script_file, error_cb, options, args, mode, defaults):
+ def verify_gir():
+     try:
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index cd1335661b..ec846093e2 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -72,6 +72,7 @@ (define-module (gnu packages xorg)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages flex)
@@ -6110,16 +6111,16 @@ (define-public xcompmgr
 (define-public xpra
   (package
     (name "xpra")
-    (version "4.4.6")
+    (version "5.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.xpra.org/src/xpra-"
                            version ".tar.xz"))
        (sha256
-        (base32 "0d3s13wqbn9jwqp4i55mn4chgjkrckq3jx4jrq1bcjjz5agzfrq5"))
-       (patches (search-patches "xpra-4.2-systemd-run.patch"
-                                "xpra-4.2-install_libs.patch"))))
+        (base32 "0gxv0h1spg2jl3g9cc6qxxkq6a7prmb92dqqwk0s6pvrj8w3izlk"))
+       (patches (search-patches "xpra-5.0-systemd-run.patch"
+                                "xpra-5.0-install_libs.patch"))))
     (build-system python-build-system)
     (inputs
      (list bash-minimal                 ; for wrap-program
@@ -6158,7 +6159,8 @@ (define-public xpra
            python-dbus                  ; For desktop notifications.
            dbus                         ; For dbus-launch command.
            python-lz4                   ; Faster compression than zlib.
-           python-netifaces))
+           python-netifaces
+           python-pycups))
     (native-inputs (list pkg-config pandoc python-cython))
     (arguments
      (list
@@ -6193,7 +6195,7 @@ (define-public xpra
                  (format #f "~s" (search-input-file inputs "bin/xauth"))))
               ;; Fix directory of config files.
               (substitute* '("xpra/scripts/config.py"
-                             "xpra/platform/xposix/paths.py")
+                             "xpra/platform/posix/paths.py")
                 (("\"/etc/xpra/?\"")
                  (string-append "\"" #$output "/etc/xpra/\"")))
               ;; XXX: Stolen from (gnu packages linux)
