diff --git a/gnu/local.mk b/gnu/local.mk
index 838c2a06b3..e51311d116 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1666,7 +1666,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
   %D%/packages/patches/kismet-unbundle-boost.patch		\
   %D%/packages/patches/kitty-fix-wayland-protocols.patch	\
-  %D%/packages/patches/kiwix-desktop-newer-libkiwix.patch	\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
   %D%/packages/patches/knot-remove-runtime-deps.patch		\
diff --git a/gnu/packages/patches/kiwix-desktop-newer-libkiwix.patch b/gnu/packages/patches/kiwix-desktop-newer-libkiwix.patch
deleted file mode 100644
index a5bee60ac2..0000000000
--- a/gnu/packages/patches/kiwix-desktop-newer-libkiwix.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Description: Fix building kiwix-desktop with libkiwix-12.1.0
-Bug: https://github.com/kiwix/kiwix-desktop/issues/964
-Origin: https://github.com/kiwix/kiwix-desktop/commit/1b322d8f01c787846546a6473f153cf1daa41e65
-Applied-Upstream: https://github.com/kiwix/kiwix-desktop/commit/1b322d8f01c787846546a6473f153cf1daa41e65
----
-From 1b322d8f01c787846546a6473f153cf1daa41e65 Mon Sep 17 00:00:00 2001
-From: Matthieu Gautier <mgautier@kymeria.fr>
-Date: Thu, 9 Feb 2023 09:47:47 +0100
-Subject: [PATCH] With last version of libkiwix, Downloader now return
- shared_ptr<Download>.
-
----
- src/contentmanager.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp
-index c2f4ff9..d4db50a 100644
---- a/src/contentmanager.cpp
-+++ b/src/contentmanager.cpp
-@@ -173,7 +173,7 @@ QStringList ContentManager::updateDownloadInfos(QString id, const QStringList &k
-         return values;
-     }
-     auto& b = mp_library->getBookById(id);
--    kiwix::Download* d;
-+    std::shared_ptr<kiwix::Download> d;
-     try {
-         d = mp_downloader->getDownload(b.getDownloadId());
-     } catch(...) {
-@@ -270,7 +270,7 @@ QString ContentManager::downloadBook(const QString &id)
-     for (auto b : booksList)
-         if (b.toStdString() == book.getId())
-             return "";
--    kiwix::Download *download;
-+    std::shared_ptr<kiwix::Download> download;
-     try {
-         std::pair<std::string, std::string> downloadDir("dir", downloadPath.toStdString());
-         const std::vector<std::pair<std::string, std::string>> options = { downloadDir };
--- 
-2.41.0
-
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 60a9f5681f..1d109d4315 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -105,6 +105,7 @@ (define-module (gnu packages web)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
@@ -9388,7 +9389,7 @@ (define-public libkiwix
 (define-public kiwix-desktop
   (package
     (name "kiwix-desktop")
-    (version "2.3.1")
+    (version "2.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -9397,25 +9398,18 @@ (define-public kiwix-desktop
                     ".tar.gz"))
               (sha256
                (base32
-                "0hlk05gcb3fmnxhwj6gan51v98rdq3iv2lklwbpmm1bazmz8i7br"))
-              (patches (search-patches "kiwix-desktop-newer-libkiwix.patch"))))
-    (build-system gnu-build-system)
+                "1vkmk9j2jii7ri4lcayr0dr5b2w3dc24lyqmm3g4234834b1f4wl"))))
+    (build-system qt-build-system)
     (arguments
-     `(#:phases
+     `(#:qtbase ,qtbase
+       #:test-target "check"
+       #:phases
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (invoke "qmake"
                      (string-append "PREFIX="
-                                    (assoc-ref outputs "out")))))
-         (add-after 'install 'wrap-qt-process-path
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/kiwix-desktop"))
-                    (qt-process-path (search-input-file
-                                      inputs "/lib/qt5/libexec/QtWebEngineProcess")))
-               (wrap-program bin
-                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+                                    (assoc-ref outputs "out"))))))))
     (inputs
      (list bash-minimal
            curl
@@ -9424,16 +9418,14 @@ (define-public kiwix-desktop
            libmicrohttpd
            libzim
            pugixml
-           qtbase-5
-           qtdeclarative-5
-           qtwebchannel-5
-           qtwebengine-5
+           qtdeclarative
+           qtwebchannel
+           qtwebengine
            xapian
            zlib
            `(,zstd "lib")))
     (native-inputs
-     (list pkg-config
-           qtbase-5))
+     (list pkg-config))
     (home-page "https://wiki.kiwix.org/wiki/Software")
     (synopsis "Viewer and manager of ZIM files")
     (description "Kiwix Desktop allows you to enjoy a lot of different content
