projects/guix·blob javascript-team · refs

3092 lines · 118.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Andreas Enge <[email protected]>
3;;; Copyright © 2013-2021, 2025 Ludovic Courtès <[email protected]>
4;;; Copyright © 2014, 2015, 2017, 2018, 2019, 2021 Mark H Weaver <[email protected]>
5;;; Copyright © 2014 Eric Bavier <[email protected]>
6;;; Copyright © 2015 Federico Beffa <[email protected]>
7;;; Copyright © 2015 Paul van der Walt <[email protected]>
8;;; Copyright © 2015 Sou Bunnbu <[email protected]>
9;;; Copyright © 2015 Andy Wingo <[email protected]>
10;;; Copyright © 2015 David Hashe <[email protected]>
11;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus <[email protected]>
12;;; Copyright © 2016, 2017, 2020-2025 Efraim Flashner <[email protected]>
13;;; Copyright © 2016 Fabian Harfert <[email protected]>
14;;; Copyright © 2016 Kei Kebreau <[email protected]>
15;;; Copyright © 2016 Patrick Hetu <[email protected]>
16;;; Copyright © 2016 Nikita <[email protected]>
17;;; Copyright © 2017 Roel Janssen <[email protected]>
18;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <[email protected]>
19;;; Copyright © 2017, 2019, 2020 Marius Bakke <[email protected]>
20;;; Copyright © 2018 Alex Vong <[email protected]>
21;;; Copyright © 2018, 2020 Arun Isaac <[email protected]>
22;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
23;;; Copyright © 2019 Meiyo Peng <[email protected]>
24;;; Copyright © 2019 Giacomo Leidi <[email protected]>
25;;; Copyright © 2020 Brendan Tildesley <[email protected]>
26;;; Copyright © 2020 Guillaume Le Vaillant <[email protected]>
27;;; Copyright © 2020-2026 Maxim Cournoyer <[email protected]>
28;;; Copyright © 2021 Leo Famulari <[email protected]>
29;;; Copyright © 2021 Simon Streit <[email protected]>
30;;; Copyright © 2021 Maxime Devos <[email protected]>
31;;; Copyright © 2021 Wamm K. D. <[email protected]>
32;;; Copyright © 2022 Zhu Zihao <[email protected]>
33;;; Copyright © 2022 Benjamin Slade <[email protected]>
34;;; Copyright © 2022 Denis 'GNUtoo' Carikli <[email protected]>
35;;; Copyright © 2022 Petr Hodina <[email protected]>
36;;; Copyright © 2023 Sergiu Ivanov <[email protected]>
37;;; Copyright © 2023, 2024 Zheng Junjie <[email protected]>
38;;; Copyright © 2023, 2025 Janneke Nieuwenhuizen <[email protected]>
39;;; Copyright © 2024, 2025 John Kehayias <[email protected]>
40;;; Copyright © 2025 Florian Pelz <[email protected]>
41;;; Copyright © 2025 Remco van 't Veer <[email protected]>
42;;; Copyright © 2025 Artyom V. Poptsov <[email protected]>
43;;;
44;;; This file is part of GNU Guix.
45;;;
46;;; GNU Guix is free software; you can redistribute it and/or modify it
47;;; under the terms of the GNU General Public License as published by
48;;; the Free Software Foundation; either version 3 of the License, or (at
49;;; your option) any later version.
50;;;
51;;; GNU Guix is distributed in the hope that it will be useful, but
52;;; WITHOUT ANY WARRANTY; without even the implied warranty of
53;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
54;;; GNU General Public License for more details.
55;;;
56;;; You should have received a copy of the GNU General Public License
57;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
58
59(define-module (gnu packages gtk)
60 #:use-module ((guix licenses) #:prefix license:)
61 #:use-module (guix gexp)
62 #:use-module (guix utils)
63 #:use-module (guix packages)
64 #:use-module (guix download)
65 #:use-module (guix bzr-download)
66 #:use-module (guix git-download)
67 #:use-module (guix search-paths)
68 #:use-module ((guix build utils) #:select (alist-replace))
69 #:use-module (guix build-system cmake)
70 #:use-module (guix build-system glib-or-gtk)
71 #:use-module (guix build-system gnu)
72 #:use-module (guix build-system meson)
73 #:use-module (guix build-system perl)
74 #:use-module (guix build-system pyproject)
75 #:use-module (guix build-system waf)
76 #:use-module (gnu packages)
77 #:use-module (gnu packages algebra)
78 #:use-module (gnu packages audio)
79 #:use-module (gnu packages autotools)
80 #:use-module (gnu packages base)
81 #:use-module (gnu packages bash)
82 #:use-module (gnu packages boost)
83 #:use-module (gnu packages build-tools)
84 #:use-module (gnu packages texinfo)
85 #:use-module (gnu packages check)
86 #:use-module (gnu packages compression)
87 #:use-module (gnu packages docbook)
88 #:use-module (gnu packages documentation)
89 #:use-module (gnu packages enchant)
90 #:use-module (gnu packages fontutils)
91 #:use-module (gnu packages freedesktop)
92 #:use-module (gnu packages fribidi)
93 #:use-module (gnu packages gettext)
94 #:use-module (gnu packages ghostscript)
95 #:use-module (gnu packages gl)
96 #:use-module (gnu packages glib)
97 #:use-module (gnu packages gnome)
98 #:use-module (gnu packages graphviz)
99 #:use-module (gnu packages icu4c)
100 #:use-module (gnu packages image)
101 #:use-module (gnu packages iso-codes)
102 #:use-module (gnu packages libffi)
103 #:use-module (gnu packages linux)
104 #:use-module (gnu packages m4)
105 #:use-module (gnu packages man)
106 #:use-module (gnu packages pcre)
107 #:use-module (gnu packages pdf)
108 #:use-module (gnu packages perl)
109 #:use-module (gnu packages perl-check)
110 #:use-module (gnu packages pkg-config)
111 #:use-module (gnu packages pretty-print)
112 #:use-module (gnu packages python)
113 #:use-module (gnu packages python-build)
114 #:use-module (gnu packages python-xyz)
115 #:use-module (gnu packages sphinx)
116 #:use-module (gnu packages gstreamer)
117 #:use-module (gnu packages guile)
118 #:use-module (gnu packages guile-xyz)
119 #:use-module (gnu packages cups)
120 #:use-module (gnu packages version-control)
121 #:use-module (gnu packages video)
122 #:use-module (gnu packages vulkan)
123 #:use-module (gnu packages web)
124 #:use-module (gnu packages xml)
125 #:use-module (gnu packages xorg)
126 #:use-module (gnu packages xdisorg)
127 #:use-module (gnu packages pulseaudio)
128 #:use-module (srfi srfi-1)
129 #:use-module (srfi srfi-26)
130 #:use-module (ice-9 match)
131 ;; Export cairo to break a dependency cycle, as gtk-doc is needed to build
132 ;; the documentation. Use cairo for other packages and
133 ;; cairo-with-documentation as the public package.
134 #:export (cairo))
135
136(define-public appmenu-gtk-module
137 (package
138 (name "appmenu-gtk-module")
139 (version "0.7.6")
140 (source
141 (origin
142 (method git-fetch)
143 (uri (git-reference
144 (url "https://gitlab.com/vala-panel-project/vala-panel-appmenu")
145 (commit version)))
146 (file-name (git-file-name name version))
147 (sha256
148 (base32
149 "1ywpygjwlbli65203ja2f8wwxh5gbavnfwcxwg25v061pcljaqmm"))))
150 (build-system meson-build-system)
151 (arguments
152 (list
153 #:glib-or-gtk? #t
154 #:phases
155 #~(modify-phases %standard-phases
156 (add-after 'unpack 'fix-install-gtk-module
157 (lambda* _
158 (substitute*
159 "subprojects/appmenu-gtk-module/src/gtk-3.0/meson.build"
160 (("gtk3.get_pkgconfig_variable\\('libdir'\\)")
161 #$output)))))))
162 (native-inputs
163 (list `(,glib "bin") vala pkg-config))
164 (inputs
165 (list gtk+ libwnck))
166 (synopsis "Application Menu applet")
167 (description
168 "This package provides a global menu applet for use with desktop panels
169such as mate-panel and xfce4-panel.")
170 (home-page "https://gitlab.com/vala-panel-project/vala-panel-appmenu")
171 (license (list license:lgpl3))))
172
173(define-public cairo
174 (package
175 (name "cairo")
176 (version "1.18.4")
177 (source
178 (origin
179 (method url-fetch)
180 (uri
181 (string-append "https://cairographics.org/releases/cairo-"
182 version ".tar.xz"))
183 (sha256
184 (base32 "1jrcqfcna0358aqrk7rnys1hwq6k36ilr9r62bg26j3fi8hdhpj4"))))
185 (build-system meson-build-system)
186 (arguments
187 `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
188 #:glib-or-gtk? #t
189 #:configure-flags
190 ,#~(list "-Dtests=disabled")
191 ,@(if (%current-target-system)
192 (list
193 #:phases
194 #~(modify-phases %standard-phases
195 (add-after 'unpack 'fix-cross-compilation
196 (lambda _
197 ;; XXX: Let meson-build-system customize the property
198 (substitute* "meson.build"
199 (("'ipc_rmid_deferred_release', 'auto'")
200 ;; see https://github.com/NixOS/nixpkgs/blob/df51f2293e935e85f6a2e69bcf89a40cb31bbc3d/pkgs/development/libraries/cairo/default.nix#L65
201 ;; XXX: check it on hurd.
202 "'ipc_rmid_deferred_release', 'true'"))))))
203 '())))
204 (native-inputs
205 (append (list pkg-config
206 python-wrapper)
207 (if (target-hurd?)
208 '()
209 (list gobject-introspection))))
210 (inputs
211 (append
212 (list bash-minimal ;for glib-or-gtk-wrap
213 ghostscript
214 libspectre)
215 (if (target-hurd?)
216 '()
217 (list libdrm
218 poppler))))
219 (propagated-inputs
220 (list fontconfig
221 freetype
222 glib
223 libpng
224 pixman
225 libx11
226 libxcb
227 libxext
228 libxrender))
229 (synopsis "Multi-platform 2D graphics library")
230 (description "Cairo is a 2D graphics library with support for multiple output
231devices. Currently supported output targets include the X Window System (via
232both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
233output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.")
234 (home-page "https://cairographics.org/")
235 (license
236 ;; This project is dual-licensed.
237 (list
238 license:lgpl2.1+
239 license:mpl1.1))
240 ;; Hide and have cairo-with-documentation public.
241 (properties '((hidden? . #t)))))
242
243(define-public cairo-with-documentation
244 ;; cairo's docs must be built in a separate package since it requires
245 ;; gtk-doc, which in turn depends on cairo.
246 (package/inherit cairo
247 (properties (alist-delete 'hidden? (package-properties cairo)))
248 (outputs (cons "doc" (package-outputs cairo)))
249 (native-inputs
250 (modify-inputs native-inputs
251 (prepend gtk-doc/stable)))
252 (arguments
253 (substitute-keyword-arguments arguments
254 ((#:configure-flags flags ''())
255 #~(cons "-Dgtk_doc=true" #$flags))
256 ((#:phases phases '%standard-phases)
257 #~(modify-phases #$phases
258 (add-after 'install 'move-doc
259 (lambda* (#:key outputs #:allow-other-keys)
260 (mkdir-p (string-append #$output:doc "/share"))
261 (rename-file
262 (string-append #$output "/share/gtk-doc")
263 (string-append #$output:doc "/share/gtk-doc"))
264 ;; This directory is now empty so remove it.
265 (rmdir (string-append #$output "/share"))))))))))
266
267(define-public cairo-sans-poppler
268 ;; Variant used to break the dependency cycle between Poppler and Cairo.
269 (package/inherit cairo
270 (inputs (alist-delete "poppler" (package-inputs cairo)))))
271
272(define-public cairo-xcb
273 (package/inherit cairo
274 (properties (alist-delete 'hidden? (package-properties cairo)))
275 (name "cairo-xcb")
276 (inputs
277 `(("mesa" ,mesa)
278 ,@(package-inputs cairo)))
279 (arguments
280 (substitute-keyword-arguments arguments
281 ((#:configure-flags flags ''())
282 #~(cons "-Dxlib-xcb=enabled" #$flags))))
283 (synopsis "2D graphics library (with X11 support)")))
284
285(define-public harfbuzz
286 (package
287 (name "harfbuzz")
288 (version "11.4.4")
289 (source (origin
290 (method url-fetch)
291 (uri (string-append "https://github.com/harfbuzz/harfbuzz"
292 "/releases/download/" version "/harfbuzz-"
293 version ".tar.xz"))
294 (sha256
295 (base32
296 "1iaqiwh3b6mwv1ar2mm29fpfygsb1x79wv7mm6ppyn7a8rqz2lqh"))))
297 (build-system meson-build-system)
298 (outputs '("out"
299 "bin")) ;160K, only hb-view depend on cairo
300 (inputs
301 (list cairo))
302 (propagated-inputs
303 ;; There are all in the Requires or Requires.private field of '.pc'.
304 (list glib graphite2 icu4c))
305 (native-inputs
306 (append (list `(,glib "bin")) ;for glib-mkenums
307 (if (target-hurd?)
308 '()
309 (list gobject-introspection))
310 (list pkg-config
311 python-wrapper
312 which)))
313 (arguments
314 (list #:configure-flags
315 #~(list "-Dgraphite2=enabled")))
316 (synopsis "OpenType text shaping engine")
317 (description
318 "HarfBuzz is an OpenType text shaping engine.")
319 (license (license:x11-style "file://COPYING"
320 "See 'COPYING' in the distribution."))
321 (home-page "https://github.com/harfbuzz/harfbuzz")))
322
323(define-public libdatrie
324 (package
325 (name "libdatrie")
326 (version "0.2.13")
327 (source
328 (origin
329 (method url-fetch)
330 (uri
331 (string-append "https://linux.thai.net/pub/ThaiLinux/software/"
332 "libthai/libdatrie-" version ".tar.xz"))
333 (sha256
334 (base32 "1gplcx9ddglpxmqm10qn38kjmvdh4hnhj14rzgqag095psr1n8qj"))))
335 (build-system gnu-build-system)
336 (outputs '("out" "doc"))
337 (arguments
338 (list #:configure-flags
339 #~(list (string-append "--with-html-docdir=" #$output:doc
340 "/share/doc/datrie/html"))
341
342 ;; Several tests refer to the 'test.tri' file, leading to race
343 ;; conditions when running tests in parallel.
344 #:parallel-tests? #f))
345 (native-inputs
346 (list doxygen pkg-config))
347 (synopsis "Double-Array Trie Library")
348 (description "Libdatrie is an implementation of double-array structure for
349representing trie. Trie is a kind of digital search tree.")
350 (home-page "https://linux.thai.net/~thep/datrie/datrie.html")
351 (license license:lgpl2.1+)))
352
353(define-public libthai
354 (package
355 (name "libthai")
356 (version "0.1.29")
357 (source
358 (origin
359 (method url-fetch)
360 (uri
361 (string-append "https://linux.thai.net/pub/thailinux/software/"
362 "libthai/libthai-" version ".tar.xz"))
363 (sha256
364 (base32 "1kab1w6i1fb76807xrwjfac8n2nky8jbvkhpnh117qahrdywr07w"))))
365 (build-system gnu-build-system)
366 (outputs '("out" "doc"))
367 (arguments
368 `(#:configure-flags
369 (list
370 (string-append "--with-html-docdir="
371 (assoc-ref %outputs "doc")
372 "/share/doc/libthai/html"))))
373 (native-inputs
374 `(("datrie" ,libdatrie)
375 ("doxygen" ,doxygen)
376 ("pkg-config" ,pkg-config)))
377 (propagated-inputs
378 `(("datrie" ,libdatrie)))
379 (synopsis "Thai language support library")
380 (description "LibThai is a set of Thai language support routines aimed to
381ease developers’ tasks to incorporate Thai language support in their
382applications.")
383 (home-page "https://linux.thai.net/projects/libthai")
384 (license license:lgpl2.1+)))
385
386(define-public pango
387 (package
388 (name "pango")
389 (version "1.57.1")
390 (source (origin
391 (method git-fetch)
392 (uri (git-reference
393 (url "https://gitlab.gnome.org/GNOME/pango")
394 (commit version)))
395 (file-name (git-file-name name version))
396 (sha256
397 (base32
398 "0dfvlag7jhf4fzraxwhx4s016h2z7igq3knza9vfklkss8igs00a"))))
399 (build-system meson-build-system)
400 (arguments
401 (list
402 #:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
403 #:configure-flags (if (target-hurd?)
404 #~(list)
405 #~(list "-Dintrospection=enabled"))
406 #:phases #~(modify-phases %standard-phases
407 (add-after 'unpack 'disable-cantarell-tests
408 (lambda _
409 (substitute* "tests/meson.build"
410 ;; XXX FIXME: These tests require "font-abattis-cantarell", but
411 ;; adding it here would introduce a circular dependency.
412 (("\\[ 'test-layout'.*") "")
413 (("\\[ 'test-itemize'.*") "")
414 (("\\[ 'test-font(-data)?'.*") "")
415 (("\\[ 'test-harfbuzz'.*") "")))))))
416 (propagated-inputs
417 ;; These are all in Requires or Requires.private of the '.pc' files.
418 (list cairo
419 fontconfig
420 freetype
421 fribidi
422 glib
423 harfbuzz
424 libthai
425 ;; Some packages, such as Openbox, expect Pango to be built with the
426 ;; optional libxft support.
427 libxft
428 libxrender))
429 (inputs
430 (list bash-minimal
431 zlib))
432 (native-inputs
433 (append (list `(,glib "bin")) ;glib-mkenums, etc.
434 (if (target-hurd?)
435 '()
436 (list gobject-introspection)) ;g-ir-compiler, etc.
437 (list
438 help2man
439 perl
440 pkg-config
441 python-wrapper)))
442 (synopsis "Text and font handling library")
443 (description "Pango is a library for laying out and rendering of text, with
444an emphasis on internationalization. Pango can be used anywhere that text
445layout is needed, though most of the work on Pango so far has been done in the
446context of the GTK+ widget toolkit. Pango forms the core of text and font
447handling for GTK+-2.x.")
448 (home-page "https://pango.gnome.org/")
449 (license license:lgpl2.0+)))
450
451(define-public pango-1.42
452 (package
453 (inherit pango)
454 (version "1.42.4")
455 (source (origin
456 (method url-fetch)
457 (uri (string-append "mirror://gnome/sources/pango/"
458 (version-major+minor version) "/"
459 "pango-" version ".tar.xz"))
460 (sha256
461 (base32
462 "17bwb7dgbncrfsmchlib03k9n3xaalirb39g3yb43gg8cg6p8aqx"))))
463 (build-system gnu-build-system)
464 (arguments
465 '(#:phases (modify-phases %standard-phases
466 (add-after 'configure 'disable-layout-test
467 (lambda _
468 ;; This test requires that fontconfig uses bitmap fonts
469 ;; such as "font-ghostscript"; however providing such a
470 ;; package alone is not enough, as the requirement comes
471 ;; from deeper in the font stack. Since this version of
472 ;; Pango is only used for librsvg, simply disable the
473 ;; test.
474 (substitute* "tests/Makefile"
475 (("test-layout\\$\\(EXEEXT\\)") ""))
476 #t)))))))
477
478(define-public pangox-compat
479 (package
480 (name "pangox-compat")
481 (version "0.0.2")
482 (source (origin
483 (method url-fetch)
484 (uri (string-append "mirror://gnome/sources/" name "/"
485 (version-major+minor version) "/"
486 name "-" version ".tar.xz"))
487 (sha256
488 (base32
489 "0ip0ziys6mrqqmz4n71ays0kf5cs1xflj1gfpvs4fgy2nsrr482m"))))
490 (build-system gnu-build-system)
491 (arguments
492 (list
493 #:configure-flags
494 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")))
495 (inputs
496 (list glib pango-1.42))
497 (native-inputs
498 (list intltool pkg-config))
499 (home-page "https://developer.gnome.org/pango")
500 (synopsis "Obsolete pango functions")
501 (description "Pangox was a X backend to pango. It is now obsolete and no
502longer provided by recent pango releases. pangox-compat provides the
503functions which were removed.")
504 (license license:lgpl2.0+)))
505
506(define-public ganv
507 (package
508 (name "ganv")
509 (version "1.6.0")
510 (source (origin
511 (method url-fetch)
512 (uri (string-append "https://download.drobilla.net/ganv-"
513 version ".tar.bz2"))
514 (sha256
515 (base32
516 "0pik2d3995z0rjcjhb4hsj5fsph3m8khg6j10k6mx4j2j727aq6l"))))
517 (build-system waf-build-system)
518 (arguments
519 (list
520 #:tests? #f ; no check target
521 #:phases
522 #~(modify-phases %standard-phases
523 (add-before 'configure 'set-flags
524 (lambda _
525 ;; Allow 'bin/ganv_bench' to find libganv-1.so.
526 (setenv "LDFLAGS"
527 (string-append "-Wl,-rpath=" #$output "/lib")))))))
528 (native-inputs
529 (list `(,glib "bin") ; for glib-genmarshal, etc.
530 pkg-config))
531 (inputs (list gtk+-2 gtkmm-2))
532 (home-page "https://drobilla.net/software/ganv/")
533 (synopsis "GTK+ widget for interactive graph-like environments")
534 (description
535 "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
536graph-like environments, e.g. modular synths or finite state machine
537diagrams.")
538 (license license:gpl3+)))
539
540(define-public gtksourceview
541 (package
542 (name "gtksourceview")
543 (version "5.20.0")
544 (source (origin
545 (method url-fetch)
546 (uri (string-append "mirror://gnome/sources/gtksourceview/"
547 (version-major+minor version) "/"
548 "gtksourceview-" version ".tar.xz"))
549 (sha256
550 (base32
551 "06wc8i52kb2i3b7v9f124c8cma73k3kbvn741zgym1ibyliwv2z3"))))
552 (build-system meson-build-system)
553 (arguments
554 '(#:phases
555 (modify-phases %standard-phases
556 (add-after 'unpack 'disable-gtk-update-icon-cache
557 (lambda _
558 (substitute* "meson.build"
559 (("gtk_update_icon_cache: true")
560 "gtk_update_icon_cache: false"))))
561 (add-before 'check 'pre-check
562 (lambda* (#:key native-inputs inputs #:allow-other-keys)
563 (let ((Xvfb (search-input-file (or native-inputs inputs)
564 "bin/Xvfb")))
565 ;; Tests require a running X server.
566 (system (string-append Xvfb " :1 &"))
567 (setenv "DISPLAY" ":1")
568 ;; Use an X11 setup to find the display.
569 (setenv "GDK_BACKEND" "x11")
570 ;; Avoid spawning (and failing to connect to) the accessiblity
571 ;; bus.
572 (setenv "GTK_A11Y" "none")
573 ;; For the missing /etc/machine-id.
574 (setenv "DBUS_FATAL_WARNINGS" "0")))))))
575 (native-inputs
576 (list `(,glib "bin") ; for glib-genmarshal, etc.
577 gettext-minimal
578 gi-docgen
579 gobject-introspection
580 pkg-config
581 vala
582 ;; For testing.
583 xorg-server-for-tests
584 shared-mime-info))
585 (propagated-inputs
586 ;; gtksourceview-5.pc refers to all these.
587 (list fontconfig
588 fribidi
589 glib
590 gtk
591 libxml2
592 pango
593 pcre2))
594 (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
595 (synopsis "GNOME source code widget")
596 (description "GtkSourceView is a text widget that extends the standard
597GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax
598highlighting and other features typical of a source code editor.")
599 (license license:lgpl2.1+)))
600
601;;; This older version is used by tepl.
602(define-public gtksourceview-4
603 (package
604 (inherit gtksourceview)
605 (version "4.8.4")
606 (source (origin
607 (method url-fetch)
608 (uri (string-append "mirror://gnome/sources/gtksourceview/"
609 (version-major+minor version) "/"
610 "gtksourceview-" version ".tar.xz"))
611 (sha256
612 (base32
613 "0zd84229bddvp8zpnn86q34i16mhf9x3pzry795gilc3na7x3jby"))))
614 (native-inputs
615 (modify-inputs native-inputs
616 (replace "gobject-introspection" gobject-introspection)))
617 (propagated-inputs
618 (modify-inputs propagated-inputs
619 (replace "gtk" gtk+)
620 (replace "glib" glib)))))
621
622(define-public gtksourceview-3
623 (package
624 (inherit gtksourceview-4)
625 (name "gtksourceview")
626 (version "3.24.11")
627 (source (origin
628 (method url-fetch)
629 (uri (string-append "mirror://gnome/sources/" name "/"
630 (version-major+minor version) "/"
631 name "-" version ".tar.xz"))
632 (sha256
633 (base32
634 "1zbpj283b5ycz767hqz5kdq02wzsga65pp4fykvhg8xj6x50f6v9"))))
635 (build-system gnu-build-system)
636 (arguments
637 (append
638 (list
639 #:configure-flags
640 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"))
641 (substitute-keyword-arguments arguments
642 ((#:phases phases)
643 `(modify-phases ,phases
644 (delete 'disable-gtk-update-icon-cache))))))))
645
646(define-public gdk-pixbuf
647 (package
648 (name "gdk-pixbuf")
649 (version "2.44.5")
650 (source (origin
651 (method url-fetch)
652 (uri (string-append "mirror://gnome/sources/" name "/"
653 (version-major+minor version) "/"
654 name "-" version ".tar.xz"))
655 (sha256
656 (base32
657 "0s5b010jlinmki5iidbj2yip8n2sxc6xc0qmcvpc104v2c4kxfb9"))
658 (patches
659 (search-patches
660 "gdk-pixbuf-honor-GUIX_GDK_PIXBUF_MODULE_FILES.patch"))))
661 (build-system meson-build-system)
662 (outputs '("out" "debug"))
663 (arguments
664 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
665 #:configure-flags '("-Dinstalled_tests=false"
666 ,@(if (%current-target-system)
667 '()
668 '("-Dgtk_doc=true"))
669 ;; Prevent cycle between glycin and gdk-pixbuf.
670 "-Dglycin=disabled"
671 ;; GTK+ 3 needs the XPM loader, see
672 ;; <https://gitlab.gnome.org/GNOME/gtk/-/issues/7143>.
673 "-Dothers=enabled")
674 #:phases
675 (modify-phases %standard-phases
676 (add-before 'configure 'disable-failing-tests
677 (lambda _
678 ;; The test for the fix for issue 205 causes failures.
679 ;; https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/215
680 (substitute* "tests/pixbuf-jpeg.c"
681 ((".*/pixbuf/jpeg/issue205.*")
682 ""))))
683 ;; The slow tests take longer than the specified timeout.
684 ,@(if (target-arm? (%current-system))
685 '((replace 'check
686 (lambda* (#:key tests? #:allow-other-keys)
687 (when tests?
688 (invoke "meson" "test" "--timeout-multiplier" "5")))))
689 '()))))
690 (propagated-inputs
691 (list glib ;in Requires of gdk-pixbuf-2.0.pc
692
693 ;; These are in Requires.private of gdk-pixbuf-2.0.pc
694 libjpeg-turbo
695 libpng
696 libtiff
697 shared-mime-info)) ;required at runtime, too
698 (inputs
699 (if (%current-target-system)
700 (list bash-minimal) ;for glib-or-gtk-wrap
701 '()))
702 (native-inputs
703 (list gettext-minimal
704 `(,glib "bin") ;glib-mkenums, etc.
705 gobject-introspection ;g-ir-compiler, etc.
706 perl
707 pkg-config
708
709 ;; For the documentation.
710 gi-docgen
711 python-docutils))
712 (native-search-paths
713 ;; This file is produced by the gdk-pixbuf-loaders-cache-file
714 ;; profile hook.
715 (list (search-path-specification
716 (variable "GUIX_GDK_PIXBUF_MODULE_FILES")
717 (files (list %gdk-pixbuf-loaders-cache-file))
718 (file-type 'regular))))
719 (synopsis "Image loading library")
720 (description "GdkPixbuf is a library that loads image data in various
721formats and stores it as linear buffers in memory. The buffers can then be
722scaled, composited, modified, saved, or rendered.")
723 (home-page "https://wiki.gnome.org/Projects/GdkPixbuf")
724 (license license:lgpl2.1+)))
725
726(define-public gdk-pixbuf-xlib
727 (package
728 (name "gdk-pixbuf-xlib")
729 (version "2.40.2")
730 (source (origin
731 (method git-fetch)
732 (uri (git-reference
733 (url
734 "https://gitlab.gnome.org/Archive/gdk-pixbuf-xlib.git")
735 (commit version)))
736 (file-name (git-file-name name version))
737 (sha256
738 (base32
739 "1vwnvqxap3r9zw932jwasazy9sxw49j78x2g650xkn70iili90bg"))))
740 (build-system meson-build-system)
741 (arguments
742 '(#:configure-flags '("-Dgtk_doc=true")))
743 (native-inputs (list pkg-config gtk-doc/stable))
744 (inputs (list gdk-pixbuf libx11))
745 (synopsis "Deprecated Xlib integration for GdkPixbuf")
746 (description
747 "GdkPixbuf-Xlib contains the deprecated API for integrating GdkPixbuf with
748Xlib data types. This library was originally shipped by gdk-pixbuf, and has
749since been moved out of the original repository. No newly written code should
750ever use this library.")
751 (home-page "https://gitlab.gnome.org/Archive/gdk-pixbuf-xlib")
752 (license license:lgpl2.1+)))
753
754(define-public xpm-pixbuf
755 (let ((commit "d290a0c846687b22d2a8c5aaec83a6689f30e1c3")
756 (revision "1"))
757 (package
758 (name "xpm-pixbuf")
759 (version "0.0.0")
760 (source (origin
761 (method git-fetch)
762 (uri (git-reference
763 (url "https://gitlab.gnome.org/ZanderBrown/xpm-pixbuf")
764 (commit commit)))
765 (file-name (git-file-name name version))
766 (sha256
767 (base32
768 "1aljnfa28wvfanizphnz3c28076n25f8cc3wzw2yf8f8xqlsfkid"))))
769 (build-system meson-build-system)
770 (native-inputs (list pkg-config))
771 (inputs (list gdk-pixbuf glib))
772 (home-page "https://gitlab.gnome.org/ZanderBrown/xpm-pixbuf")
773 (synopsis "XPM image loader for GdkPixbuf")
774 (description "This package provides a GdkPixbuf module for loading XMP
775images.")
776 (license license:lgpl2.1+))))
777
778;;; A minimal variant used to prevent a cycle with Inkscape.
779(define-public at-spi2-core
780 (hidden-package
781 (package
782 (name "at-spi2-core")
783 (version "2.60.0")
784 (source (origin
785 (method url-fetch)
786 (uri (string-append "mirror://gnome/sources/" name "/"
787 (version-major+minor version) "/"
788 name "-" version ".tar.xz"))
789 (sha256
790 (base32
791 "16fb2hv12k2vzh462gbd4qf8ipvnb2ijrc5d7w56dzfqjwd0rrc0"))))
792 (build-system meson-build-system)
793 (arguments
794 (list
795 #:glib-or-gtk? #t ;to wrap binaries and/or compile schemas
796 #:tests? (not (or (target-ppc32?)
797 (%current-target-system)))
798 #:phases
799 #~(modify-phases %standard-phases
800 (delete 'check)
801 (add-after 'install 'check
802 (lambda* (#:key tests? #:allow-other-keys)
803 (when tests?
804 ;; xfconfd requires a writable HOME
805 (setenv "HOME" (getenv "TMPDIR"))
806 ;; dbus-run-session may crash if XDG_DATA_DIRS has too
807 ;; many entries, maybe related to
808 ;; https://gitlab.freedesktop.org/dbus/dbus/-/issues/481.
809 (setenv "XDG_DATA_DIRS"
810 (string-append
811 #$output "/share:"
812 #$(this-package-native-input
813 "gsettings-desktop-schemas")
814 "/share"))
815 ;; Don't fail on missing '/etc/machine-id'.
816 (setenv "DBUS_FATAL_WARNINGS" "0")
817 (with-directory-excursion (string-append "../at-spi2-core-"
818 #$version "")
819 (invoke "dbus-run-session" "--" "ci/run-registryd-tests.sh")
820 (substitute* "tests/atspi/meson.build"
821 ;; Remove a timeout that caused aarch64 build failures.
822 ((", timeout: [0-9]+") ""))
823 (substitute* "ci/run-tests.sh"
824 (("ps auxwww") "") ;avoid a dependency on procps
825 (("meson test -C _build")
826 "meson test -C ../build")) ;adjust build directory
827 (invoke "dbus-run-session" "--" "ci/run-tests.sh"))))))))
828 (inputs
829 (list bash-minimal libxml2))
830 (propagated-inputs
831 ;; atspi-2.pc refers to all these.
832 (list dbus glib libx11 libxi libxtst))
833 (native-inputs
834 (list findutils
835 gettext-minimal
836 `(,glib "bin")
837 gobject-introspection
838 gsettings-desktop-schemas
839 pkg-config
840 python-dbusmock-for-tests
841 python-pytest
842 python-wrapper))
843 (synopsis "Assistive Technology Service Provider Interface, core components")
844 (description
845 "The Assistive Technology Service Provider Interface, core components,
846is part of the GNOME accessibility project.")
847 (license license:lgpl2.1+)
848 (home-page "https://wiki.gnome.org/Accessibility/"))))
849
850(define-public at-spi2-core-with-documentation
851 (package/inherit at-spi2-core
852 (outputs (cons "doc" (package-outputs at-spi2-core)))
853 (arguments
854 (substitute-keyword-arguments arguments
855 ((#:configure-flags flags ''())
856 #~(cons #$(if (%current-target-system)
857 "-Ddocs=false"
858 "-Ddocs=true")
859 #$flags))
860 ((#:phases phases)
861 #~(modify-phases #$phases
862 (add-after 'unpack 'set-documentation-path
863 (lambda _
864 ;; Ensure that the cross-references point to the "doc" output.
865 (substitute* "doc/meson.build"
866 (("docs_dir =.*")
867 (string-append "docs_dir = '" #$output:doc
868 "/share/doc'\n")))))))))
869 (native-inputs
870 (modify-inputs native-inputs
871 (append gi-docgen python python-sphinx)
872 (replace "python-dbusmock" python-dbusmock)))
873 (properties (alist-delete 'hidden?
874 (package-properties at-spi2-core)))))
875
876(define-public gtk+-2
877 (package
878 (name "gtk+")
879 (version "2.24.33")
880 (source (origin
881 (method url-fetch)
882 (uri (string-append "mirror://gnome/sources/" name "/"
883 (version-major+minor version) "/"
884 name "-" version ".tar.xz"))
885 (sha256
886 (base32
887 "1nn6kks1zyvb5xikr9y2k7r9bwjy1g4b0m0s66532bclymbwfamc"))
888 (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
889 "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
890 "gtk2-harden-list-store.patch"
891 "gtk2-theme-paths.patch"
892 "gtk2-fix-builder-test.patch"))))
893 (build-system gnu-build-system)
894 (outputs '("out" "bin" "doc" "debug"))
895 (propagated-inputs
896 (list at-spi2-core
897 cairo
898 glib
899 (librsvg-for-system)
900 pango))
901 (inputs
902 (list cups
903 libx11
904 libxcomposite
905 libxcursor
906 libxext
907 libxdamage
908 libxi
909 libxinerama
910 libxkbcommon
911 libxrandr
912 libxrender
913 libxshmfence))
914 (native-inputs
915 (list gettext-minimal
916 `(,glib "bin")
917 gobject-introspection
918 intltool
919 perl
920 pkg-config
921 python-wrapper
922 xorg-server-for-tests))
923 (arguments
924 (list
925 #:parallel-tests? #f
926 #:configure-flags
927 #~(list #$(string-append
928 "CFLAGS=-g -O2"
929 " -Wno-error=implicit-int"
930 " -Wno-error=incompatible-pointer-types")
931 "--with-xinput=yes"
932 (string-append "--with-html-dir=" #$output
933 "/share/gtk-doc/html"))
934 #:phases
935 #~(modify-phases %standard-phases
936 (add-after 'unpack 'disable-failing-tests
937 (lambda _
938 (substitute* "gtk/Makefile.in"
939 (("aliasfilescheck\\.sh") ""))
940 (substitute* "gtk/tests/recentmanager.c"
941 (("g_test_add_func \\(\"/recent-manager.*;") ""))
942 (substitute* "gtk/tests/defaultvalue.c"
943 (("return g_test_run\\(\\);") ""))
944 ;; These require XPM support in Gdk-Pixbuf which is obsolete.
945 (substitute* "gtk/tests/textbuffer.c"
946 (("g_test_add_func.*test_fill_empty\\);")
947 "")
948 (("g_test_add_func.*test_tag\\);")
949 ""))))
950 (add-before 'check 'pre-check
951 (lambda _
952 ;; Tests require a running X server.
953 (system "Xvfb :1 +extension GLX &")
954 (setenv "DISPLAY" ":1")
955 ;; Tests write to $HOME.
956 (setenv "HOME" (getcwd))
957 ;; Tests look for $XDG_RUNTIME_DIR.
958 (setenv "XDG_RUNTIME_DIR" (getcwd))
959 ;; For missing '/etc/machine-id'.
960 (setenv "DBUS_FATAL_WARNINGS" "0")))
961 (add-after 'install 'remove-cache
962 (lambda _
963 (for-each delete-file
964 (find-files #$output "immodules.cache")))))))
965 (native-search-paths
966 (list (search-path-specification
967 (variable "GUIX_GTK2_PATH")
968 (files '("lib/gtk-2.0")))))
969 (search-paths native-search-paths)
970 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
971 (description
972 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
973graphical user interfaces. Offering a complete set of widgets, GTK+ is
974suitable for projects ranging from small one-off tools to complete
975application suites.")
976 (license license:lgpl2.0+)
977 (home-page "https://www.gtk.org/")))
978
979(define-public gtk+
980 (package
981 (inherit gtk+-2)
982 (name "gtk+")
983 (version "3.24.52")
984 (source (origin
985 (method git-fetch)
986 (uri (git-reference
987 (url "https://gitlab.gnome.org/GNOME/gtk")
988 (commit version)))
989 (file-name (git-file-name name version))
990 (sha256
991 (base32
992 "197w1mb5vqm5d07sgdqkg54can7f1p4yjh42zx0y8z6m9p43shck"))
993 (patches (search-patches
994 "gtk3-respect-GUIX_GTK3_PATH.patch"
995 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"
996 "gtk3-treeview-test-fix.patch"))))
997 ;; There is no "doc" output, because adding gtk-doc here would introduce a
998 ;; dependency cycle with itself.
999 (outputs '("out" "bin"))
1000 (build-system meson-build-system)
1001 (propagated-inputs
1002 (list at-spi2-core
1003 cairo
1004 fribidi
1005 fontconfig
1006 freetype
1007 (librsvg-for-system)
1008 glib
1009 libcloudproviders-minimal
1010 libepoxy
1011 libx11
1012 libxcomposite
1013 libxcursor
1014 libxdamage
1015 libxext
1016 libxfixes
1017 libxi
1018 libxinerama
1019 libxkbcommon
1020 libxrandr
1021 libxrender
1022 mesa
1023 pango
1024 wayland
1025 wayland-protocols))
1026 (inputs
1027 (list colord-minimal ;to prevent a cycle with inkscape
1028 cups
1029 graphene
1030 harfbuzz
1031 iso-codes/pinned
1032 json-glib-minimal
1033 libxml2
1034 librest))
1035 (native-inputs
1036 (list docbook-xml-4.3
1037 docbook-xsl
1038 gettext-minimal
1039 `(,glib "bin")
1040 gobject-introspection
1041 hicolor-icon-theme
1042 pkg-config
1043 python-wrapper
1044 sassc
1045 ;; By using a special xorg-server for GTK+'s tests, we reduce the impact
1046 ;; of updating xorg-server directly on the master branch.
1047 xorg-server-for-tests
1048 libxslt))
1049 (arguments
1050 (list
1051 #:imported-modules `((guix build glib-or-gtk-build-system)
1052 ,@%meson-build-system-modules)
1053 #:modules '((guix build utils)
1054 (guix build meson-build-system)
1055 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
1056 #:disallowed-references (list (this-package-native-input "xorg-server"))
1057 #:configure-flags
1058 #~(list "-Dcloudproviders=true" ;for cloud-providers support
1059 "-Dcolord=yes" ;for color printing support
1060 "-Dbroadway_backend=true"
1061 "-Dman=true")
1062 ;; Use the same test options as upstream uses for their CI (see the
1063 ;; .gitlab-ci/run-tests.sh file).
1064 #:test-options '(list "--suite=gtk"
1065 "--no-suite=failing"
1066 "--no-suite=flaky"
1067 "--no-suite=gsk-compare-broadway")
1068 #:phases
1069 #~(modify-phases %standard-phases
1070 (add-after 'unpack 'disable-failing-tests
1071 (lambda _
1072 (substitute* "testsuite/gtk/meson.build"
1073 ((".*\\['defaultvalue'],.*") "")
1074 ((".*\\['objects-finalize',.*") ""))
1075 ;; The 'flipping-icons.ui' and 'gtk-icontheme-sizing.ui' tests
1076 ;; fail for unknown reasons (see:
1077 ;; <https://gitlab.gnome.org/GNOME/gtk/-/issues/7679>).
1078 (substitute* "testsuite/reftests/meson.build"
1079 ((" 'flipping-icons.ui',.*") "")
1080 ((" 'gtk-icontheme-sizing.ui',.*") ""))
1081 ;; This test fails just on i686-linux, for unknown reasons.
1082 #$@(if (target-x86-32?)
1083 #~((substitute* "testsuite/reftests/meson.build"
1084 ((" 'linear-gradient.ui',.*") "")))
1085 #~())))
1086 (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
1087 (assoc-ref glib-or-gtk:%standard-phases
1088 'generate-gdk-pixbuf-loaders-cache-file))
1089 (add-before 'check 'pre-check
1090 (lambda _
1091 ;; Tests require a running X server.
1092 (system "Xvfb :1 +extension GLX &")
1093 (setenv "DISPLAY" ":1")
1094 ;; Tests write to $HOME.
1095 (setenv "HOME" (getcwd))
1096 ;; Tests look for $XDG_RUNTIME_DIR.
1097 (setenv "XDG_RUNTIME_DIR" (getcwd))
1098 ;; For missing '/etc/machine-id'.
1099 (setenv "DBUS_FATAL_WARNINGS" "0")))
1100 (add-after 'install 'move-desktop-files
1101 ;; Move desktop files into 'bin' to avoid cycle references.
1102 (lambda* (#:key outputs #:allow-other-keys)
1103 (mkdir-p (string-append #$output:bin "/share"))
1104 (rename-file (string-append #$output "/share/applications")
1105 (string-append #$output:bin
1106 "/share/applications")))))))
1107 (native-search-paths
1108 (list (search-path-specification
1109 (variable "GUIX_GTK3_PATH")
1110 (files '("lib/gtk-3.0")))))))
1111
1112(define-public gtk
1113 (package
1114 (name "gtk")
1115 (version "4.22.1")
1116 (source
1117 (origin
1118 (method url-fetch)
1119 (uri (string-append "mirror://gnome/sources/" name "/"
1120 (version-major+minor version) "/"
1121 name "-" version ".tar.xz"))
1122 (sha256
1123 (base32 "1z2mkmazc2d51jbg3qwwdycycqiwswm88nhw6bxscz8j86f5lyyd"))
1124 (patches
1125 (search-patches "gtk4-demo-reproducible.patch"
1126 "gtk4-needs-udmabuf.patch"
1127 "gtk4-respect-GUIX_GTK4_PATH.patch"))
1128 (modules '((guix build utils)))))
1129 (build-system meson-build-system)
1130 (outputs '("out" "bin" "doc"))
1131 (arguments
1132 (list
1133 #:modules '((guix build utils)
1134 (guix build meson-build-system)
1135 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
1136 #:configure-flags
1137 #~(list
1138 "-Dbroadway-backend=true" ;for broadway display-backend
1139 "-Dcloudproviders=enabled" ;for cloud-providers support
1140 "-Dtracker=enabled" ;for filechooser search support
1141 "-Dcolord=enabled" ;for color printing support
1142 "-Ddocumentation=true"
1143 "-Dman-pages=true")
1144 #:test-options
1145 #~(list "--setup=x11" ;defaults to wayland
1146 ;; Use the same test options as upstream uses for
1147 ;; their CI.
1148 "--suite=gtk"
1149 "--no-suite=failing"
1150 "--no-suite=flaky"
1151 "--no-suite=headless" ; requires mutter…
1152 "--no-suite=gsk-compare-broadway"
1153 "--no-suite=needs-udmabuf"
1154 "--no-suite=docs"
1155 ;; These seem to fail on aarch64, and Debian has
1156 ;; also disabled these, see:
1157 ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050075
1158 "--no-suite=wayland_failing"
1159 "--no-suite=wayland_gles2_failing"
1160 ;; These suites compare rendering output across different
1161 ;; backends (GL, Cairo, NGL, Vulkan) and produce different
1162 ;; results depending on the GPU and software rendering
1163 ;; stack. Debian disables them as well:
1164 ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050075
1165 #$@(if (target-aarch64?)
1166 '("--no-suite=gsk-compare-gl"
1167 "--no-suite=gsk-compare-cairo"
1168 "--no-suite=gsk-compare-ngl"
1169 "--no-suite=gsk-compare-vulkan"
1170 "--no-suite=svg")
1171 '())
1172 #$@(if (target-x86-32?)
1173 ;; These two suites contain 70 failing tests, due to
1174 ;; precision differences in the expected values.
1175 #~("--no-suite=gsk-nodeparser"
1176 "--no-suite=svg")
1177 #~()))
1178 #:phases
1179 #~(modify-phases %standard-phases
1180 (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
1181 (assoc-ref glib-or-gtk:%standard-phases
1182 'generate-gdk-pixbuf-loaders-cache-file))
1183 (add-after 'unpack 'patch-rst2man
1184 (lambda _
1185 (substitute* "docs/reference/gtk/meson.build"
1186 (("find_program\\('rst2man'")
1187 "find_program('rst2man.py'"))))
1188 (add-after 'unpack 'patch
1189 (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
1190 ;; Disable building of icon cache.
1191 (substitute* "meson.build"
1192 (("gtk_update_icon_cache: true")
1193 "gtk_update_icon_cache: false"))
1194 (substitute* (find-files "testsuite/gsk/nodeparser/"
1195 "^text-color.*\\.node$")
1196 (("Noto Sans") "DejaVu Sans"))
1197 ;; Disable failing tests.
1198 (substitute* (find-files "testsuite" "meson.build")
1199 (("[ \t]*'empty-text.node',") "")
1200 (("[ \t]*'testswitch.node',") "")
1201 (("[ \t]*'widgetfactory.node',") "")
1202 ;; The gtklistitemmanager test is flaky (see:
1203 ;; <https://gitlab.gnome.org/GNOME/gtk/-/issues/6547>).
1204 ((".*'gtklistitemmanager.c',.*") "")
1205 ;; XXX: Figure out why this fails and report upstream.
1206 ((".*'memorytexture',.*") "")
1207 ((".*'yuv-matrix-dmabuf',.*") ""))
1208 (substitute* "testsuite/reftests/meson.build"
1209 (("[ \t]*'label-wrap-justify.ui',") "")
1210 (("[ \t]*'wrapping-label-in-nested-boxes.ui',") "")
1211 (("[ \t]*'flipping-icons(\\.ref)?\\.ui',") ""))
1212 ;; libEGL warning: DRI3 error: Could not get DRI3 device
1213 ;; libEGL warning: Activate DRI3 at Xorg or build mesa with DRI2
1214 ;; JIT session error: No HI20 PCREL relocation type be found for
1215 ;; LO12 PCREL relocation type
1216 #$@(if (target-riscv64?)
1217 #~((substitute* "testsuite/gsk/meson.build"
1218 (("'border-colorstates',") "")
1219 (("'glyph-cache-overflow-slices',") "")
1220 (("'huge-height-nogl',") "")
1221 (("'huge-width-nogl',") "")
1222 (("'mipmap-generation-later',") "")
1223 (("'shadow-texture-formats',") "")
1224 (("'texture-offscreen-mipmap-nogl',") "")
1225 (("'texture-scale-filters-nocairo',") ""))
1226 (substitute* "testsuite/reftests/meson.build"
1227 ((".*center-center-300.*00.ui.*") "")
1228 ((".*center-center-300.*00-overlay.ui.*") "")
1229 ((".*icon-shadow-no-transform.ui.*") "")
1230 ((".*image-load-from-file.ui.*") ""))
1231 (substitute* "testsuite/css/parser/meson.build"
1232 ((".*color-mix.*") "")))
1233 #~())
1234 ;; libEGL warning: DRI3 error: Could not get DRI3 device
1235 ;; libEGL warning: Activate DRI3 at Xorg or build mesa with DRI2
1236 #$@(if (target-ppc64le?)
1237 #~((substitute* "testsuite/gsk/meson.build"
1238 (("'border-zero-width-color',") ""))
1239 (substitute* "testsuite/css/parser/meson.build"
1240 ((".*at-valid-17.*") "")
1241 ((".*color-mix.*") "")))
1242 #~())
1243 ;; XXX: These failures appear specific to i686 – investigate them.
1244 #$@(if (target-x86-32?)
1245 #~((substitute* "testsuite/gsk/meson.build"
1246 (("'fill-fractional-([a-z-]*)-nogl',") "")
1247 (("\\[ 'path-special-cases' \\],") "")
1248 (("\\[ '(path|curve)-special-cases' \\],") "")
1249 (("\\[ 'path-private' \\],") ""))
1250 (substitute* "testsuite/a11y/meson.build"
1251 (("\\{ 'name': 'text(view)?' \\},") ""))
1252 (substitute* "testsuite/css/parser/meson.build"
1253 ((".*math.css.*") "")))
1254 #~())))
1255 (add-before 'build 'set-cache
1256 (lambda _
1257 (setenv "XDG_CACHE_HOME" (getcwd))))
1258 (add-before 'check 'pre-check
1259 (lambda* (#:key inputs #:allow-other-keys)
1260 ;; Tests require a running X server. The '-noreset' option is
1261 ;; necessary to avoid spurious "Failed to open display" test
1262 ;; errors.
1263 (system "Xvfb :1 +extension GLX -screen 0 1024x768x24 -noreset &")
1264 (setenv "DISPLAY" ":1")
1265 ;; Tests write to $HOME.
1266 (setenv "HOME" (getcwd))
1267 ;; Tests look for those variables.
1268 (setenv "XDG_RUNTIME_DIR" (getcwd))
1269 ;; For missing '/etc/machine-id'.
1270 (setenv "DBUS_FATAL_WARNINGS" "0")
1271 ;; Required for the calendar test.
1272 (setenv "TZDIR" (search-input-directory inputs
1273 "share/zoneinfo"))))
1274 (add-after 'install 'move-files
1275 (lambda _
1276 (for-each mkdir-p
1277 (list
1278 (string-append #$output:bin "/share/applications")
1279 (string-append #$output:bin "/share/icons")
1280 (string-append #$output:bin "/share/man")
1281 (string-append #$output:bin "/share/metainfo")
1282 (string-append #$output:doc "/share/doc")))
1283 ;; Move programs and related files to output 'bin'.
1284 (for-each (lambda (dir)
1285 (rename-file
1286 (string-append #$output dir)
1287 (string-append #$output:bin dir)))
1288 (list
1289 "/share/applications"
1290 "/share/icons"
1291 "/share/man"
1292 "/share/metainfo"))
1293 ;; Move HTML documentation to output 'doc'.
1294 (rename-file
1295 (string-append #$output "/share/doc")
1296 (string-append #$output:doc "/share/doc"))))
1297 ;; Introspection test requires installed libraries
1298 (delete 'check)
1299 (add-after 'install 'check
1300 (assoc-ref %standard-phases 'check))
1301 #$@(if (target-32bit?)
1302 ;; This currently fails with Guile running out of memory to
1303 ;; load the large ELF files in memory (see:
1304 ;; <https://codeberg.org/guix/guix/issues/1262>).
1305 #~((delete 'make-dynamic-linker-cache))
1306 #~()))))
1307 (native-inputs
1308 (append (if (supported-package? librsvg)
1309 ;; Only needed for tests
1310 (list librsvg)
1311 '())
1312 (list
1313 docbook-xml-4.3
1314 docbook-xsl
1315 gettext-minimal
1316 `(,glib "bin")
1317 glibc-utf8-locales ;some tests require en_US.UTF-8
1318 gobject-introspection ;for building introspection data
1319 graphene
1320 gtk-doc/stable ;for building documentation
1321 intltool
1322 libxslt ;for building man-pages
1323 pkg-config
1324 python-pygobject
1325 ;; These python modules are required for building documentation.
1326 python-docutils-0.19
1327 python-jinja2
1328 python-markdown
1329 python-markupsafe
1330 python-pygments
1331 python-toml
1332 python-typogrify
1333 sassc ;for building themes
1334 shaderc
1335 tzdata-for-tests
1336 vala
1337 xorg-server-for-tests)))
1338 (inputs
1339 (list colord ;for color printing support
1340 cups ;for CUPS print-backend
1341 fribidi
1342 gi-docgen
1343 gstreamer ;for gstreamer media-backend
1344 gst-plugins-bad ;provides gstreamer-player
1345 gst-plugins-base ;provides gstreamer-gl
1346 harfbuzz
1347 iso-codes/pinned
1348 json-glib
1349 libcloudproviders ;for cloud-providers support
1350 libgudev ;for gstreamer-gl
1351 libjpeg-turbo
1352 libpng
1353 librest
1354 libtiff
1355 python
1356 tinysparql)) ;for filechooser search support
1357 (propagated-inputs
1358 ;; Following dependencies are referenced in .pc files.
1359 (list cairo
1360 fontconfig
1361 gdk-pixbuf
1362 glib
1363 graphene
1364 libepoxy
1365 libx11 ;for x11 display-backend
1366 libxcomposite
1367 libxcursor
1368 libxdamage
1369 libxext
1370 libxfixes
1371 libxi
1372 libxinerama ;for xinerama support
1373 libxkbcommon
1374 libxrandr
1375 libxrender
1376 pango
1377 vulkan-headers
1378 vulkan-loader ;for vulkan graphics API support
1379 wayland ;for wayland display-backend
1380 wayland-protocols))
1381 (native-search-paths
1382 (list
1383 (search-path-specification
1384 (variable "GUIX_GTK4_PATH")
1385 (files '("lib/gtk-4.0")))))
1386 (search-paths native-search-paths)
1387 (home-page "https://www.gtk.org/")
1388 (synopsis "Cross-platform widget toolkit")
1389 (description "GTK is a multi-platform toolkit for creating graphical user
1390interfaces. Offering a complete set of widgets, GTK is suitable for projects
1391ranging from small one-off tools to complete application suites.")
1392 (license license:lgpl2.1+)))
1393
1394;;;
1395;;; Guile bindings.
1396;;;
1397
1398(define-public guile-cairo
1399 (package
1400 (name "guile-cairo")
1401 (version "1.11.2")
1402 (source (origin
1403 (method url-fetch)
1404 (uri (string-append "mirror://savannah/guile-cairo/guile-cairo-"
1405 version ".tar.gz"))
1406 (sha256
1407 (base32
1408 "0yx0844p61ljd4d3d63qrawiygiw6ks02fwv2cqx7nav5kfd8ck2"))
1409 (modules '((guix build utils)))
1410 (snippet
1411 (begin
1412 '(begin
1413 ;; Install Scheme files in …/guile/site/X.Y.
1414 (substitute* (find-files "." "^Makefile\\.in$")
1415 (("^(.*)dir = (.*)/guile/site(.*)" _ name prefix suffix)
1416 (string-append name "dir = " prefix
1417 "/guile/site/@GUILE_EFFECTIVE_VERSION@"
1418 suffix)))
1419 #t)))))
1420 (build-system gnu-build-system)
1421 (arguments
1422 ;; Uses of 'scm_t_uint8' & co. are deprecated; don't stop the build
1423 ;; because of them.
1424 `(#:configure-flags '("--disable-Werror")
1425 #:make-flags '("GUILE_AUTO_COMPILE=0") ; to prevent guild warnings
1426 #:modules ((guix build gnu-build-system)
1427 (guix build utils)
1428 (ice-9 rdelim)
1429 (ice-9 popen))
1430 #:phases
1431 (modify-phases %standard-phases
1432 (add-after 'install 'install-go-files
1433 (lambda* (#:key outputs inputs #:allow-other-keys)
1434 (let* ((out (assoc-ref outputs "out"))
1435 (effective (read-line
1436 (open-pipe* OPEN_READ
1437 "guile" "-c"
1438 "(display (effective-version))")))
1439 (module-dir (string-append out "/share/guile/site/"
1440 effective))
1441 (object-dir (string-append out "/lib/guile/" effective
1442 "/site-ccache"))
1443 (prefix (string-length module-dir)))
1444 ;; compile to the destination
1445 (for-each (lambda (file)
1446 (let* ((base (string-drop (string-drop-right file 4)
1447 prefix))
1448 (go (string-append object-dir base ".go")))
1449 (invoke "guild" "compile" "-L" module-dir
1450 file "-o" go)))
1451 (find-files module-dir "\\.scm$"))
1452 #t))))))
1453 (inputs
1454 (list guile-lib guile-3.0))
1455 (propagated-inputs
1456 ;; The .pc file refers to 'cairo'.
1457 (list cairo))
1458 (native-inputs
1459 (list pkg-config))
1460 (home-page "https://www.nongnu.org/guile-cairo/")
1461 (synopsis "Cairo bindings for GNU Guile")
1462 (description
1463 "Guile-Cairo wraps the Cairo graphics library for Guile Scheme.
1464Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API
1465stable, providing a firm base on which to do graphics work. Finally, and
1466importantly, it is pleasant to use. You get a powerful and well-maintained
1467graphics library with all of the benefits of Scheme: memory management,
1468exceptions, macros, and a dynamic programming environment.")
1469 (license license:lgpl3+)))
1470
1471(define-public guile2.2-cairo
1472 (package
1473 (inherit guile-cairo)
1474 (name "guile2.2-cairo")
1475 (inputs
1476 (modify-inputs inputs
1477 (delete "guile" "guile-lib")
1478 (append guile-2.2 guile2.2-lib)))))
1479
1480(define-public guile-cairo-next
1481 ;; A commit with cairo-pointer->context, missing from [email protected]
1482 ;; and needed by animated-paintable from g-golf-gtk-4-examples.
1483 (let ((commit "30da459d7a4380174ff243b1560d5512a4bca86e")
1484 (revision "0"))
1485 (package
1486 (inherit guile-cairo)
1487 (name "guile-cairo-next")
1488 (version (git-version "1.11.2" revision commit))
1489 (source (origin
1490 (method git-fetch)
1491 (uri (git-reference
1492 (url "https://git.savannah.gnu.org/git/guile-cairo.git/")
1493 (commit commit)))
1494 (file-name (git-file-name name version))
1495 (sha256
1496 (base32
1497 "0dslfldzgxis8g0g3xaffcqnd1njzz23fjy0v3lc0r2694ra4ny4"))))
1498 (arguments
1499 (substitute-keyword-arguments arguments
1500 ((#:phases phases)
1501 `(modify-phases ,phases
1502 ;; To allow running the check phase before install, add two phases
1503 ;; similar to David Pirotte's suggested patch:
1504 ;; <https://lists.gnu.org/archive/html/guile-user/2023-03/msg00028.html>.
1505 (add-after 'build 'fix-dynamic-link-path
1506 (lambda _
1507 ;; Dynamic-link libguile-cairo foreign extension by name, not
1508 ;; path.
1509 (substitute* "cairo/config.scm"
1510 (("\\(define \\*cairo-lib-path\\* .*")
1511 "\(define *cairo-lib-path* \"libguile-cairo\")\n"))))
1512 (add-before 'check 'set-libtool-path
1513 (lambda _
1514 ;; Use appropriate pre-install libtool path in tests.
1515 (setenv "LTDL_LIBRARY_PATH" "../../guile-cairo/.libs")))))))
1516 (inputs
1517 (list gettext-minimal guile-3.0 guile-lib))
1518 (native-inputs
1519 (list autoconf automake libtool pkg-config texinfo)))))
1520
1521(define-public guile-rsvg
1522 ;; Use a recent snapshot that supports Guile 2.2 and beyond.
1523 (let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678")
1524 (revision "0"))
1525 (package
1526 (name "guile-rsvg")
1527 (version (string-append "2.18.1-" revision "."
1528 (string-take commit 7)))
1529 (source (origin
1530 (method git-fetch)
1531 (uri (git-reference
1532 (url "https://gitlab.com/wingo/guile-rsvg/")
1533 (commit commit)))
1534 (sha256
1535 (base32
1536 "0cnbl40df2sbhpc32cma6j6w312rfvcgbxxqaixgf0ymim3fb248"))
1537 (patches (search-patches "guile-rsvg-pkgconfig.patch"))
1538 (modules '((guix build utils)))
1539 (snippet
1540 '(begin
1541 (substitute* (find-files "." "Makefile\\.am")
1542 (("/share/guile/site")
1543 "/share/guile/site/@GUILE_EFFECTIVE_VERSION@"))
1544 #t))
1545 (file-name (string-append name "-" version ".tar.gz"))))
1546 (build-system gnu-build-system)
1547 (arguments
1548 `(#:modules ((guix build gnu-build-system)
1549 (guix build utils)
1550 (ice-9 rdelim)
1551 (ice-9 popen))
1552 #:phases
1553 (modify-phases %standard-phases
1554 (replace 'bootstrap
1555 (lambda _
1556 (invoke "autoreconf" "-vfi")))
1557 (add-after 'install 'install-go-files
1558 (lambda* (#:key outputs inputs #:allow-other-keys)
1559 (let* ((out (assoc-ref outputs "out"))
1560 (effective (read-line
1561 (open-pipe* OPEN_READ
1562 "guile" "-c"
1563 "(display (effective-version))")))
1564 (module-dir (string-append out "/share/guile/site/"
1565 effective))
1566 (object-dir (string-append out "/lib/guile/" effective
1567 "/site-ccache"))
1568 (prefix (string-length module-dir)))
1569 ;; compile to the destination
1570 (for-each (lambda (file)
1571 (let* ((base (string-drop (string-drop-right file 4)
1572 prefix))
1573 (go (string-append object-dir base ".go")))
1574 (invoke "guild" "compile" "-L" module-dir
1575 file "-o" go)))
1576 (find-files module-dir "\\.scm$"))
1577 #t))))))
1578 (native-inputs (list pkg-config autoconf automake libtool texinfo))
1579 (inputs (list guile-3.0
1580 (librsvg-for-system) guile-lib)) ;for (unit-test)
1581 (propagated-inputs (list guile-cairo))
1582 (synopsis "Render SVG images using Cairo from Guile")
1583 (description
1584 "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
1585images onto Cairo surfaces.")
1586 (home-page "https://wingolog.org/projects/guile-rsvg/")
1587 (license license:lgpl2.1+))))
1588
1589(define-public guile2.2-rsvg
1590 (package
1591 (inherit guile-rsvg)
1592 (name "guile2.2-rsvg")
1593 (inputs
1594 (modify-inputs inputs
1595 (delete "guile" "guile-lib")
1596 (append guile-2.2 guile2.2-lib)))
1597 (propagated-inputs (list guile2.2-cairo))))
1598
1599(define-public guile-present
1600 (package
1601 (name "guile-present")
1602 (version "0.3.0")
1603 (source (origin
1604 (method url-fetch)
1605 (uri (string-append "http://wingolog.org/pub/guile-present/"
1606 "guile-present-" version ".tar.gz"))
1607 (sha256
1608 (base32
1609 "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
1610 (patches (search-patches "guile-present-coding.patch"))
1611 (modules '((guix build utils)))
1612 (snippet
1613 '(begin
1614 ;; Allow builds with Guile 3.0.
1615 (substitute* "configure"
1616 (("2\\.2 2\\.0")
1617 "3.0 2.2 2.0"))
1618
1619 ;; Install .go files in the right place.
1620 (substitute* "Makefile.in"
1621 (("/ccache") "/site-ccache"))
1622 #t))))
1623 (build-system gnu-build-system)
1624 (arguments
1625 `(#:phases
1626 (modify-phases %standard-phases
1627 (add-after 'install 'post-install
1628 (lambda* (#:key inputs outputs #:allow-other-keys)
1629 (let* ((out (assoc-ref outputs "out"))
1630 (bin (string-append out "/bin"))
1631 (guile (assoc-ref inputs "guile"))
1632 (version
1633 ,(match (assoc "guile" (package-inputs this-package))
1634 (("guile" guile)
1635 (version-major+minor (package-version guile))))))
1636 (substitute* (find-files bin ".*")
1637 (("guile")
1638 (string-append guile "/bin/guile -L "
1639 out "/share/guile/site/" version " -C "
1640 out "/lib/guile/" version "/site-ccache "))))
1641 #t)))))
1642 (native-inputs (list pkg-config))
1643 (inputs (list guile-3.0))
1644 (propagated-inputs
1645 ;; These are used by the (present …) modules.
1646 (list guile-lib guile-cairo guile-rsvg))
1647 (home-page "https://wingolog.org/software/guile-present/")
1648 (synopsis "Create SVG or PDF presentations in Guile")
1649 (description
1650 "Guile-Present defines a declarative vocabulary for presentations,
1651together with tools to render presentation documents as SVG or PDF.
1652Guile-Present can be used to make presentations programmatically, but also
1653includes a tools to generate PDF presentations out of Org mode and Texinfo
1654documents.")
1655 (license license:lgpl3+)))
1656
1657(define-public guile2.2-present
1658 (package
1659 (inherit guile-present)
1660 (name "guile2.2-present")
1661 (inputs (list guile-2.2))
1662 (propagated-inputs
1663 (list guile2.2-lib guile2.2-cairo guile2.2-rsvg))))
1664
1665;;;
1666;;; C++ bindings.
1667;;;
1668
1669(define-public cairomm
1670 (package
1671 (name "cairomm")
1672 (version "1.18.0")
1673 (source (origin
1674 (method url-fetch)
1675 (uri (string-append "https://www.cairographics.org/releases/"
1676 "cairomm-" version ".tar.xz"))
1677 (sha256
1678 (base32
1679 "1yrwy14k1lh74kmr41pnms6zr1c9z8md4xkji2mfia1y9qwma4mq"))))
1680 (build-system meson-build-system)
1681 (outputs '("out" "doc"))
1682 (arguments
1683 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
1684 #:configure-flags
1685 (list
1686 "-Dbuild-documentation=true"
1687 "-Dboost-shared=true")
1688 #:phases
1689 (modify-phases %standard-phases
1690 (add-after 'install 'move-doc
1691 (lambda* (#:key outputs #:allow-other-keys)
1692 (let* ((out (assoc-ref outputs "out"))
1693 (doc (assoc-ref outputs "doc")))
1694 (mkdir-p (string-append doc "/share"))
1695 (rename-file
1696 (string-append out "/share/doc")
1697 (string-append doc "/share/doc"))))))))
1698 (native-inputs
1699 (list boost
1700 doxygen
1701 graphviz
1702 mm-common
1703 perl
1704 pkg-config
1705 libxslt))
1706 (inputs
1707 (list fontconfig))
1708 (propagated-inputs
1709 (list libsigc++ cairo))
1710 (home-page "https://cairographics.org/")
1711 (synopsis "C++ bindings to the Cairo 2D graphics library")
1712 (description
1713 "Cairomm provides a C++ programming interface to the Cairo 2D graphics
1714library.")
1715 (license license:lgpl2.0+)))
1716
1717(define-public cairomm-1.14
1718 (package
1719 (inherit cairomm)
1720 (name "cairomm")
1721 (version "1.14.2")
1722 (source
1723 (origin
1724 (method url-fetch)
1725 (uri
1726 (string-append "https://www.cairographics.org/releases/"
1727 name "-" version ".tar.xz"))
1728 (sha256
1729 (base32 "1qwdj9xw1w651kqwh82nipbryimm1ir5n3c6q34nphsx576bj9h1"))))
1730 (propagated-inputs
1731 (modify-inputs propagated-inputs
1732 (prepend libsigc++-2)))))
1733
1734(define-public pangomm
1735 (package
1736 (name "pangomm")
1737 (version "2.56.1")
1738 (source (origin
1739 (method url-fetch)
1740 (uri (string-append "mirror://gnome/sources/" name "/"
1741 (version-major+minor version) "/"
1742 name "-" version ".tar.xz"))
1743 (sha256
1744 (base32
1745 "0pbmhpw4pdzv8202b47n9ms64if15jkf4j5lbfanpp4v1sk5m7sk"))))
1746 (build-system meson-build-system)
1747 (outputs '("out" "doc"))
1748 (arguments
1749 (list
1750 #:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
1751 #:configure-flags #~(list "-Dbuild-documentation=true")
1752 #:phases
1753 #~(modify-phases %standard-phases
1754 (add-after 'install 'move-doc
1755 (lambda _
1756 (mkdir-p (string-append #$output:doc "/share"))
1757 (rename-file (string-append #$output "/share/doc")
1758 (string-append #$output:doc "/share/doc")))))))
1759 (native-inputs
1760 (list graphviz
1761 doxygen
1762 m4
1763 mm-common
1764 perl
1765 pkg-config
1766 python
1767 libxslt))
1768 (propagated-inputs
1769 (list cairo
1770 cairomm
1771 glibmm
1772 pango))
1773 (home-page "https://pango.gnome.org//")
1774 (synopsis "C++ interface to the Pango text rendering library")
1775 (description "Pangomm provides a C++ programming interface to the Pango
1776text rendering library.")
1777 (license license:lgpl2.1+)))
1778
1779(define-public pangomm-2.46
1780 (package
1781 (inherit pangomm)
1782 (name "pangomm")
1783 (version "2.46.4")
1784 (source
1785 (origin
1786 (method url-fetch)
1787 (uri
1788 (string-append "mirror://gnome/sources/" name "/"
1789 (version-major+minor version) "/"
1790 name "-" version ".tar.xz"))
1791 (sha256
1792 (base32 "08nvd36s2fqksrkh573cn4gz90cpyl91azrpp7j4shi62mk1c85r"))))
1793 (propagated-inputs
1794 (list cairomm-1.14 glibmm-2.66 pango))))
1795
1796(define-public atkmm
1797 (package
1798 (name "atkmm")
1799 (version "2.36.3")
1800 (source (origin
1801 (method url-fetch)
1802 (uri (string-append "mirror://gnome/sources/" name "/"
1803 (version-major+minor version) "/"
1804 name "-" version ".tar.xz"))
1805 (sha256
1806 (base32
1807 "0x2rdjmgmxza83lznss69nz7z6ny1cbh1ih2fbdhmpn4l3m69hkf"))))
1808 (build-system meson-build-system)
1809 (outputs '("out" "doc"))
1810 (arguments
1811 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
1812 #:configure-flags
1813 (list
1814 "-Dbuild-documentation=true")
1815 #:phases
1816 (modify-phases %standard-phases
1817 (add-after 'install 'move-doc
1818 (lambda* (#:key outputs #:allow-other-keys)
1819 (let* ((out (assoc-ref outputs "out"))
1820 (doc (assoc-ref outputs "doc")))
1821 (mkdir-p (string-append doc "/share"))
1822 (rename-file
1823 (string-append out "/share/doc")
1824 (string-append doc "/share/doc"))))))))
1825 (native-inputs
1826 (list graphviz
1827 doxygen
1828 m4
1829 mm-common
1830 perl
1831 pkg-config
1832 python
1833 libxslt))
1834 (propagated-inputs
1835 (list glibmm at-spi2-core))
1836 (synopsis "C++ bindings for ATK")
1837 (description "ATKmm is the C++ binding for the ATK library.")
1838 (home-page "https://wiki.gnome.org/Accessibility")
1839 (license
1840 (list
1841 ;; Library
1842 license:lgpl2.1+
1843 ;; Tools
1844 license:gpl2+))))
1845
1846(define-public atkmm-2.28
1847 (package
1848 (inherit atkmm)
1849 (name "atkmm")
1850 (version "2.28.4")
1851 (source
1852 (origin
1853 (method url-fetch)
1854 (uri
1855 (string-append "mirror://gnome/sources/" name "/"
1856 (version-major+minor version) "/"
1857 name "-" version ".tar.xz"))
1858 (sha256
1859 (base32 "1cysiz908phkagwnls44xxa60xls7r3fw540zcg00g7q520jl50a"))))
1860 (propagated-inputs
1861 (modify-inputs propagated-inputs
1862 (replace "glibmm" glibmm-2.66)))))
1863
1864(define-public gtkmm
1865 (package
1866 (name "gtkmm")
1867 (version "4.20.0")
1868 (source
1869 (origin
1870 (method url-fetch)
1871 (uri
1872 (string-append "mirror://gnome/sources/" name "/"
1873 (version-major+minor version) "/"
1874 name "-" version ".tar.xz"))
1875 (sha256
1876 (base32 "0cy8b6ysxlrwi1n5f7r6fh9sj8y9askcf7vqj5grg40gnzwrpbfs"))))
1877 (build-system meson-build-system)
1878 (outputs '("out" "doc"))
1879 (arguments
1880 `(#:configure-flags '("-Dbuild-documentation=true")
1881 #:phases
1882 (modify-phases %standard-phases
1883 (add-before 'build 'set-cache
1884 (lambda _
1885 (setenv "XDG_CACHE_HOME" (getcwd))))
1886 (add-before 'check 'pre-check
1887 (lambda _
1888 ;; Tests require a running X server.
1889 (system "Xvfb :1 +extension GLX &")
1890 (setenv "DISPLAY" ":1")
1891 ;; Tests write to $HOME.
1892 (setenv "HOME" (getcwd))
1893 (setenv "XDG_RUNTIME_DIR" (getcwd))
1894 ;; For missing '/etc/machine-id'.
1895 (setenv "DBUS_FATAL_WARNINGS" "0")))
1896 (add-after 'install 'move-doc
1897 (lambda* (#:key outputs #:allow-other-keys)
1898 (let* ((out (assoc-ref outputs "out"))
1899 (doc (assoc-ref outputs "doc")))
1900 (mkdir-p (string-append doc "/share"))
1901 (rename-file
1902 (string-append out "/share/doc")
1903 (string-append doc "/share/doc"))))))))
1904 (native-inputs
1905 (list graphviz
1906 doxygen
1907 `(,glib "bin")
1908 m4
1909 mm-common
1910 perl
1911 pkg-config
1912 python
1913 libxslt
1914 xorg-server-for-tests))
1915 (propagated-inputs
1916 (list cairomm glibmm gtk pangomm))
1917 (synopsis "C++ Interfaces for GTK+ and GNOME")
1918 (description "GTKmm is the official C++ interface for the popular GUI
1919library GTK+. Highlights include typesafe callbacks, and a comprehensive set
1920of widgets that are easily extensible via inheritance. You can create user
1921interfaces either in code or with the Glade User Interface designer, using
1922libglademm. There's extensive documentation, including API reference and a
1923tutorial.")
1924 (home-page "https://gtkmm.gnome.org/")
1925 (license
1926 (list
1927 ;; Library
1928 license:lgpl2.1+
1929 ;; Tools
1930 license:gpl2+))))
1931
1932(define-public gtkmm-3
1933 (package
1934 (inherit gtkmm)
1935 (name "gtkmm")
1936 (version "3.24.9")
1937 (source
1938 (origin
1939 (method url-fetch)
1940 (uri
1941 (string-append "mirror://gnome/sources/" name "/"
1942 (version-major+minor version) "/"
1943 name "-" version ".tar.xz"))
1944 (sha256
1945 (base32 "1kj4mla3z9kxhdby5w88nl744xkmq6xchf79m1kfa72p0kjbzm9h"))))
1946 (propagated-inputs
1947 (list atkmm-2.28
1948 cairomm-1.14
1949 glibmm
1950 gtk+
1951 pangomm-2.46))))
1952
1953(define-public gtkmm-2
1954 (package
1955 (inherit gtkmm)
1956 (name "gtkmm")
1957 (version "2.24.5")
1958 (source
1959 (origin
1960 (method url-fetch)
1961 (uri
1962 (string-append "mirror://gnome/sources/" name "/"
1963 (version-major+minor version) "/"
1964 name "-" version ".tar.xz"))
1965 (sha256
1966 (base32 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
1967 (build-system gnu-build-system)
1968 (arguments
1969 (strip-keyword-arguments
1970 '(#:configure-flags) (package-arguments gtkmm)))
1971 (propagated-inputs
1972 (list atkmm-2.28 cairomm-1.14 glibmm-2.66 gtk+-2 pangomm-2.46))))
1973
1974(define-public gtksourceviewmm
1975 (package
1976 (name "gtksourceviewmm")
1977 (version "3.18.0")
1978 (source (origin
1979 (method url-fetch)
1980 (uri (string-append "mirror://gnome/sources/" name "/"
1981 (version-major+minor version) "/"
1982 name "-" version ".tar.xz"))
1983 (sha256
1984 (base32 "0fgvmhm4h4qmxig87qvangs6ijw53mi40siz7pixlxbrsgiil22i"))))
1985 (build-system gnu-build-system)
1986 (native-inputs
1987 (list pkg-config))
1988 (propagated-inputs
1989 ;; In 'Requires' of gtksourceviewmm-3.0.pc.
1990 (list glibmm gtkmm-3 gtksourceview-3))
1991 (synopsis "C++ interface to the GTK+ 'GtkTextView' widget")
1992 (description
1993 "gtksourceviewmm is a portable C++ library that extends the standard GTK+
1994framework for multiline text editing with support for configurable syntax
1995highlighting, unlimited undo/redo, search and replace, a completion framework,
1996printing and other features typical of a source code editor.")
1997 (license license:lgpl2.1+)
1998 (home-page "https://developer.gnome.org/gtksourceview/")))
1999
2000;;;
2001;;; Python bindings.
2002;;;
2003
2004(define-public python-pycairo
2005 (package
2006 (name "python-pycairo")
2007 (version "1.28.0")
2008 (source
2009 (origin
2010 (method git-fetch)
2011 (uri (git-reference
2012 (url "https://github.com/pygobject/pycairo")
2013 (commit (string-append "v" version))))
2014 (file-name (git-file-name name version))
2015 (sha256
2016 (base32 "0k0mm3kx0rsz07v7a4ijrgjnxigr9in1zcsij8nlg8aszxi7a09q"))))
2017 (build-system meson-build-system)
2018 (native-inputs
2019 (list pkg-config python python-pytest python-setuptools))
2020 (propagated-inputs ;pycairo.pc references cairo
2021 (list cairo))
2022 (home-page "https://cairographics.org/pycairo/")
2023 (synopsis "Python bindings for cairo")
2024 (description
2025 "Pycairo is a set of Python bindings for the Cairo graphics library.")
2026 (properties
2027 '((upstream-name . "pycairo")))
2028 (license license:lgpl3+)))
2029
2030(define-public perl-cairo
2031 (package
2032 (name "perl-cairo")
2033 (version "1.109")
2034 (source (origin
2035 (method url-fetch)
2036 (uri (string-append
2037 "mirror://cpan/authors/id/X/XA/XAOC/Cairo-"
2038 version ".tar.gz"))
2039 (sha256
2040 (base32
2041 "0zq78dv22arg35ma6kah9cwfd1zx8gg7amsibzd128qw81p766c2"))))
2042 (build-system perl-build-system)
2043 (native-inputs
2044 (list perl-extutils-depends perl-extutils-pkgconfig))
2045 (propagated-inputs
2046 (list cairo))
2047 (home-page "https://metacpan.org/release/Cairo")
2048 (synopsis "Perl interface to the cairo 2d vector graphics library")
2049 (description "Cairo provides Perl bindings for the vector graphics library
2050cairo. It supports multiple output targets, including PNG, PDF and SVG. Cairo
2051produces identical output on all those targets.")
2052 (license license:lgpl2.1+)))
2053
2054(define-public perl-cairo-gobject
2055 (package
2056 (name "perl-cairo-gobject")
2057 (version "1.005")
2058 (source
2059 (origin
2060 (method url-fetch)
2061 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/"
2062 "Cairo-GObject-" version ".tar.gz"))
2063 (sha256
2064 (base32 "0l2wcz77ndmbgvxx34gdm919a3dxh9fixqr47p50n78ysx2692cd"))))
2065 (build-system perl-build-system)
2066 (native-inputs
2067 (list perl-extutils-depends perl-extutils-pkgconfig))
2068 (propagated-inputs
2069 (list perl-cairo perl-glib))
2070 (home-page "https://metacpan.org/dist/Cairo-GObject")
2071 (synopsis "Integrate Cairo into the Glib type system")
2072 (description "Cairo::GObject registers Cairo's types with Glib's type systems,
2073so that they can be used normally in signals and properties.")
2074 (license license:lgpl2.1+)))
2075
2076(define-public perl-gtk2
2077 (package
2078 (name "perl-gtk2")
2079 (version "1.24993")
2080 (source (origin
2081 (method url-fetch)
2082 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Gtk2-"
2083 version ".tar.gz"))
2084 (sha256
2085 (base32
2086 "0ry9jfvfgdwzalxcvwsgr7plhk3agx7p40l0fqdf3vrf7ds47i29"))))
2087 (build-system perl-build-system)
2088 (native-inputs
2089 (list perl-extutils-depends perl-extutils-pkgconfig pkg-config))
2090 (inputs
2091 (list gtk+-2 gdk-pixbuf))
2092 (propagated-inputs
2093 (list perl-pango))
2094 (arguments
2095 (list
2096 #:phases
2097 #~(modify-phases %standard-phases
2098 (add-before 'build 'fix-tests
2099 (lambda _
2100 ;; XXX: by default it uses 'loaders.cache' from librsvg, which supports SVG only.
2101 (setenv "GDK_PIXBUF_MODULE_FILE"
2102 (string-append #$(this-package-input "gdk-pixbuf")
2103 "/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"))
2104 ;; See https://gitlab.gnome.org/GNOME/perl-gtk2/issues/3.
2105 (substitute* "t/GdkPixbuf.t"
2106 (("tests => 112") "tests => 111")
2107 (("ok \\(defined \\$pixbuf, \"Don't crash on partial pixmap data\"\\);")
2108 "# ok (defined $pixbuf, \"Don't crash on partial pixmap data\");")))))))
2109 (home-page "https://metacpan.org/release/Gtk2")
2110 (synopsis "Perl interface to the 2.x series of the Gimp Toolkit library")
2111 (description "Perl bindings to the 2.x series of the Gtk+ widget set.
2112This module allows you to write graphical user interfaces in a Perlish and
2113object-oriented way, freeing you from the casting and memory management in C,
2114yet remaining very close in spirit to original API.")
2115 (license license:lgpl2.1+)))
2116
2117(define-public perl-gtk3
2118 (package
2119 (name "perl-gtk3")
2120 (version "0.038")
2121 (source
2122 (origin
2123 (method url-fetch)
2124 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Gtk3-"
2125 version ".tar.gz"))
2126 (sha256
2127 (base32 "1k3sfcvxxx7ir7ail7w1lkmr4np0k3criljzw5wir63lmbr4pp3h"))))
2128 (build-system perl-build-system)
2129 (arguments
2130 `(#:phases
2131 (modify-phases %standard-phases
2132 (add-before 'check 'pre-check
2133 (lambda _
2134 ;; Tests require a running X server.
2135 (system "Xvfb :1 +extension GLX &")
2136 (setenv "DISPLAY" ":1"))))))
2137 (native-inputs
2138 (list adwaita-icon-theme
2139 `(,gtk+ "bin")
2140 gobject-introspection
2141 perl-extutils-depends
2142 perl-extutils-pkgconfig
2143 perl-test-simple
2144 xorg-server-for-tests))
2145 (propagated-inputs
2146 (list gtk+
2147 perl-cairo-gobject
2148 perl-carp
2149 perl-exporter
2150 perl-glib-object-introspection))
2151 (home-page "https://metacpan.org/dist/Gtk3")
2152 (synopsis "Perl interface to the 3.x series of the gtk+ toolkit")
2153 (description "Perl bindings to the 3.x series of the gtk+ toolkit.
2154This module allows you to write graphical user interfaces in a Perlish and
2155object-oriented way, freeing you from the casting and memory management in C,
2156yet remaining very close in spirit to original API.")
2157 (license license:lgpl2.1+)))
2158
2159(define-public perl-pango
2160 (package
2161 (name "perl-pango")
2162 (version "1.227")
2163 (source (origin
2164 (method url-fetch)
2165 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Pango-"
2166 version ".tar.gz"))
2167 (sha256
2168 (base32
2169 "0wdcidnfnb6nm79fzfs39ivawj3x8m98a147fmcxgv1zvwia9c1l"))))
2170 (build-system perl-build-system)
2171 (native-inputs
2172 (list perl-extutils-depends perl-extutils-pkgconfig))
2173 (inputs
2174 (list pango))
2175 (propagated-inputs
2176 (list perl-cairo perl-glib))
2177 (home-page "https://metacpan.org/release/Pango")
2178 (synopsis "Layout and render international text")
2179 (description "Pango is a library for laying out and rendering text, with an
2180emphasis on internationalization. Pango can be used anywhere that text layout
2181is needed, but using Pango in conjunction with Cairo and/or Gtk2 provides a
2182complete solution with high quality text handling and graphics rendering.
2183
2184Dynamically loaded modules handle text layout for particular combinations of
2185script and font backend. Pango provides a wide selection of modules, including
2186modules for Hebrew, Arabic, Hangul, Thai, and a number of Indic scripts.
2187Virtually all of the world's major scripts are supported.
2188
2189In addition to the low level layout rendering routines, Pango includes
2190@code{Pango::Layout}, a high level driver for laying out entire blocks of text,
2191and routines to assist in editing internationalized text.")
2192 (license license:lgpl2.1+)))
2193
2194(define-public girara
2195 (package
2196 (name "girara")
2197 (version "2026.02.04")
2198 (source
2199 (origin
2200 (method git-fetch)
2201 (uri (git-reference
2202 (url "https://github.com/pwmt/girara/")
2203 (commit version)))
2204 (file-name (git-file-name name version))
2205 (sha256
2206 (base32 "04adir5a8g2hqgv4vzpg52i2524abpcrqf3fcffrbwp8syan0df1"))))
2207 (build-system meson-build-system)
2208 (native-inputs (list pkg-config))
2209 (inputs (list glib))
2210 (home-page "https://pwmt.org/projects/girara/")
2211 (synopsis "Library for minimalistic gtk+3 user interfaces")
2212 (description "Girara is a library that implements a user interface that
2213focuses on simplicity and minimalism. Currently based on GTK+, a
2214cross-platform widget toolkit, it provides an interface that focuses on three
2215main components: a so-called view widget that represents the actual
2216application, an input bar that is used to execute commands of the
2217application and the status bar which provides the user with current
2218information.")
2219 (license license:zlib)))
2220
2221(define-public gtk-doc
2222 (package
2223 (name "gtk-doc")
2224 (version "1.35.1")
2225 (source (origin
2226 (method url-fetch)
2227 (uri (string-append "mirror://gnome/sources/" name "/"
2228 (version-major+minor version) "/"
2229 name "-" version ".tar.xz"))
2230 (sha256
2231 (base32
2232 "1qi5bgqca1chdcfw7v4h3sw8jg661nmp77d7x658mn6nxlj9y731"))
2233 (patches
2234 (search-patches "gtk-doc-respect-xml-catalog.patch"
2235 "gtk-doc-mkhtml-test-fix.patch"))))
2236 (build-system meson-build-system)
2237 (arguments
2238 (list
2239 #:phases
2240 #~(modify-phases %standard-phases
2241 (add-after 'install 'wrap-executables
2242 (lambda _
2243 (let ((docbook-xsl-catalog
2244 #$(let ((docbook-xsl (this-package-input "docbook-xsl")))
2245 (file-append docbook-xsl
2246 "/xml/xsl/" (package-name docbook-xsl)
2247 "-" (package-version docbook-xsl)
2248 "/catalog.xml"))))
2249 (for-each (lambda (prog)
2250 (wrap-program prog
2251 `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
2252 `("XML_CATALOG_FILES" " " suffix (,docbook-xsl-catalog))))
2253 (find-files (string-append #$output "/bin")))))))))
2254 (native-inputs
2255 (list gettext-minimal
2256 `(,glib "bin")
2257 gobject-introspection
2258 itstool
2259 perl
2260 pkg-config
2261 python-wrapper))
2262 (inputs
2263 (list bash-minimal
2264 bc
2265 dblatex
2266 docbook-xml-4.3
2267 docbook-xsl
2268 glib
2269 libxml2
2270 libxslt
2271 python
2272 python-anytree
2273 python-lxml
2274 python-parameterized
2275 python-pygments
2276 source-highlight
2277 yelp-tools))
2278 ;; xsltproc's search paths, to avoid propagating libxslt.
2279 (native-search-paths %libxslt-search-paths)
2280 (home-page "https://wiki.gnome.org/DocumentationProject/GtkDoc")
2281 (synopsis "GTK+ DocBook Documentation Generator")
2282 (description "GtkDoc is a tool used to extract API documentation from C-code
2283like Doxygen, but handles documentation of GObject (including signals and
2284properties) that makes it very suitable for GTK+ apps and libraries. It uses
2285docbook for intermediate files and can produce html by default and pdf/man-pages
2286with some extra work.")
2287 (license
2288 (list
2289 ;; Docs.
2290 license:fdl1.1+
2291 ;; Others.
2292 license:gpl2+))))
2293
2294;; This is a variant of the 'gtk-doc' package that is not updated often. It
2295;; is intended to be used as a native-input at build-time only. This allows
2296;; the main 'gtk-doc', 'dblatex' and 'imagemagick' packages to be freely
2297;; updated on the 'master' branch without triggering an excessive number of
2298;; rebuilds.
2299(define-public gtk-doc/stable
2300 (hidden-package
2301 (package/inherit gtk-doc
2302 (inputs (modify-inputs inputs
2303 (replace "dblatex" dblatex/stable))))))
2304
2305(define-public gtk-engines
2306 (package
2307 (name "gtk-engines")
2308 (version "2.20.2")
2309 (source (origin
2310 (method url-fetch)
2311 (uri (string-append "mirror://gnome/sources/" name "/"
2312 (version-major+minor version) "/"
2313 name "-" version ".tar.bz2"))
2314 (sha256
2315 (base32
2316 "1db65pb0j0mijmswrvpgkdabilqd23x22d95hp5kwxvcramq1dhm"))))
2317 (build-system gnu-build-system)
2318 (arguments
2319 `(#:configure-flags
2320 `("--enable-animation")))
2321 (native-inputs
2322 (list pkg-config intltool))
2323 (inputs
2324 ;; Don't propagate GTK+ to reduce "profile pollution".
2325 (list gtk+-2)) ; required by gtk-engines-2.pc
2326 (home-page "https://live.gnome.org/GnomeArt")
2327 (synopsis "Theming engines for GTK+ 2.x")
2328 (description
2329 "This package contains the standard GTK+ 2.x theming engines including
2330Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,
2331Redmond95 and ThinIce.")
2332 (license (list license:gpl2+ license:lgpl2.1+))))
2333
2334(define-public murrine
2335 (package
2336 (name "murrine")
2337 (version "0.98.2")
2338 (source (origin
2339 (method url-fetch)
2340 (uri (string-append "mirror://gnome/sources/" name "/"
2341 (version-major+minor version) "/"
2342 name "-" version ".tar.xz"))
2343 (sha256
2344 (base32
2345 "129cs5bqw23i76h3nmc29c9mqkm9460iwc8vkl7hs4xr07h8mip9"))))
2346 (build-system gnu-build-system)
2347 (arguments
2348 `(#:configure-flags
2349 `("--enable-animation"
2350 "--enable-animationrtl"
2351 ;; Relax GCC 14's checks.
2352 "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration")))
2353 (native-inputs
2354 (list pkg-config intltool))
2355 (propagated-inputs
2356 (list gtk+-2))
2357 (home-page "https://live.gnome.org/GnomeArt")
2358 (synopsis "Cairo-based theming engine for GTK+ 2.x")
2359 (description
2360 "Murrine is a cairo-based GTK+ theming engine. It is named after the
2361glass artworks done by Venicians glass blowers.")
2362 (license license:gpl2+)))
2363
2364(define-public gtkspell3
2365 (package
2366 (name "gtkspell3")
2367 (version "3.0.10")
2368 (source (origin
2369 (method url-fetch)
2370 (uri (string-append "mirror://sourceforge/gtkspell/"
2371 version "/" name "-" version ".tar.xz"))
2372 (sha256
2373 (base32
2374 "0cjp6xdcnzh6kka42w9g0w2ihqjlq8yl8hjm9wsfnixk6qwgch5h"))))
2375 (build-system gnu-build-system)
2376 (native-inputs
2377 (list intltool pkg-config vala))
2378 (inputs
2379 (list gobject-introspection gtk+ pango))
2380 (propagated-inputs
2381 (list enchant)) ; gtkspell3-3.0.pc refers to it
2382 (home-page "https://gtkspell.sourceforge.net")
2383 (synopsis "Spell-checking addon for GTK's TextView widget")
2384 (description
2385 "GtkSpell provides word-processor-style highlighting and replacement of
2386misspelled words in a GtkTextView widget.")
2387 (license license:gpl2+)))
2388
2389(define-public clipit
2390 (package
2391 (name "clipit")
2392 (version "1.4.4")
2393 (source
2394 (origin
2395 (method git-fetch)
2396 (uri (git-reference
2397 (url "https://github.com/CristianHenzel/ClipIt")
2398 (commit (string-append "v" version))))
2399 (file-name (git-file-name name version))
2400 (sha256
2401 (base32 "05xi29v2y0rvb33fmvrz7r9j4l858qj7ngwd7dp4pzpkkaybjln0"))))
2402 (build-system gnu-build-system)
2403 (arguments
2404 (list #:phases
2405 #~(modify-phases %standard-phases
2406 (add-before 'configure 'relax-gcc-14-strictness
2407 (lambda _
2408 (setenv "CFLAGS"
2409 (string-join
2410 (list "-Wno-error=incompatible-pointer-types"
2411 "-Wno-error=implicit-function-declaration"
2412 "-Wno-error=int-conversion")
2413 " ")))))))
2414 (native-inputs
2415 (list autoconf automake intltool pkg-config))
2416 (inputs
2417 (list gtk+-2))
2418 (home-page "https://github.com/CristianHenzel/ClipIt")
2419 (synopsis "Lightweight GTK+ clipboard manager")
2420 (description
2421 "ClipIt is a clipboard manager with features such as a history, search
2422thereof, global hotkeys and clipboard item actions. It was forked from
2423Parcellite and adds bugfixes and features.")
2424 (license license:gpl2+)))
2425
2426(define-public graphene
2427 (package
2428 (name "graphene")
2429 (version "1.10.8")
2430 (source
2431 (origin
2432 (method git-fetch)
2433 (uri
2434 (git-reference
2435 (url "https://github.com/ebassi/graphene.git")
2436 (commit version)))
2437 (file-name (git-file-name name version))
2438 (sha256
2439 (base32 "18a0icpr003y0bh1kghgh2nqrm8a8s5lak8lbnc9wdfkc760vlw8"))))
2440 (build-system meson-build-system)
2441 (arguments
2442 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
2443 #:configure-flags
2444 (list
2445 "-Dinstalled_tests=false"
2446 ;; Armhf with neon in graphene segfaulting is a known issue.
2447 ;; https://github.com/ebassi/graphene/issues/215
2448 ,@(if (target-arm32?)
2449 '("-Darm_neon=false")
2450 '())
2451 ,@(if (%current-target-system)
2452 ;; Introspection requires running binaries for 'host' on 'build'.
2453 '("-Dintrospection=disabled")
2454 '()))))
2455 (native-inputs
2456 `(("git" ,git-minimal/pinned)
2457 ("gobject-introspection" ,gobject-introspection)
2458 ("mutest" ,mutest)
2459 ("pkg-config" ,pkg-config)))
2460 (inputs
2461 (list glib python))
2462 (synopsis "Thin layer of graphic data types")
2463 (description "Graphene provides graphic types and their relative API; it
2464does not deal with windowing system surfaces, drawing, scene graphs, or input.")
2465 (home-page "https://ebassi.github.io/graphene/")
2466 (license license:expat)))
2467
2468(define-public spread-sheet-widget
2469 (package
2470 (name "spread-sheet-widget")
2471 (version "0.10")
2472 (source
2473 (origin
2474 (method url-fetch)
2475 (uri (string-append "https://alpha.gnu.org/gnu/ssw/"
2476 "spread-sheet-widget-" version ".tar.gz"))
2477 (sha256
2478 (base32 "1ra7x02jskbznnkglpkbbrj3p7fprllrjxfw8zhra697a31jwsc0"))))
2479 (build-system gnu-build-system)
2480 (arguments
2481 (list #:configure-flags
2482 #~(list "--disable-static")))
2483 (native-inputs
2484 (list `(,glib "bin") ; for glib-genmarshal, etc.
2485 pkg-config))
2486 ;; In 'Requires' of spread-sheet-widget.pc.
2487 (propagated-inputs
2488 (list glib gtk+))
2489 (home-page "https://www.gnu.org/software/ssw/")
2490 (synopsis "Gtk+ widget for dealing with 2-D tabular data")
2491 (description
2492 "GNU Spread Sheet Widget is a library for Gtk+ which provides a widget for
2493viewing and manipulating 2 dimensional tabular data in a manner similar to many
2494popular spread sheet programs.")
2495 (license license:gpl3+)))
2496
2497(define-public pnmixer
2498 (package
2499 (name "pnmixer")
2500 (version "0.7.2")
2501 (source
2502 (origin
2503 (method git-fetch)
2504 (uri (git-reference
2505 (url "https://github.com/nicklan/pnmixer/")
2506 (commit (string-append "v" version))))
2507 (file-name (git-file-name name version))
2508 (sha256
2509 (base32 "0416pa933ddf4b7ph9zxhk5jppkk7ppcq1aqph6xsrfnka4yb148"))))
2510 (build-system cmake-build-system)
2511 (arguments `(#:tests? #f)) ;no check target
2512 (native-inputs
2513 (list gettext-minimal pkg-config))
2514 (inputs
2515 (list alsa-lib glib gtk+ libnotify libx11))
2516 (home-page "https://github.com/nicklan/pnmixer/")
2517 (synopsis "Simple mixer application designed to run in system tray")
2518 (description
2519 "PNMixer is a simple mixer application designed to run in system tray.
2520It integrates nicely into desktop environments that don't have a panel that
2521supports applets and therefore can't run a mixer applet. In particular, it's
2522been used quite a lot with fbpanel and tint2 but should run fine in any system
2523tray.
2524
2525PNMixer is designed to work on systems that use ALSA for sound management.
2526Any other sound driver like OSS or FFADO are, currently, not supported. There
2527is no official PulseAudio support, at the moment, but it seems that PNMixer
2528behaves quite well anyway when PA is running.")
2529 (license license:gpl3)))
2530
2531(define-public volumeicon
2532 (package
2533 (name "volumeicon")
2534 (version "0.5.1")
2535 (source
2536 (origin
2537 (method url-fetch)
2538 (uri (string-append "http://nullwise.com/files/volumeicon/volumeicon-"
2539 version ".tar.gz"))
2540 (sha256
2541 (base32 "182xl2w8syv6ky2h2bc9imc6ap8pzh0p7rp63hh8nw0xm38c3f14"))))
2542 (build-system gnu-build-system)
2543 (arguments
2544 `(#:configure-flags
2545 (list "--enable-notify"))) ; optional libnotify support
2546 (native-inputs
2547 (list intltool pkg-config))
2548 (inputs
2549 (list alsa-lib gtk+ libnotify))
2550 (home-page "http://nullwise.com/volumeicon.html")
2551 (synopsis "System tray volume applet")
2552 (description
2553 "Volume Icon is a volume indicator and control applet for @acronym{the
2554Advanced Linux Sound Architecture, ALSA}. It sits in the system tray,
2555independent of your desktop environment, and supports global key bindings.")
2556 (license (list license:expat ; src/{bind.c,keybinder.h}
2557 license:isc ; src/alsa_volume_mapping.c
2558 license:gpl3)))) ; the rest & combined work
2559
2560(define-public yad
2561 (package
2562 (name "yad")
2563 (version "12.0")
2564 (source
2565 (origin
2566 (method git-fetch)
2567 (uri (git-reference
2568 (url "https://github.com/v1cont/yad")
2569 (commit (string-append "v" version))))
2570 (file-name (git-file-name name version))
2571 (sha256
2572 (base32 "1nbbw4vwlxjlp83d35w54952b6rrn8qlr3d053lisqwl0hfcm7if"))))
2573 (build-system glib-or-gtk-build-system)
2574 (arguments
2575 `(#:configure-flags
2576 ;; Passing --enable-foo will silently disable foo if prerequisite
2577 ;; inputs are missing, not abort the build as one might expect.
2578 ;; ‘--enable-html’ adds a huge webkitgtk dependency. It was never
2579 ;; present in the past and nobody complained.
2580 '("--enable-icon-browser"
2581 "--enable-spell") ; gspell checking support
2582 #:phases
2583 (modify-phases %standard-phases
2584 (add-after 'bootstrap 'intltoolize
2585 (lambda _
2586 (invoke "intltoolize" "--force" "--automake"))))))
2587 (inputs
2588 (list gspell gtk+))
2589 (native-inputs
2590 (list autoconf automake intltool pkg-config))
2591 (home-page "https://sourceforge.net/projects/yad-dialog/")
2592 (synopsis "GTK+ dialog boxes for shell scripts")
2593 (description
2594 "This program allows you to display GTK+ dialog boxes from command line or
2595shell scripts. Example of how to use @code{yad} can be consulted at
2596@url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.")
2597 (license license:gpl3+)))
2598
2599(define-public dragon-drop
2600 (package
2601 (name "dragon-drop")
2602 (version "1.2.0")
2603 (source (origin
2604 (method git-fetch)
2605 (uri
2606 (git-reference
2607 (url "https://github.com/mwh/dragon")
2608 (commit (string-append "v" version))))
2609 (file-name (git-file-name name version))
2610 (sha256
2611 (base32
2612 "1cspkrr976mqi6cjkgrckdmjbgahnxmq267wn1zd7gamv64vm8f2"))))
2613 (build-system gnu-build-system)
2614 (inputs (list gtk+))
2615 (native-inputs (list pkg-config))
2616 (arguments
2617 (list
2618 #:tests? #f ; no check target
2619 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
2620 (string-append "PREFIX=" #$output))
2621 #:phases
2622 #~(modify-phases %standard-phases
2623 (delete 'configure)))) ; no configure script
2624 (synopsis "Drag and drop source/target for X")
2625 (description
2626 "Dragon is a lightweight drag-and-drop source for X where you can run:
2627
2628@example
2629dragon file.tar.gz
2630@end example
2631
2632to get a window with just that file in it, ready to be dragged where you need it.
2633What if you need to drag into something? Using:
2634
2635@example
2636dragon --target
2637@end example
2638
2639you get a window you can drag files and text into. Dropped items are
2640printed to standard output.")
2641 (home-page "https://github.com/mwh/dragon")
2642 (license license:gpl3+)))
2643
2644(define-public libdbusmenu
2645 (let ((revision "497")
2646 (commit "cc15b23d35c755d5e6be8229889c851464353db2"))
2647 (package
2648 (name "libdbusmenu")
2649 (version (git-version "16.04.0" revision commit))
2650 (source
2651 (origin
2652 (method git-fetch)
2653 (uri (git-reference
2654 (url "https://git.launchpad.net/libdbusmenu")
2655 (commit commit)))
2656 (file-name (string-append name "-" version "-checkout"))
2657 (sha256
2658 (base32
2659 "0d8z176kv49ylqjhjnhfcfil8nrn4kqa222x2lpvbgw417na7cb4"))))
2660 (build-system gnu-build-system)
2661 (arguments
2662 (list
2663 #:configure-flags
2664 #~(list "--sysconfdir=/etc"
2665 "--localstatedir=/var"
2666 ;; The shebang of the generated test files should be patched
2667 ;; before enabling tests.
2668 "--disable-tests"
2669 "--disable-dumper")
2670 #:make-flags
2671 #~(list (string-append "typelibdir=" #$output "/lib/girepository-1.0"))
2672 #:phases
2673 #~(modify-phases %standard-phases
2674 (add-after 'unpack 'remove-deprecated-gnome-common-macros
2675 (lambda _
2676 ;; Adapted from a Debian patch to remove deprecated macros.
2677 (substitute* "autogen.sh"
2678 (("^USE_GNOME2_MACROS.*") "")
2679 (("^USE_COMMON_DOC_BUILD.*") ""))))
2680 (add-after 'unpack 'patch-paths
2681 (lambda _
2682 (substitute* "libdbusmenu-glib/Makefile.am"
2683 (("/bin/false")
2684 "false")
2685 ;; (("\\$\\(srcdir)/clean-namespaces.xslt")
2686 ;; "clean-namespaces.xslt")
2687 )))
2688 (add-before 'configure 'do-not-treat-warnings-as-errors
2689 (lambda _
2690 ;; Prevent the build from failing due to deprecation warnings
2691 ;; from newer GLib and GTK versions.
2692 (substitute* (find-files "." "^Makefile.in$")
2693 ((" -Werror")
2694 ""))))
2695 (add-before 'configure 'set-environment
2696 (lambda _
2697 (setenv "HAVE_VALGRIND_TRUE" "")
2698 (setenv "HAVE_VALGRIND_FALSE" "#"))))))
2699 (inputs
2700 (list glib
2701 gtk+))
2702 (native-inputs
2703 (list autoconf
2704 automake
2705 `(,glib "bin")
2706 gobject-introspection
2707 gnome-common
2708 gtk-doc/stable ;FIXME: propagate by gnome-common?
2709 intltool
2710 json-glib
2711 libtool
2712 libxslt
2713 pkg-config
2714 python-wrapper
2715 which
2716 vala))
2717 (home-page "https://launchpad.net/libdbusmenupython")
2718 (synopsis "Library for passing menus over DBus")
2719 (description "@code{libdbusmenu} passes a menu structure across DBus so
2720that a program can create a menu simply without worrying about how it is
2721displayed on the other side of the bus.")
2722
2723 ;; Dual-licensed under either LGPLv2.1 or LGPLv3.
2724 (license (list license:lgpl2.1 license:lgpl3)))))
2725
2726(define-public gtk-layer-shell
2727 (package
2728 (name "gtk-layer-shell")
2729 (version "0.9.0")
2730 (source
2731 (origin
2732 (method git-fetch)
2733 (uri (git-reference
2734 (url "https://github.com/wmww/gtk-layer-shell")
2735 (commit (string-append "v" version))))
2736 (file-name (git-file-name name version))
2737 (sha256
2738 (base32 "05p9pmgzn8wacvlp7v4f1d8qqdnhr4l6jyclzfijnh1rsva0857n"))))
2739 (build-system meson-build-system)
2740 (arguments `(#:configure-flags (list "-Dtests=true")))
2741 (native-inputs (list pkg-config gobject-introspection vala))
2742 (inputs (list wayland gtk+))
2743 (home-page "https://github.com/wmww/gtk-layer-shell")
2744 (synopsis "Library to create Wayland desktop components using the Layer
2745Shell protocol")
2746 (description "Layer Shell is a Wayland protocol for desktop shell
2747components, such as panels, notifications and wallpapers. It can be used to
2748anchor windows to a corner or edge of the output, or stretch them across the
2749entire output. It supports all Layer Shell features including popups and
2750popovers.")
2751 (license license:expat)))
2752
2753(define-public gtk4-layer-shell
2754 (package
2755 (name "gtk4-layer-shell")
2756 (version "1.3.0")
2757 (source
2758 (origin
2759 (method git-fetch)
2760 (uri (git-reference
2761 (url "https://github.com/wmww/gtk4-layer-shell")
2762 (commit (string-append "v" version))))
2763 (file-name (git-file-name name version))
2764 (sha256
2765 (base32 "1xs5w8yvkfw4zp326ddnxcrxrb2fcd0zsn0yl8wmjn9c8lnnrrnq"))))
2766 (build-system meson-build-system)
2767 (arguments
2768 ;; Smoke tests are disabled because they hang.
2769 (list #:configure-flags
2770 #~(list "-Dtests=true" "-Dsmoke-tests=false")))
2771 (native-inputs (list pkg-config gobject-introspection vala))
2772 (inputs (list wayland gtk))
2773 (home-page "https://github.com/wmww/gtk-layer-shell")
2774 (synopsis "Wayland protocol for desktop components")
2775 (description
2776 "Layer Shell is a Wayland protocol for desktop shell
2777components, such as panels, notifications and wallpapers. It can be used to
2778anchor windows to a corner or edge of the output, or stretch them across the
2779entire output. It supports all Layer Shell features including popups and
2780popovers.")
2781 (license license:expat)))
2782
2783(define-public xdg-user-dirs-gtk
2784 (package
2785 (name "xdg-user-dirs-gtk")
2786 (version "0.16")
2787 (source (origin
2788 (method git-fetch)
2789 (uri (git-reference
2790 (url "https://gitlab.gnome.org/GNOME/xdg-user-dirs-gtk.git")
2791 (commit version)))
2792 (file-name (git-file-name name version))
2793 (sha256
2794 (base32
2795 "11h1164mkajpfrp6mkky2gvx3xd7dw0c9f2785jf4lys4jmmj4c3"))))
2796 (build-system meson-build-system)
2797 (arguments
2798 (list
2799 #:phases
2800 #~(modify-phases %standard-phases
2801 (add-after 'unpack 'fix-exec-path
2802 (lambda* (#:key inputs #:allow-other-keys)
2803 (substitute* "update.c"
2804 (("xdg-user-dirs-update")
2805 (search-input-file inputs "/bin/xdg-user-dirs-update"))))))))
2806 (native-inputs
2807 (list gettext-minimal
2808 pkg-config))
2809 (inputs
2810 (list gtk+
2811 xdg-user-dirs))
2812 (home-page "https://gitlab.gnome.org/GNOME/xdg-user-dirs-gtk")
2813 (synopsis "Integration of xdg-user-dirs with GTK")
2814 (description "This package is a companion to @code{xdg-user-dirs} to
2815integrate it with the GNOME desktop and GTK applications. It gets run during
2816login to create default GTK bookmarks files containing the user directories, and
2817to rename these directories if the locale changes.")
2818 (license license:gpl2+)))
2819
2820(define-public goocanvas
2821 (package
2822 (name "goocanvas")
2823 (version "3.0.0")
2824 (source
2825 (origin
2826 (method url-fetch)
2827 (uri (string-append "mirror://gnome/sources/goocanvas/"
2828 (version-major+minor version)
2829 "/goocanvas-" version ".tar.xz"))
2830 (sha256
2831 (base32 "06j05g2lmwvklmv51xsb7gm7rszcarhm01sal41jfp0qzrbpa2k7"))))
2832 (build-system gnu-build-system)
2833 (native-inputs
2834 (list gettext-minimal
2835 `(,glib "bin")
2836 gobject-introspection
2837 gtk-doc/stable
2838 pkg-config
2839 python))
2840 (inputs
2841 (list cairo glib gtk+ python-pygobject))
2842 (arguments
2843 `(#:configure-flags '("--disable-rebuilds"
2844 "--disable-static"
2845 "CFLAGS=-Wno-error=incompatible-pointer-types")
2846 #:phases
2847 (modify-phases %standard-phases
2848 (add-after 'unpack 'fix-install-path
2849 (lambda* (#:key inputs outputs #:allow-other-keys)
2850 (substitute* "configure"
2851 (("\\(gi._overridesdir\\)")
2852 (string-append "((gi._overridesdir).replace(\\\""
2853 (assoc-ref inputs "python-pygobject")
2854 "\\\", \\\""
2855 (assoc-ref outputs "out")
2856 "\\\"))"))))))))
2857 (synopsis "Canvas widget for GTK+")
2858 (description "GooCanvas is a canvas widget for GTK+ that uses the cairo 2D
2859library for drawing.")
2860 (home-page "https://wiki.gnome.org/GooCanvas")
2861 (license license:lgpl2.0)))
2862
2863(define-public gtksheet
2864 (package
2865 (name "gtksheet")
2866 (version "4.3.5")
2867 (source
2868 (origin
2869 (method git-fetch)
2870 (uri (git-reference
2871 (url "https://github.com/fpaquet/gtksheet")
2872 (commit (string-append "V" version))))
2873 (file-name (git-file-name name version))
2874 (sha256
2875 (base32
2876 "13jwr1vly4ga3f09dajwky1cdrz5bmggwga3vnnd6j6zzia7dpyr"))))
2877 (build-system gnu-build-system)
2878 (arguments
2879 `(#:configure-flags
2880 (list
2881 "--enable-glade"
2882 "--enable-introspection"
2883 "CFLAGS=-fcommon -Wno-error=incompatible-pointer-types")
2884 #:phases
2885 (modify-phases %standard-phases
2886 ;; The "configure" script is present, but otherwise the project is
2887 ;; not bootstrapped properly. Delete configure so the bootstrap phase
2888 ;; will take over.
2889 (add-after 'unpack 'delete-configure
2890 (lambda _
2891 (delete-file "configure")
2892 #t))
2893 (add-after 'unpack 'patch-for-compatibility
2894 (lambda _
2895 (substitute* "glade/glade-gtksheet-editor.c"
2896 (("GladeEditableIface") "GladeEditableInterface"))
2897 ;; Glade 3.37 renamed the macro GWA_GET_CLASS to
2898 ;; GLADE_WIDGET_ADAPTOR_GET_ADAPTOR_CLASS.
2899 (substitute* "glade/glade-gtksheet-editor.c"
2900 (("GWA_GET_CLASS") "GLADE_WIDGET_ADAPTOR_GET_ADAPTOR_CLASS"))))
2901 ;; Fix glade install directories.
2902 (add-before 'bootstrap 'configure-glade-directories
2903 (lambda* (#:key outputs #:allow-other-keys)
2904 (substitute* "configure.ac"
2905 (("`\\$PKG_CONFIG --variable=catalogdir gladeui-2.0`")
2906 (string-append (assoc-ref outputs "out") "/share/glade/catalogs"))
2907 (("`\\$PKG_CONFIG --variable=moduledir gladeui-2.0`")
2908 (string-append (assoc-ref outputs "out") "/lib/glade/modules"))
2909 (("`\\$PKG_CONFIG --variable=pixmapdir gladeui-2.0`")
2910 (string-append (assoc-ref outputs "out") "/share/pixmaps")))
2911 #t)))))
2912 (inputs
2913 (list glade3 glib gtk+ libxml2))
2914 (native-inputs
2915 (list autoconf automake gobject-introspection libtool pkg-config))
2916 (home-page "https://fpaquet.github.io/gtksheet/")
2917 (synopsis "Spreadsheet widget for GTK+")
2918 (description "GtkSheet is a matrix widget for GTK+. It consists of an
2919scrollable grid of cells where you can allocate text. Cell contents can be
2920edited interactively through a specially designed entry, GtkItemEntry. It is
2921also a container subclass, allowing you to display buttons, images and any
2922other widget in it. You can also set many attributes such as border,
2923foreground and background colors, text justification and more.")
2924 (native-search-paths
2925 (list
2926 (search-path-specification
2927 (variable "GLADE_CATALOG_SEARCH_PATH")
2928 (files '("share/glade/catalogs")))
2929 (search-path-specification
2930 (variable "GLADE_MODULE_SEARCH_PATH")
2931 (files '("lib/glade/modules")))))
2932 (license license:lgpl2.0+)))
2933
2934(define-public gtkdatabox
2935 (package
2936 (name "gtkdatabox")
2937 (version "1.0.0")
2938 (source
2939 (origin
2940 (method url-fetch)
2941 (uri (string-append "mirror://sourceforge/gtkdatabox/gtkdatabox-1/"
2942 "gtkdatabox-" version ".tar.gz"))
2943 (sha256
2944 (base32 "1qykm551bx8j8pfgxs60l2vhpi8lv4r8va69zvn2594lchh71vlb"))))
2945 (build-system gnu-build-system)
2946 (native-inputs
2947 (list pkg-config))
2948 (inputs
2949 (list gtk+))
2950 (synopsis "Display widget for dynamic data")
2951 (description "GtkDatabox is a widget for live display of large amounts of
2952fluctuating numerical data. It enables data presentation (for example, on
2953linear or logarithmic scales, as dots or lines, with markers/labels) as well as
2954user interaction (e.g. measuring distances).")
2955 (home-page "https://sourceforge.net/projects/gtkdatabox/")
2956 (license license:lgpl2.1+)))
2957
2958(define-public volctl
2959 (package
2960 (name "volctl")
2961 (version "0.9.5")
2962 (source
2963 (origin
2964 (method git-fetch)
2965 (uri (git-reference
2966 (url "https://github.com/buzz/volctl")
2967 (commit (string-append "v" version))))
2968 (file-name (git-file-name name version))
2969 (sha256
2970 (base32 "0113mkhvjh2asmydpvm96j1d8s6bbp5gnhfzirjb6flj6zy6dgfc"))))
2971 (build-system pyproject-build-system)
2972 (arguments
2973 (list
2974 #:tests? #f ;No tests.
2975 #:phases
2976 #~(modify-phases %standard-phases
2977 (add-after 'unpack 'patch-path
2978 (lambda* (#:key inputs #:allow-other-keys)
2979 (substitute* "volctl/xwrappers.py"
2980 (("libXfixes.so")
2981 (search-input-file inputs "/lib/libXfixes.so"))))))))
2982 (native-inputs (list gobject-introspection python-setuptools))
2983 (inputs (list libxfixes))
2984 (propagated-inputs
2985 (list python-click
2986 python-pycairo
2987 python-pygobject
2988 python-pyyaml
2989 python-pulsectl
2990 gtk+))
2991 (home-page "https://buzz.github.io/volctl/")
2992 (synopsis "Per-application volume control and on-screen display")
2993 (description
2994 "Volctl is a PulseAudio-enabled tray icon volume control and OSD applet
2995for graphical desktops. It's not meant to be an replacement for a
2996full-featured mixer application. If you're looking for that check out the
2997excellent pavucontrol.")
2998
2999 ;; XXX: 'setup.py' says "GPLv2" but nothing says "version 2 only". Is
3000 ;; GPLv2+ intended?
3001 (license license:gpl2)))
3002
3003(define-public gromit-mpx
3004 (package
3005 (name "gromit-mpx")
3006 (version "1.7.0")
3007 (source (origin
3008 (method git-fetch)
3009 (uri (git-reference
3010 (url "https://github.com/bk138/gromit-mpx.git")
3011 (commit version)))
3012 (file-name (git-file-name name version))
3013 (sha256
3014 (base32
3015 "12ginc9rpn66g1n0w5lxxfzyq4zlpvrpp8a87pvr8zkgcrbkhz4c"))))
3016 (build-system cmake-build-system)
3017 (arguments `(#:tests? #f)) ; No tests.
3018 (native-inputs (list pkg-config gettext-minimal))
3019 (inputs (list gtk+ libappindicator lz4))
3020 (home-page "https://github.com/bk138/gromit-mpx")
3021 (synopsis "On-screen annotation tool")
3022 (description
3023 "Gromit-MPX is an on-screen annotation tool that works with any
3024Unix desktop environment under X11 as well as Wayland.")
3025 (license license:gpl2+)))
3026
3027(define-public webp-pixbuf-loader
3028 (package
3029 (name "webp-pixbuf-loader")
3030 (version "0.2.7")
3031 (source
3032 (origin
3033 (method git-fetch)
3034 (uri (git-reference
3035 (url "https://github.com/aruiz/webp-pixbuf-loader")
3036 (commit version)))
3037 (file-name (git-file-name name version))
3038 (sha256
3039 (base32 "0cp51qv8mjjhs3x40d1p31c5f2ilajs4m15da5z5l240bmwk1490"))))
3040 (build-system meson-build-system)
3041 (arguments
3042 (list
3043 #:configure-flags
3044 #~(list (string-append "-Dgdk_pixbuf_moduledir="
3045 #$output "/lib/gdk-pixbuf-2.0/2.10.0/loaders"))))
3046 (inputs (list gdk-pixbuf glib gtk+ libwebp))
3047 (native-inputs (list pkg-config))
3048 (home-page "https://github.com/aruiz/webp-pixbuf-loader")
3049 (synopsis "WebP GdkPixbuf loader library")
3050 (description "Webp-pixbuf-loader is a WebP format loader of GdkPixbuf.")
3051 (license license:lgpl2.0+)))
3052
3053(define-public libpanel
3054 (package
3055 (name "libpanel")
3056 (version "1.10.3")
3057 (source
3058 (origin
3059 (method git-fetch)
3060 (uri (git-reference
3061 (url "https://gitlab.gnome.org/GNOME/libpanel")
3062 (commit version)))
3063 (file-name (git-file-name name version))
3064 (sha256
3065 (base32 "05w80bs20cy0jspb3bk6lfsnr56jqj0ms46754v16bxnkf69bldb"))))
3066 (build-system meson-build-system)
3067 (arguments
3068 (list
3069 #:phases
3070 #~(modify-phases %standard-phases
3071 (add-after 'unpack 'disable-gtk-update-icon-cache
3072 (lambda _
3073 (substitute* "meson.build"
3074 (("gtk_update_icon_cache: true")
3075 "gtk_update_icon_cache: false"))))
3076 (add-before 'build 'set-home
3077 (lambda _
3078 (setenv "HOME" (getcwd)))))))
3079 (native-inputs
3080 (list gi-docgen
3081 `(,glib "bin")
3082 gobject-introspection
3083 pkg-config
3084 vala))
3085 (inputs (list glib gtk libadwaita))
3086 (home-page "https://gitlab.gnome.org/GNOME/libpanel")
3087 (synopsis "Dock and panel library for GTK 4")
3088 (description "Libpanel provides a library to create IDE-like applications
3089using GTK and @code{libadwaita}. It has widgets for panels, docks, columns
3090and grids of pages. Primarily, its design and implementation focus around the
3091GNOME Builder and Drafting projects.")
3092 (license license:lgpl3)))