diff --git a/gnu/local.mk b/gnu/local.mk
index 5546e33465..64f52c2501 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2224,6 +2224,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xygrib-fix-finding-data.patch		\
   %D%/packages/patches/xygrib-newer-proj.patch			\
   %D%/packages/patches/yggdrasil-extra-config.patch	\
+  %D%/packages/patches/zathura-use-struct-initializers.patch    \
   %D%/packages/patches/zig-0.9-riscv-support.patch		\
   %D%/packages/patches/zig-do-not-link-against-librt.patch	\
   %D%/packages/patches/zig-use-baseline-cpu-by-default.patch	\
diff --git a/gnu/packages/patches/zathura-use-struct-initializers.patch b/gnu/packages/patches/zathura-use-struct-initializers.patch
new file mode 100644
index 0000000000..9a808a4bc3
--- /dev/null
+++ b/gnu/packages/patches/zathura-use-struct-initializers.patch
@@ -0,0 +1,68 @@
+From c05328185292d6f6a4459024cdb563c63bfad230 Mon Sep 17 00:00:00 2001
+Message-ID: <c05328185292d6f6a4459024cdb563c63bfad230.1710315308.git.vivien@planete-kraus.eu>
+From: Sebastian Ramacher <sebastian@ramacher.at>
+Date: Mon, 29 Jan 2024 21:05:22 +0100
+Subject: [PATCH] Use struct initializers
+
+---
+ zathura/page-widget.c |  4 ++--
+ zathura/shortcuts.c   | 12 +++++-------
+ 2 files changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/zathura/page-widget.c b/zathura/page-widget.c
+index 216381e..ac85dcf 100644
+--- a/zathura/page-widget.c
++++ b/zathura/page-widget.c
+@@ -1426,8 +1426,8 @@ cb_menu_image_save(GtkMenuItem* item, ZathuraPage* page)
+   }
+ 
+   /* set command */
+-  char* export_command = g_strdup_printf(":export image-p%d-%d ", page_id, image_id);
+-  girara_argument_t argument = { 0, export_command };
++  char* export_command       = g_strdup_printf(":export image-p%d-%d ", page_id, image_id);
++  girara_argument_t argument = {.n = 0, .data = export_command};
+   sc_focus_inputbar(priv->zathura->ui.session, &argument, NULL, 0);
+   g_free(export_command);
+ 
+diff --git a/zathura/shortcuts.c b/zathura/shortcuts.c
+index 8836cd2..35b5990 100644
+--- a/zathura/shortcuts.c
++++ b/zathura/shortcuts.c
+@@ -513,7 +513,7 @@ sc_rotate(girara_session_t* session, girara_argument_t* argument,
+   zathura_document_set_rotation(zathura->document, (rotation + angle * t) % 360);
+ 
+   /* update scale */
+-  girara_argument_t new_argument = { zathura_document_get_adjust_mode(zathura->document), NULL };
++  girara_argument_t new_argument = {.n = zathura_document_get_adjust_mode(zathura->document), .data = NULL};
+   sc_adjust_window(zathura->ui.session, &new_argument, NULL, 0);
+ 
+   /* render all pages again */
+@@ -1372,7 +1372,7 @@ sc_toggle_presentation(girara_session_t* session, girara_argument_t*
+     zathura->shortcut.toggle_presentation_mode.zoom = zathura_document_get_zoom(zathura->document);
+ 
+     /* adjust window */
+-    girara_argument_t argument = { ZATHURA_ADJUST_BESTFIT, NULL };
++    girara_argument_t argument = {.n = ZATHURA_ADJUST_BESTFIT, .data = NULL};
+     sc_adjust_window(session, &argument, NULL, 0);
+ 
+     /* hide status and inputbar */
+@@ -1390,13 +1390,11 @@ sc_toggle_presentation(girara_session_t* session, girara_argument_t*
+   return false;
+ }
+ 
+-bool
+-sc_quit(girara_session_t* session, girara_argument_t* UNUSED(argument),
+-        girara_event_t* UNUSED(event), unsigned int UNUSED(t))
+-{
++bool sc_quit(girara_session_t* session, girara_argument_t* UNUSED(argument), girara_event_t* UNUSED(event),
++             unsigned int UNUSED(t)) {
+   g_return_val_if_fail(session != NULL, false);
+ 
+-  girara_argument_t arg = { GIRARA_HIDE, NULL };
++  girara_argument_t arg = {.n = GIRARA_HIDE, .data = NULL};
+   girara_isc_completion(session, &arg, NULL, 0);
+ 
+   cb_destroy(NULL, NULL);
+-- 
+2.41.0
+
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index f32403b954..6b09cbb5db 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -716,7 +716,7 @@ (define-public zathura-pdf-poppler
 (define-public zathura
   (package
     (name "zathura")
-    (version "0.5.2")
+    (version "0.5.4")
     (source (origin
               (method url-fetch)
               (uri
@@ -724,7 +724,8 @@ (define-public zathura
                               version ".tar.xz"))
               (sha256
                (base32
-                "15314m9chmh5jkrd9vk2h2gwcwkcffv2kjcxkd4v3wmckz5sfjy6"))))
+                "0ckgamf98sydq543arp865jg1afwzhpzcsbhv6zrch2dm5x7y0x3"))
+              (patches (search-patches "zathura-use-struct-initializers.patch"))))
     (native-inputs
      (list pkg-config
            gettext-minimal
