diff --git a/gnu/local.mk b/gnu/local.mk
index fc3e36fc18..050cb71ef9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1475,6 +1475,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch		\
   %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch	\
   %D%/packages/patches/julia-Use-MPFR-4.2.patch	                \
+  %D%/packages/patches/libcall-ui-make-it-installable.patch	\
   %D%/packages/patches/libftdi-fix-paths-when-FTDIPP-set.patch	\
   %D%/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch	\
   %D%/packages/patches/libobjc2-unbundle-robin-map.patch	\
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 8159d0d792..8b9c64126d 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -13479,3 +13479,44 @@ (define-public xffm+
     (home-page "http://xffm.org/")
     (license license:gpl3+)
     (properties '((upstream-name . "xffm")))))
+
+(define-public libcall-ui
+  (package
+    (name "libcall-ui")
+    (version "0.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.gnome.org/World/Phosh/libcall-ui")
+             (commit "6798b38d4d66d069751151b3e9a202c6de8d7f3c")))
+       (file-name (git-file-name "libcall-ui" version))
+       (sha256
+        (base32
+         "0zfrxh77ag8garqj319amnxjcdyp3ig12dkxfkl6wbwn1mvyrwx8"))
+       (patches (search-patches "libcall-ui-make-it-installable.patch"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "HOME" (getcwd))
+              ;; Tests require a running X server.
+              (system "Xvfb :1 &")
+              (setenv "DISPLAY" ":1"))))))
+    (propagated-inputs ; All these in call-ui.pc.
+     (list glib
+           gtk+
+           (@ (gnu packages telephony) libcallaudio)
+           libhandy))
+    (native-inputs
+     (list `(,glib "bin") ; glib-mkenums
+           pkg-config
+           xorg-server-for-tests))
+    (synopsis "Common User Interfaces for call handling")
+    (description "This package provides common user interfaces to make and
+receive calls.")
+    (home-page "https://gitlab.gnome.org/World/Phosh/libcall-ui")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/patches/libcall-ui-make-it-installable.patch b/gnu/packages/patches/libcall-ui-make-it-installable.patch
new file mode 100644
index 0000000000..078422913d
--- /dev/null
+++ b/gnu/packages/patches/libcall-ui-make-it-installable.patch
@@ -0,0 +1,81 @@
+From 1a79c18e85232a6f56a58ec99271b92d5b0e6dca Mon Sep 17 00:00:00 2001
+Message-ID: <1a79c18e85232a6f56a58ec99271b92d5b0e6dca.1698606228.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Sun, 29 Oct 2023 19:42:55 +0100
+Subject: [PATCH] Install libcall-ui.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Tracked at https://gitlab.gnome.org/World/Phosh/libcall-ui/-/issues/27
+
+* src/meson.build: Require pkgconfig.  Install a pkg-config
+definition.  Install the headers.
+(call_ui_lib): Install it.  Use “library”, not “static_library”.
+* meson.build (config_h): Install the config.h file.
+(call_ui_enum_sources): Install the header file.
+---
+ meson.build     |  1 +
+ src/meson.build | 22 +++++++++++++++++++---
+ 2 files changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 6d96178..80514ba 100644
+--- a/meson.build
++++ b/meson.build
+@@ -93,6 +93,7 @@ configure_file(
+   input: 'cui-config.h.in',
+   output: 'cui-config.h',
+   configuration: config_h,
++  install_dir: get_option('includedir')
+ )
+ 
+ #subdir('data')
+diff --git a/src/meson.build b/src/meson.build
+index bdb347c..2f9fa0c 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -1,7 +1,11 @@
++pkg = import('pkgconfig')
++
+ call_ui_enum_headers = files(['cui-call.h',
+                              ])
+ call_ui_enum_sources = gnome.mkenums_simple('cui-enums',
+-                                            sources : call_ui_enum_headers)
++                                            sources : call_ui_enum_headers,
++                                            install_header: true,
++                                            install_dir: get_option('includedir'))
+ 
+ call_ui_resources = gnome.compile_resources(
+    'cui-resources',
+@@ -50,11 +54,23 @@ call_ui_c_args = [
+   '-DG_LOG_DOMAIN="Cui"',
+ ]
+ 
+-call_ui_lib = static_library('call-ui',
++call_ui_lib = library('call-ui',
+   call_ui_sources,
+   c_args: call_ui_c_args,
+   include_directories: [ root_inc, src_inc ],
+-  dependencies: call_ui_deps)
++  dependencies: call_ui_deps,
++  install: true)
++
++pkg.generate(call_ui_lib)
++
++install_headers(
++ 'call-ui.h',
++ 'cui-call.h',
++ 'cui-call-display.h',
++ 'cui-main.h',
++ 'cui-dialpad.h',
++ 'cui-keypad.h',
++)
+ 
+ libcall_ui_dep = declare_dependency(
+   sources: call_ui_enum_sources,
+
+base-commit: 817d770cfa6876d37c4a6d09b00c9bdedfdce8b7
+-- 
+2.41.0
+
