gnu: gdk-pixbuf: Fix typo.
[jackhill/guix/guix.git] / gnu / packages / gtk.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2014, 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
6 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
7 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
8 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
9 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
10 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
11 ;;; Coypright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
12 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
13 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
14 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
15 ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
16 ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
17 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
18 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
19 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
20 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
21 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
22 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
23 ;;;
24 ;;; This file is part of GNU Guix.
25 ;;;
26 ;;; GNU Guix is free software; you can redistribute it and/or modify it
27 ;;; under the terms of the GNU General Public License as published by
28 ;;; the Free Software Foundation; either version 3 of the License, or (at
29 ;;; your option) any later version.
30 ;;;
31 ;;; GNU Guix is distributed in the hope that it will be useful, but
32 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
33 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34 ;;; GNU General Public License for more details.
35 ;;;
36 ;;; You should have received a copy of the GNU General Public License
37 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
38
39 (define-module (gnu packages gtk)
40 #:use-module ((guix licenses) #:prefix license:)
41 #:use-module (guix utils)
42 #:use-module (guix packages)
43 #:use-module (guix download)
44 #:use-module (guix git-download)
45 #:use-module (guix build-system gnu)
46 #:use-module (guix build-system meson)
47 #:use-module (guix build-system perl)
48 #:use-module (guix build-system python)
49 #:use-module (guix build-system waf)
50 #:use-module (gnu packages)
51 #:use-module (gnu packages algebra)
52 #:use-module (gnu packages autotools)
53 #:use-module (gnu packages base)
54 #:use-module (gnu packages texinfo)
55 #:use-module (gnu packages check)
56 #:use-module (gnu packages compression)
57 #:use-module (gnu packages docbook)
58 #:use-module (gnu packages enchant)
59 #:use-module (gnu packages fontutils)
60 #:use-module (gnu packages freedesktop)
61 #:use-module (gnu packages fribidi)
62 #:use-module (gnu packages gettext)
63 #:use-module (gnu packages ghostscript)
64 #:use-module (gnu packages gl)
65 #:use-module (gnu packages glib)
66 #:use-module (gnu packages gnome)
67 #:use-module (gnu packages icu4c)
68 #:use-module (gnu packages image)
69 #:use-module (gnu packages libffi)
70 #:use-module (gnu packages pdf)
71 #:use-module (gnu packages perl)
72 #:use-module (gnu packages pkg-config)
73 #:use-module (gnu packages pretty-print)
74 #:use-module (gnu packages python)
75 #:use-module (gnu packages guile)
76 #:use-module (gnu packages cups)
77 #:use-module (gnu packages xml)
78 #:use-module (gnu packages xorg)
79 #:use-module (gnu packages xdisorg))
80
81 (define-public atk
82 (package
83 (name "atk")
84 (version "2.28.1")
85 (source (origin
86 (method url-fetch)
87 (uri (string-append "mirror://gnome/sources/" name "/"
88 (version-major+minor version) "/"
89 name "-" version ".tar.xz"))
90 (sha256
91 (base32
92 "1z7laf6qwv5zsqcnj222dm5f43c6f3liil0cgx4s4s62xjk1wfnd"))))
93 (build-system gnu-build-system)
94 (outputs '("out" "doc"))
95 (arguments
96 `(#:configure-flags
97 (list (string-append "--with-html-dir="
98 (assoc-ref %outputs "doc")
99 "/share/gtk-doc/html"))))
100 (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
101 (native-inputs
102 `(("pkg-config" ,pkg-config)
103 ("glib" ,glib "bin") ; glib-mkenums, etc.
104 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
105 (synopsis "GNOME accessibility toolkit")
106 (description
107 "ATK provides the set of accessibility interfaces that are implemented
108 by other toolkits and applications. Using the ATK interfaces, accessibility
109 tools have full access to view and control running applications.")
110 (license license:lgpl2.0+)
111 (home-page "https://developer.gnome.org/atk/")))
112
113 (define-public cairo
114 (package
115 (name "cairo")
116 (version "1.14.12")
117 (source (origin
118 (method url-fetch)
119 (uri (string-append "https://cairographics.org/releases/cairo-"
120 version ".tar.xz"))
121 (sha256
122 (base32
123 "05mzyxkvsfc1annjw2dja8vka01ampp9pp93lg09j8hba06g144c"))
124 (patches (search-patches "cairo-CVE-2016-9082.patch"
125 "cairo-setjmp-wrapper.patch"))))
126 (build-system gnu-build-system)
127 (propagated-inputs
128 `(("fontconfig" ,fontconfig)
129 ("freetype" ,freetype)
130 ("glib" ,glib)
131 ("libpng" ,libpng)
132 ("libx11" ,libx11)
133 ("libxext" ,libxext)
134 ("libxrender" ,libxrender)
135 ("pixman" ,pixman)))
136 (inputs
137 `(("ghostscript" ,ghostscript)
138 ("libspectre" ,libspectre)
139 ("poppler" ,poppler)
140 ("xorgproto" ,xorgproto)
141 ("zlib" ,zlib)))
142 (native-inputs
143 `(("pkg-config" ,pkg-config)
144 ("python" ,python-wrapper)))
145 (arguments
146 `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
147 #:configure-flags '("--enable-tee"))) ; needed for GNU Icecat
148 (synopsis "2D graphics library")
149 (description
150 "Cairo is a 2D graphics library with support for multiple output devices.
151 Currently supported output targets include the X Window System (via both
152 Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
153 output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
154
155 Cairo is designed to produce consistent output on all output media while
156 taking advantage of display hardware acceleration when available
157 eg. through the X Render Extension).
158
159 The cairo API provides operations similar to the drawing operators of
160 PostScript and PDF. Operations in cairo including stroking and filling cubic
161 Bézier splines, transforming and compositing translucent images, and
162 antialiased text rendering. All drawing operations can be transformed by any
163 affine transformation (scale, rotation, shear, etc.).")
164 (license license:lgpl2.1) ; or Mozilla Public License 1.1
165 (home-page "https://cairographics.org/")))
166
167 (define-public cairo-xcb
168 (package
169 (inherit cairo)
170 (name "cairo-xcb")
171 (inputs
172 `(("mesa" ,mesa)
173 ,@(package-inputs cairo)))
174 (arguments
175 `(#:tests? #f
176 #:configure-flags
177 '("--enable-xlib-xcb" "--enable-gl" "--enable-egl")))
178 (synopsis "2D graphics library (with X11 support)")))
179
180 (define-public harfbuzz
181 (package
182 (name "harfbuzz")
183 (version "1.8.8")
184 (source (origin
185 (method url-fetch)
186 (uri (string-append "https://www.freedesktop.org/software/"
187 "harfbuzz/release/harfbuzz-"
188 version ".tar.bz2"))
189 (sha256
190 (base32
191 "1ag3scnm1fcviqgx2p4858y433mr0ndqw6zccnccrqcr9mpcird8"))))
192 (build-system gnu-build-system)
193 (outputs '("out"
194 "bin")) ; 160K, only hb-view depend on cairo
195 (inputs
196 `(("cairo" ,cairo)))
197 (propagated-inputs
198 ;; There are all in the Requires or Requires.private field of '.pc'.
199 `(("glib" ,glib)
200 ("graphite2" ,graphite2)
201 ("icu4c" ,icu4c)))
202 (native-inputs
203 `(("gobject-introspection" ,gobject-introspection)
204 ("pkg-config" ,pkg-config)
205 ("python" ,python-wrapper)
206 ("which" ,which)))
207 (arguments
208 `(#:configure-flags `("--with-graphite2"
209 "--with-gobject"
210 ,(string-append
211 "--bindir=" (assoc-ref %outputs "bin") "/bin"))))
212 (synopsis "OpenType text shaping engine")
213 (description
214 "HarfBuzz is an OpenType text shaping engine.")
215 (license (license:x11-style "file://COPYING"
216 "See 'COPYING' in the distribution."))
217 (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
218
219 (define-public pango
220 (package
221 (name "pango")
222 (version "1.42.4")
223 (source (origin
224 (method url-fetch)
225 (uri (string-append "mirror://gnome/sources/pango/"
226 (version-major+minor version) "/"
227 name "-" version ".tar.xz"))
228 (sha256
229 (base32
230 "17bwb7dgbncrfsmchlib03k9n3xaalirb39g3yb43gg8cg6p8aqx"))))
231 (build-system gnu-build-system)
232 (propagated-inputs
233 ;; These are all in Requires or Requires.private of the '.pc' files.
234 `(("cairo" ,cairo)
235 ("fribidi" ,fribidi)
236 ("fontconfig" ,fontconfig)
237 ("freetype" ,freetype)
238 ("glib" ,glib)
239 ("harfbuzz" ,harfbuzz)))
240 (inputs
241 `(("zlib" ,zlib)
242
243 ;; Some packages, such as Openbox, expect Pango to be built with the
244 ;; optional libxft support.
245 ("libxft" ,libxft)))
246 (native-inputs
247 `(("pkg-config" ,pkg-config)
248 ("glib" ,glib "bin") ; glib-mkenums, etc.
249 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
250 (synopsis "GNOME text and font handling library")
251 (description
252 "Pango is the core text and font handling library used in GNOME
253 applications. It has extensive support for the different writing systems
254 used throughout the world.")
255 (license license:lgpl2.0+)
256 (home-page "https://developer.gnome.org/pango/")))
257
258 (define-public pangox-compat
259 (package
260 (name "pangox-compat")
261 (version "0.0.2")
262 (source (origin
263 (method url-fetch)
264 (uri (string-append "mirror://gnome/sources/" name "/"
265 (version-major+minor version) "/"
266 name "-" version ".tar.xz"))
267 (sha256
268 (base32
269 "0ip0ziys6mrqqmz4n71ays0kf5cs1xflj1gfpvs4fgy2nsrr482m"))))
270 (build-system gnu-build-system)
271 (inputs
272 `(("glib" ,glib)
273 ("pango" ,pango)))
274 (native-inputs
275 `(("intltool" ,intltool)
276 ("pkg-config" ,pkg-config)))
277 (home-page "https://developer.gnome.org/pango")
278 (synopsis "Obsolete pango functions")
279 (description "Pangox was a X backend to pango. It is now obsolete and no
280 longer provided by recent pango releases. pangox-compat provides the
281 functions which were removed.")
282 (license license:lgpl2.0+)))
283
284 (define-public ganv
285 (package
286 (name "ganv")
287 (version "1.4.2")
288 (source (origin
289 (method url-fetch)
290 (uri (string-append "https://download.drobilla.net/ganv-"
291 version ".tar.bz2"))
292 (sha256
293 (base32
294 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
295 (build-system waf-build-system)
296 (arguments
297 `(#:phases
298 (modify-phases %standard-phases
299 (add-before 'configure 'set-flags
300 (lambda* (#:key outputs #:allow-other-keys)
301 ;; Compile with C++11, required by gtkmm.
302 (setenv "CXXFLAGS" "-std=c++11")
303 ;; Allow 'bin/ganv_bench' to find libganv-1.so.
304 (setenv "LDFLAGS"
305 (string-append "-Wl,-rpath="
306 (assoc-ref outputs "out") "/lib"))
307 #t)))
308 #:python ,python-2 ;XXX: The bundled waf fails with Python 3.7.0.
309 #:tests? #f)) ; no check target
310 (inputs
311 `(("gtk" ,gtk+-2)
312 ("gtkmm" ,gtkmm-2)))
313 (native-inputs
314 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
315 ("pkg-config" ,pkg-config)))
316 (home-page "https://drobilla.net/software/ganv/")
317 (synopsis "GTK+ widget for interactive graph-like environments")
318 (description
319 "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
320 graph-like environments, e.g. modular synths or finite state machine
321 diagrams.")
322 (license license:gpl3+)))
323
324 (define-public ganv-devel
325 (let ((commit "12f7d6b0438c94dd87f773a92eee3453d971846e")
326 (revision "1"))
327 (package
328 (inherit ganv)
329 (name "ganv")
330 (version (string-append "1.5.4-" revision "."
331 (string-take commit 9)))
332 (source (origin
333 (method git-fetch)
334 (uri (git-reference
335 (url "https://git.drobilla.net/ganv.git")
336 (commit commit)))
337 (file-name (git-file-name name version))
338 (sha256
339 (base32
340 "1cr8w02lr6bk9mkxa12j3imq721b2an2yn4bj5wnwmpm91ddn2gi")))))))
341
342 (define-public gtksourceview-2
343 (package
344 (name "gtksourceview")
345 (version "2.10.5") ; This is the last version which builds against gtk+2
346 (source (origin
347 (method url-fetch)
348 (uri (string-append "mirror://gnome/sources/" name "/"
349 (version-major+minor version) "/"
350 name "-" version ".tar.bz2"))
351 (sha256
352 (base32
353 "07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5"))))
354 (build-system gnu-build-system)
355 (native-inputs
356 `(("intltool" ,intltool)
357 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
358 ("pkg-config" ,pkg-config)
359 ;; For testing.
360 ("xorg-server" ,xorg-server)
361 ("shared-mime-info" ,shared-mime-info)))
362 (propagated-inputs
363 ;; As per the pkg-config file.
364 `(("gtk" ,gtk+-2)
365 ("libxml2" ,libxml2)))
366 (arguments
367 `(#:phases
368 ;; Unfortunately, some of the tests in "make check" are highly dependent
369 ;; on the environment therefore, some black magic is required.
370 (modify-phases %standard-phases
371 (add-before 'check 'start-xserver
372 (lambda* (#:key inputs #:allow-other-keys)
373 (let ((xorg-server (assoc-ref inputs "xorg-server"))
374 (mime (assoc-ref inputs "shared-mime-info")))
375
376 ;; There must be a running X server and make check doesn't start one.
377 ;; Therefore we must do it.
378 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
379 (setenv "DISPLAY" ":1")
380
381 ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
382 (system "ln -s gtksourceview gtksourceview-2.0")
383 (setenv "XDG_DATA_HOME" (getcwd))
384
385 ;; Finally, the mimetypes must be available.
386 (setenv "XDG_DATA_DIRS" (string-append mime "/share/")))
387 #t)))))
388 (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
389 (description
390 "GtkSourceView is a portable C library that extends the standard GTK+
391 framework for multiline text editing with support for configurable syntax
392 highlighting, unlimited undo/redo, search and replace, a completion framework,
393 printing and other features typical of a source code editor.")
394 (license license:lgpl2.0+)
395 (home-page "https://developer.gnome.org/gtksourceview/")))
396
397 (define-public gtksourceview
398 (package
399 (name "gtksourceview")
400 (version "3.24.8")
401 (source (origin
402 (method url-fetch)
403 (uri (string-append "mirror://gnome/sources/" name "/"
404 (version-major+minor version) "/"
405 name "-" version ".tar.xz"))
406 (sha256
407 (base32
408 "1zinqid62zjcsq7vy1y4mq1qh3hzd3zj7p8np7g0bdqd37zvi6qy"))))
409 (build-system gnu-build-system)
410 (arguments
411 '(#:phases
412 (modify-phases %standard-phases
413 (add-before
414 'check 'pre-check
415 (lambda* (#:key inputs #:allow-other-keys)
416 (let ((xorg-server (assoc-ref inputs "xorg-server")))
417 ;; Tests require a running X server.
418 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
419 (setenv "DISPLAY" ":1")
420 ;; For the missing /etc/machine-id.
421 (setenv "DBUS_FATAL_WARNINGS" "0")
422 #t))))))
423 (native-inputs
424 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
425 ("intltool" ,intltool)
426 ("itstool" ,itstool)
427 ("gobject-introspection" ,gobject-introspection)
428 ("pkg-config" ,pkg-config)
429 ("vala" ,vala)
430 ;; For testing.
431 ("xorg-server" ,xorg-server)
432 ("shared-mime-info" ,shared-mime-info)))
433 (propagated-inputs
434 ;; gtksourceview-3.0.pc refers to all these.
435 `(("glib" ,glib)
436 ("gtk+" ,gtk+)
437 ("libxml2" ,libxml2)))
438 (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
439 (synopsis "GNOME source code widget")
440 (description "GtkSourceView is a text widget that extends the standard
441 GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax
442 highlighting and other features typical of a source code editor.")
443 (license license:lgpl2.1+)))
444
445 (define-public gdk-pixbuf
446 (package
447 (name "gdk-pixbuf")
448 (version "2.38.0")
449 (source (origin
450 (method url-fetch)
451 (uri (string-append "mirror://gnome/sources/" name "/"
452 (version-major+minor version) "/"
453 name "-" version ".tar.xz"))
454 (sha256
455 (base32
456 "0ixfmnxjylx06mjaw116apymwi1a8rnkmkbbvqaxxg2pfwy9fl6x"))))
457 (build-system meson-build-system)
458 (arguments
459 `(#:configure-flags '("-Dinstalled_tests=false")
460 #:phases
461 (modify-phases %standard-phases
462 (add-after
463 'unpack 'disable-failing-tests
464 (lambda _
465 (substitute* "tests/meson.build"
466 ;; XXX FIXME: This test fails on armhf machines with:
467 ;; SKIP Not enough memory to load bitmap image
468 ;; ERROR: cve-2015-4491 - too few tests run (expected 4, got 2)
469 ((".*'cve-2015-4491'.*") "")
470 ;; XXX FIXME: This test fails with:
471 ;; ERROR:pixbuf-jpeg.c:74:test_type9_rotation_exif_tag:
472 ;; assertion failed (error == NULL): Data differ
473 ;; (gdk-pixbuf-error-quark, 0)
474 ((".*'pixbuf-jpeg'.*") "")
475 ;; Extend the timeout of the test suite.
476 ;; TODO: Check upstreaming effort:
477 ;; https://gitlab.gnome.org/GNOME/gdk-pixbuf/merge_requests/21
478 (("300") "1800"))
479 #t))
480 (add-before 'configure 'aid-install-script
481 (lambda* (#:key outputs #:allow-other-keys)
482 ;; "build-aux/post-install.sh" invokes `gdk-pixbuf-query-loaders`
483 ;; for updating loader.cache, but it's not on PATH. Make it use
484 ;; the one we're installing. XXX: Won't work when cross-compiling.
485 (substitute* "build-aux/post-install.sh"
486 (("gdk-pixbuf-query-loaders" match)
487 (string-append (assoc-ref outputs "out") "/bin/" match)))
488 #t)))))
489 (propagated-inputs
490 `(;; Required by gdk-pixbuf-2.0.pc
491 ("glib" ,glib)
492 ("libpng" ,libpng)
493 ;; Used for testing and required at runtime.
494 ("shared-mime-info" ,shared-mime-info)))
495 (inputs
496 `(("libjpeg" ,libjpeg)
497 ("libtiff" ,libtiff)
498 ("libx11" ,libx11)))
499 (native-inputs
500 `(("pkg-config" ,pkg-config)
501 ("gettext" ,gettext-minimal)
502 ("glib" ,glib "bin") ; glib-mkenums, etc.
503 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
504 (synopsis "GNOME image loading and manipulation library")
505 (description
506 "GdkPixbuf is a library for image loading and manipulation developed
507 in the GNOME project.")
508 (license license:lgpl2.0+)
509 (home-page "https://developer.gnome.org/gdk-pixbuf/")))
510
511 ;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
512 ;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the
513 ;; closure size.
514 (define-public gdk-pixbuf+svg
515 (package (inherit gdk-pixbuf)
516 (name "gdk-pixbuf+svg")
517 (inputs
518 `(("librsvg" ,librsvg)
519 ,@(package-inputs gdk-pixbuf)))
520 (arguments
521 '(#:configure-flags '("-Dinstalled-tests=false")
522 #:tests? #f ; tested by the gdk-pixbuf package already
523 #:phases
524 (modify-phases %standard-phases
525 (add-after 'install 'register-svg-loader
526 (lambda* (#:key inputs outputs #:allow-other-keys)
527 (let* ((out (assoc-ref outputs "out"))
528 (librsvg (assoc-ref inputs "librsvg"))
529 (loaders
530 (append
531 (find-files out "^libpixbufloader-.*\\.so$")
532 (find-files librsvg "^libpixbufloader-.*\\.so$")))
533 (gdk-pixbuf-query-loaders
534 (string-append out "/bin/gdk-pixbuf-query-loaders")))
535 (apply invoke
536 gdk-pixbuf-query-loaders
537 "--update-cache"
538 loaders)))))))
539 (synopsis
540 "GNOME image loading and manipulation library, with SVG support")))
541
542 (define-public at-spi2-core
543 (package
544 (name "at-spi2-core")
545 (version "2.26.2")
546 (source (origin
547 (method url-fetch)
548 (uri (string-append "mirror://gnome/sources/" name "/"
549 (version-major+minor version) "/"
550 name "-" version ".tar.xz"))
551 (sha256
552 (base32
553 "0596ghkamkxgv08r4a1pdhm06qd5zzgcfqsv64038w9xbvghq3n8"))))
554 (build-system gnu-build-system)
555 (outputs '("out" "doc"))
556 (arguments
557 '(#:configure-flags
558 (list (string-append "--with-html-dir="
559 (assoc-ref %outputs "doc")
560 "/share/gtk-doc/html"))
561 #:phases
562 (modify-phases %standard-phases
563 (replace 'check
564 ;; Run test-suite under a dbus session.
565 (lambda _
566 ;; Don't fail on missing '/etc/machine-id'.
567 (setenv "DBUS_FATAL_WARNINGS" "0")
568 (invoke "dbus-launch" "make" "check"))))))
569 (propagated-inputs
570 ;; atspi-2.pc refers to all these.
571 `(("dbus" ,dbus)
572 ("glib" ,glib)))
573 (inputs
574 `(("libxi" ,libxi)
575 ("libxtst" ,libxtst)))
576 (native-inputs
577 `(("gobject-introspection" ,gobject-introspection)
578 ("intltool" ,intltool)
579 ("pkg-config" ,pkg-config)))
580 (synopsis "Assistive Technology Service Provider Interface, core components")
581 (description
582 "The Assistive Technology Service Provider Interface, core components,
583 is part of the GNOME accessibility project.")
584 (license license:lgpl2.0+)
585 (home-page "https://projects.gnome.org/accessibility/")))
586
587 (define-public at-spi2-atk
588 (package
589 (name "at-spi2-atk")
590 (version "2.26.2")
591 (source (origin
592 (method url-fetch)
593 (uri (string-append "mirror://gnome/sources/" name "/"
594 (version-major+minor version) "/"
595 name "-" version ".tar.xz"))
596 (sha256
597 (base32
598 "0vkan52ab9vrkknnv8y4f1cspk8x7xd10qx92xk9ys71p851z2b1"))))
599 (build-system gnu-build-system)
600 (arguments
601 '(#:phases
602 (modify-phases %standard-phases
603 (replace 'check
604 ;; Run test-suite under a dbus session.
605 (lambda _
606 (setenv "DBUS_FATAL_WARNINGS" "0")
607 (invoke "dbus-launch" "make" "check"))))))
608 (propagated-inputs
609 `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
610 (inputs
611 `(("atk" ,atk)))
612 (native-inputs
613 `(("dbus" ,dbus) ; for testing
614 ("pkg-config" ,pkg-config)))
615 (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
616 (description
617 "The Assistive Technology Service Provider Interface
618 is part of the GNOME accessibility project.")
619 (license license:lgpl2.0+)
620 (home-page "https://projects.gnome.org/accessibility/")))
621
622 (define-public gtk+-2
623 (package
624 (name "gtk+")
625 (version "2.24.32")
626 (source (origin
627 (method url-fetch)
628 (uri (string-append "mirror://gnome/sources/" name "/"
629 (version-major+minor version) "/"
630 name "-" version ".tar.xz"))
631 (sha256
632 (base32
633 "0bjq7ja9gwcv6n5q4qkvdjjx40wsdiikksz1zqxvxsm5vlyskj5n"))
634 (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
635 "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
636 "gtk2-theme-paths.patch"))))
637 (build-system gnu-build-system)
638 (outputs '("out" "doc"))
639 (propagated-inputs
640 `(("atk" ,atk)
641 ("gdk-pixbuf" ,gdk-pixbuf+svg)
642 ("pango" ,pango)))
643 (inputs
644 `(("cups" ,cups)
645 ("libxcomposite" ,libxcomposite)
646 ("libxcursor" ,libxcursor)
647 ("libxdamage" ,libxdamage)
648 ("libxi" ,libxi)
649 ("libxinerama" ,libxinerama)
650 ("libxrandr" ,libxrandr)))
651 (native-inputs
652 `(("perl" ,perl)
653 ("gettext" ,gettext-minimal)
654 ("glib" ,glib "bin")
655 ("gobject-introspection" ,gobject-introspection)
656 ("pkg-config" ,pkg-config)
657 ("python-wrapper" ,python-wrapper)))
658 (arguments
659 `(#:configure-flags
660 (list "--with-xinput=yes"
661 (string-append "--with-html-dir="
662 (assoc-ref %outputs "doc")
663 "/share/gtk-doc/html"))
664 #:phases
665 (alist-cons-before
666 'configure 'disable-tests
667 (lambda _
668 ;; FIXME: re-enable tests requiring an X server
669 (substitute* "gtk/Makefile.in"
670 (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
671 #t)
672 %standard-phases)))
673 (native-search-paths
674 (list (search-path-specification
675 (variable "GUIX_GTK2_PATH")
676 (files '("lib/gtk-2.0")))))
677 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
678 (description
679 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
680 graphical user interfaces. Offering a complete set of widgets, GTK+ is
681 suitable for projects ranging from small one-off tools to complete
682 application suites.")
683 (license license:lgpl2.0+)
684 (home-page "https://www.gtk.org/")))
685
686 (define-public gtk+
687 (package (inherit gtk+-2)
688 (name "gtk+")
689 ;; NOTE: When updating the version of 'gtk+', the hash of 'mate-themes' in
690 ;; mate.scm will also need to be updated.
691 (version "3.24.1")
692 (source (origin
693 (method url-fetch)
694 (uri (string-append "mirror://gnome/sources/" name "/"
695 (version-major+minor version) "/"
696 name "-" version ".tar.xz"))
697 (sha256
698 (base32
699 "0bxhsp7cjph7szg1iyv16nwi60bz59x1smjkqv6sv6mr0zipnf38"))
700 (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
701 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
702 (outputs '("out" "bin" "doc"))
703 (propagated-inputs
704 `(("at-spi2-atk" ,at-spi2-atk)
705 ("atk" ,atk)
706 ("gdk-pixbuf" ,gdk-pixbuf+svg)
707 ("libepoxy" ,libepoxy)
708 ("libxcursor" ,libxcursor)
709 ("libxi" ,libxi)
710 ("libxinerama" ,libxinerama)
711 ("libxkbcommon" ,libxkbcommon)
712 ("libxdamage" ,libxdamage)
713 ("mesa" ,mesa)
714 ("pango" ,pango)
715 ("wayland" ,wayland)
716 ("wayland-protocols" ,wayland-protocols)))
717 (inputs
718 `(("libxml2" ,libxml2)
719 ;; XXX: colord depends on mozjs (through polkit), which fails on
720 ;; on non-intel systems now.
721 ;;("colord" ,colord)
722 ("cups" ,cups) ;for printing support
723 ;; XXX: rest depends on p11-kit, which fails on mips64el now.
724 ;;("rest" ,rest)
725 ("json-glib" ,json-glib)))
726 (native-inputs
727 `(("perl" ,perl)
728 ("glib" ,glib "bin")
729 ("gettext" ,gettext-minimal)
730 ("pkg-config" ,pkg-config)
731 ("gobject-introspection" ,gobject-introspection)
732 ("python-wrapper" ,python-wrapper)
733 ;; By using a special xorg-server for GTK+'s tests, we reduce the impact
734 ;; of updating xorg-server directly on the master branch.
735 ("xorg-server" ,xorg-server-for-tests)))
736 (arguments
737 `(#:disallowed-references (,xorg-server-for-tests)
738 ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes
739 ;; to "doc".
740 #:configure-flags (list (string-append "--with-html-dir="
741 (assoc-ref %outputs "doc")
742 "/share/gtk-doc/html")
743 ;; The header file <gdk/gdkwayland.h> is required
744 ;; by gnome-control-center
745 "--enable-wayland-backend"
746 ;; This is necessary to build both backends.
747 "--enable-x11-backend"
748 ;; This enables the HTML5 websocket backend.
749 "--enable-broadway-backend")
750 #:phases (modify-phases %standard-phases
751 (add-before 'configure 'pre-configure
752 (lambda _
753 ;; Disable most tests, failing in the chroot with the message:
754 ;; D-Bus library appears to be incorrectly set up; failed to read
755 ;; machine uuid: Failed to open "/etc/machine-id": No such file or
756 ;; directory.
757 ;; See the manual page for dbus-uuidgen to correct this issue.
758 (substitute* "testsuite/Makefile.in"
759 (("SUBDIRS = gdk gtk a11y css reftests")
760 "SUBDIRS = gdk"))
761 #t))
762 (add-after 'install 'move-desktop-files
763 ;; Move desktop files into 'bin' to avoid cycle references.
764 (lambda* (#:key outputs #:allow-other-keys)
765 (let ((out (assoc-ref outputs "out"))
766 (bin (assoc-ref outputs "bin")))
767 (mkdir-p (string-append bin "/share"))
768 (rename-file (string-append out "/share/applications")
769 (string-append bin "/share/applications"))
770 #t))))))
771 (native-search-paths
772 (list (search-path-specification
773 (variable "GUIX_GTK3_PATH")
774 (files '("lib/gtk-3.0")))))))
775
776 ;;;
777 ;;; Guile bindings.
778 ;;;
779
780 (define-public guile-cairo
781 (package
782 (name "guile-cairo")
783 (version "1.10.0")
784 (source (origin
785 (method url-fetch)
786 (uri (string-append "mirror://savannah/guile-cairo/guile-cairo-"
787 version ".tar.gz"))
788 (sha256
789 (base32
790 "0p6xrhf2k6n5dybn88050za7h90gnd7534n62l53vsca187pwgdf"))
791 (modules '((guix build utils)))
792 (snippet
793 (begin
794 '(begin
795 ;; Install Scheme files in …/guile/site/X.Y.
796 (substitute* (find-files "." "^Makefile\\.in$")
797 (("^(.*)dir = (.*)/guile/site(.*)" _ name prefix suffix)
798 (string-append name "dir = " prefix
799 "/guile/site/@GUILE_EFFECTIVE_VERSION@"
800 suffix)))
801 #t)))))
802 (build-system gnu-build-system)
803 (inputs
804 `(("guile-lib" ,guile-lib)
805 ("expat" ,expat)
806 ("guile" ,guile-2.2)))
807 (propagated-inputs
808 ;; The .pc file refers to 'cairo'.
809 `(("cairo" ,cairo)))
810 (native-inputs
811 `(("pkg-config" ,pkg-config)))
812 (home-page "https://www.nongnu.org/guile-cairo/")
813 (synopsis "Cairo bindings for GNU Guile")
814 (description
815 "Guile-Cairo wraps the Cairo graphics library for Guile Scheme.
816 Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API
817 stable, providing a firm base on which to do graphics work. Finally, and
818 importantly, it is pleasant to use. You get a powerful and well-maintained
819 graphics library with all of the benefits of Scheme: memory management,
820 exceptions, macros, and a dynamic programming environment.")
821 (license license:lgpl3+)))
822
823 (define-public guile-rsvg
824 ;; Use a recent snapshot that supports Guile 2.2 and beyond.
825 (let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678")
826 (revision "0"))
827 (package
828 (name "guile-rsvg")
829 (version (string-append "2.18.1-" revision "."
830 (string-take commit 7)))
831 (source (origin
832 (method url-fetch)
833 (uri (string-append "https://gitlab.com/wingo/guile-rsvg/"
834 "repository/archive.tar.gz?ref="
835 commit))
836 (sha256
837 (base32
838 "0vdzjx8l5nc4y2xjqs0g1rqn1zrwfsm30brh5gz00r1x41a2pvv2"))
839 (patches (search-patches "guile-rsvg-pkgconfig.patch"))
840 (modules '((guix build utils)))
841 (snippet
842 '(begin
843 (substitute* (find-files "." "Makefile\\.am")
844 (("/share/guile/site")
845 "/share/guile/site/@GUILE_EFFECTIVE_VERSION@"))
846 #t))
847 (file-name (string-append name "-" version ".tar.gz"))))
848 (build-system gnu-build-system)
849 (arguments
850 `(#:phases (modify-phases %standard-phases
851 (replace 'bootstrap
852 (lambda _
853 (invoke "autoreconf" "-vfi"))))))
854 (native-inputs `(("pkg-config" ,pkg-config)
855 ("autoconf" ,autoconf)
856 ("automake" ,automake)
857 ("libtool" ,libtool)
858 ("texinfo" ,texinfo)))
859 (inputs `(("guile" ,guile-2.2)
860 ("librsvg" ,librsvg)
861 ("guile-lib" ,guile-lib))) ;for (unit-test)
862 (propagated-inputs `(("guile-cairo" ,guile-cairo)))
863 (synopsis "Render SVG images using Cairo from Guile")
864 (description
865 "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
866 images onto Cairo surfaces.")
867 (home-page "http://wingolog.org/projects/guile-rsvg/")
868 (license license:lgpl2.1+))))
869
870 (define-public guile-present
871 (package
872 (name "guile-present")
873 (version "0.3.0")
874 (source (origin
875 (method url-fetch)
876 (uri (string-append "http://wingolog.org/pub/guile-present/"
877 "guile-present-" version ".tar.gz"))
878 (sha256
879 (base32
880 "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
881 (patches (search-patches "guile-present-coding.patch"))))
882 (build-system gnu-build-system)
883 (arguments
884 '(#:phases
885 (modify-phases %standard-phases
886 (add-after 'install 'post-install
887 (lambda* (#:key inputs outputs #:allow-other-keys)
888 (let* ((out (assoc-ref outputs "out"))
889 (bin (string-append out "/bin"))
890 (guile (assoc-ref inputs "guile")))
891 (substitute* (find-files bin ".*")
892 (("guile")
893 (string-append guile "/bin/guile -L "
894 out "/share/guile/site/2.0 -C "
895 out "/share/guile/site/2.0 "))))
896 #t)))))
897 (native-inputs `(("pkg-config" ,pkg-config)))
898 (inputs `(("guile" ,guile-2.2)))
899 (propagated-inputs
900 ;; These are used by the (present …) modules.
901 `(("guile-lib" ,guile-lib)
902 ("guile-cairo" ,guile-cairo)
903 ("guile-rsvg" ,guile-rsvg)))
904 (home-page "http://wingolog.org/software/guile-present/")
905 (synopsis "Create SVG or PDF presentations in Guile")
906 (description
907 "Guile-Present defines a declarative vocabulary for presentations,
908 together with tools to render presentation documents as SVG or PDF.
909 Guile-Present can be used to make presentations programmatically, but also
910 includes a tools to generate PDF presentations out of Org mode and Texinfo
911 documents.")
912 (license license:lgpl3+)))
913
914 (define-public guile-gnome
915 (package
916 (name "guile-gnome")
917 (version "2.16.5")
918 (source (origin
919 (method url-fetch)
920 (uri
921 (string-append "mirror://gnu/" name
922 "/guile-gnome-platform/guile-gnome-platform-"
923 version ".tar.gz"))
924 (sha256
925 (base32
926 "1gnf3j96nip5kl99a268i0dy1hj7s1cfs66sps3zwysnkd7qr399"))))
927 (build-system gnu-build-system)
928 (native-inputs
929 `(("pkg-config" ,pkg-config)
930 ("atk" ,atk)
931 ;;("corba" ,corba) ; not packaged yet
932 ("gconf" ,gconf)
933 ("gobject-introspection" ,gobject-introspection)
934 ;;("gthread" ,gthread) ; not packaged yet
935 ("gnome-vfs" ,gnome-vfs)
936 ("gdk-pixbuf" ,gdk-pixbuf)
937 ("gtk+" ,gtk+-2)
938 ("libglade" ,libglade)
939 ("libgnome" ,libgnome)
940 ("libgnomecanvas" ,libgnomecanvas)
941 ("libgnomeui" ,libgnomeui)
942 ("pango" ,pango)
943 ("libffi" ,libffi)
944 ("glib" ,glib)))
945 (inputs `(("guile" ,guile-2.2)))
946 (propagated-inputs
947 `(("guile-cairo" ,guile-cairo)
948 ("g-wrap" ,g-wrap)
949 ("guile-lib" ,guile-lib)))
950 (arguments
951 `(#:tests? #f ;FIXME
952 #:phases (modify-phases %standard-phases
953 (add-before 'configure 'pre-configure
954 (lambda* (#:key outputs #:allow-other-keys)
955 (let ((out (assoc-ref outputs "out")))
956 (substitute* (find-files "." "^Makefile.in$")
957 (("guilesite :=.*guile/site" all)
958 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
959 #t))))))
960 (outputs '("out" "debug"))
961 (synopsis "Guile interface for GTK+ programming for GNOME")
962 (description
963 "Includes guile-clutter, guile-gnome-gstreamer,
964 guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
965 (home-page "https://www.gnu.org/software/guile-gnome/")
966 (license license:gpl2+)
967 (properties '((upstream-name . "guile-gnome-platform")
968 (ftp-directory . "/gnu/guile-gnome/guile-gnome-platform")))))
969
970 ;;;
971 ;;; C++ bindings.
972 ;;;
973
974 (define-public cairomm
975 (package
976 (name "cairomm")
977 (version "1.12.2")
978 (source (origin
979 (method url-fetch)
980 (uri (string-append "https://www.cairographics.org/releases/"
981 name "-" version ".tar.gz"))
982 (sha256
983 (base32
984 "16fmigxsaz85c3lgcls7biwyz8zy8c8h3jndfm54cxxas3a7zi25"))))
985 (build-system gnu-build-system)
986 (arguments
987 ;; The examples lack -lcairo.
988 '(#:make-flags '("LDFLAGS=-lcairo")))
989 (native-inputs `(("pkg-config" ,pkg-config)))
990 (propagated-inputs
991 `(("libsigc++" ,libsigc++)
992 ("freetype" ,freetype)
993 ("fontconfig" ,fontconfig)
994 ("cairo" ,cairo)))
995 (home-page "https://cairographics.org/")
996 (synopsis "C++ bindings to the Cairo 2D graphics library")
997 (description
998 "Cairomm provides a C++ programming interface to the Cairo 2D graphics
999 library.")
1000 (license license:lgpl2.0+)))
1001
1002 (define-public pangomm
1003 (package
1004 (name "pangomm")
1005 (version "2.40.1")
1006 (source (origin
1007 (method url-fetch)
1008 (uri (string-append "mirror://gnome/sources/" name "/"
1009 (version-major+minor version) "/"
1010 name "-" version ".tar.xz"))
1011 (sha256
1012 (base32
1013 "1bz3gciff23bpw9bqc4v2l3lkq9w7394v3a4jxkvx0ap5lmfwqlp"))))
1014 (build-system gnu-build-system)
1015 (native-inputs `(("pkg-config" ,pkg-config)))
1016 (propagated-inputs
1017 `(("cairo" ,cairo)
1018 ("cairomm" ,cairomm)
1019 ("glibmm" ,glibmm)
1020 ("pango" ,pango)))
1021 (home-page "http://www.pango.org/")
1022 (synopsis "C++ interface to the Pango text rendering library")
1023 (description
1024 "Pangomm provides a C++ programming interface to the Pango text rendering
1025 library.")
1026 (license license:lgpl2.1+)))
1027
1028 (define-public atkmm
1029 (package
1030 (name "atkmm")
1031 (version "2.24.2")
1032 (source (origin
1033 (method url-fetch)
1034 (uri (string-append "mirror://gnome/sources/" name "/"
1035 (version-major+minor version) "/"
1036 name "-" version ".tar.xz"))
1037 (sha256
1038 (base32
1039 "1gaqwhviadsmy0fsr47686yglv1p4mpkamj0in127bz2b5bki5gz"))))
1040 (build-system gnu-build-system)
1041 (native-inputs `(("pkg-config" ,pkg-config)))
1042 (propagated-inputs
1043 `(("glibmm" ,glibmm) ("atk" ,atk)))
1044 (home-page "https://www.gtkmm.org")
1045 (synopsis "C++ interface to the ATK accessibility library")
1046 (description
1047 "ATKmm provides a C++ programming interface to the ATK accessibility
1048 toolkit.")
1049 (license license:lgpl2.1+)))
1050
1051 (define-public gtkmm
1052 (package
1053 (name "gtkmm")
1054 (version "3.22.2")
1055 (source (origin
1056 (method url-fetch)
1057 (uri (string-append "mirror://gnome/sources/" name "/"
1058 (version-major+minor version) "/"
1059 name "-" version ".tar.xz"))
1060 (sha256
1061 (base32
1062 "1400535lhyya462pfx8bp11k3mg3jsbdghlpygskd5ai665dkbwi"))))
1063 (build-system gnu-build-system)
1064 (native-inputs `(("pkg-config" ,pkg-config)
1065 ("glib" ,glib "bin") ;for 'glib-compile-resources'
1066 ("xorg-server" ,xorg-server-for-tests)))
1067 (propagated-inputs
1068 `(("pangomm" ,pangomm)
1069 ("cairomm" ,cairomm)
1070 ("atkmm" ,atkmm)
1071 ("gtk+" ,gtk+)
1072 ("glibmm" ,glibmm)))
1073 (arguments
1074 `(;; XXX: Tests require C++14 or later. Remove this when the default
1075 ;; compiler is >= GCC6.
1076 #:configure-flags '("CXXFLAGS=-std=gnu++14")
1077 #:disallowed-references (,xorg-server-for-tests)
1078 #:phases (modify-phases %standard-phases
1079 (add-before 'check 'run-xvfb
1080 (lambda* (#:key inputs #:allow-other-keys)
1081 (let ((xorg-server (assoc-ref inputs "xorg-server")))
1082 ;; Tests such as 'object_move/test' require a running
1083 ;; X server.
1084 (system (string-append xorg-server "/bin/Xvfb :1 &"))
1085 (setenv "DISPLAY" ":1")
1086 ;; Don't fail because of the missing /etc/machine-id.
1087 (setenv "DBUS_FATAL_WARNINGS" "0")
1088 #t))))))
1089 (home-page "https://gtkmm.org/")
1090 (synopsis
1091 "C++ interface to the GTK+ graphical user interface library")
1092 (description
1093 "gtkmm is the official C++ interface for the popular GUI library GTK+.
1094 Highlights include typesafe callbacks, and a comprehensive set of widgets that
1095 are easily extensible via inheritance. You can create user interfaces either
1096 in code or with the Glade User Interface designer, using libglademm. There's
1097 extensive documentation, including API reference and a tutorial.")
1098 (license license:lgpl2.1+)))
1099
1100
1101 (define-public gtkmm-2
1102 (package (inherit gtkmm)
1103 (name "gtkmm")
1104 (version "2.24.5")
1105 (source (origin
1106 (method url-fetch)
1107 (uri (string-append "mirror://gnome/sources/" name "/"
1108 (version-major+minor version) "/"
1109 name "-" version ".tar.xz"))
1110 (sha256
1111 (base32
1112 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
1113 (arguments
1114 '(#:configure-flags '("CPPFLAGS=-std=c++11"))) ; required by libsigc++
1115 (native-inputs `(("pkg-config" ,pkg-config)))
1116 (propagated-inputs
1117 `(("pangomm" ,pangomm)
1118 ("cairomm" ,cairomm)
1119 ("atkmm" ,atkmm)
1120 ("gtk+" ,gtk+-2)
1121 ("glibmm" ,glibmm)))))
1122
1123 (define-public gtksourceviewmm
1124 (package
1125 (name "gtksourceviewmm")
1126 (version "3.18.0")
1127 (source (origin
1128 (method url-fetch)
1129 (uri (string-append "mirror://gnome/sources/" name "/"
1130 (version-major+minor version) "/"
1131 name "-" version ".tar.xz"))
1132 (sha256
1133 (base32 "0fgvmhm4h4qmxig87qvangs6ijw53mi40siz7pixlxbrsgiil22i"))))
1134 (build-system gnu-build-system)
1135 (native-inputs
1136 `(("pkg-config" ,pkg-config)))
1137 (propagated-inputs
1138 ;; In 'Requires' of gtksourceviewmm-3.0.pc.
1139 `(("glibmm" ,glibmm)
1140 ("gtkmm" ,gtkmm)
1141 ("gtksourceview" ,gtksourceview)))
1142 (synopsis "C++ interface to the GTK+ 'GtkTextView' widget")
1143 (description
1144 "gtksourceviewmm is a portable C++ library that extends the standard GTK+
1145 framework for multiline text editing with support for configurable syntax
1146 highlighting, unlimited undo/redo, search and replace, a completion framework,
1147 printing and other features typical of a source code editor.")
1148 (license license:lgpl2.1+)
1149 (home-page "https://developer.gnome.org/gtksourceview/")))
1150
1151 ;;;
1152 ;;; Python bindings.
1153 ;;;
1154
1155 (define-public python-pycairo
1156 (package
1157 (name "python-pycairo")
1158 (version "1.17.1")
1159 (source
1160 (origin
1161 (method url-fetch)
1162 (uri (string-append "https://github.com/pygobject/pycairo/releases/download/v"
1163 version "/pycairo-" version ".tar.gz"))
1164 (sha256
1165 (base32
1166 "165n0g7gp2a0qi8558snvfans17x83jv2lv7bx4vr1rxjbn3a2hg"))))
1167 (build-system python-build-system)
1168 (native-inputs
1169 `(("pkg-config" ,pkg-config)
1170 ("python-pytest" ,python-pytest)))
1171 (propagated-inputs ;pycairo.pc references cairo
1172 `(("cairo" ,cairo)))
1173 (home-page "https://cairographics.org/pycairo/")
1174 (synopsis "Python bindings for cairo")
1175 (description
1176 "Pycairo is a set of Python bindings for the Cairo graphics library.")
1177 (license license:lgpl3+)
1178 (properties `((python2-variant . ,(delay python2-pycairo))))))
1179
1180 (define-public python2-pycairo
1181 (let ((pycairo (package-with-python2
1182 (strip-python2-variant python-pycairo))))
1183 (package
1184 (inherit pycairo)
1185 (propagated-inputs
1186 `(("python2-funcsigs" ,python2-funcsigs)
1187 ,@(package-propagated-inputs pycairo)))
1188 ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
1189 (license (list license:lgpl2.1 license:mpl1.1)))))
1190
1191 (define-public python2-pygtk
1192 (package
1193 (name "python2-pygtk")
1194 (version "2.24.0")
1195 (source
1196 (origin
1197 (method url-fetch)
1198 (uri (string-append "mirror://gnome/sources"
1199 "/pygtk/" (version-major+minor version)
1200 "/pygtk-" version ".tar.bz2"))
1201 (sha256
1202 (base32
1203 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
1204 (build-system gnu-build-system)
1205 (outputs '("out"
1206 "doc")) ;13 MiB of gtk-doc HTML
1207 (native-inputs
1208 `(("pkg-config" ,pkg-config)))
1209 (inputs
1210 `(("python" ,python-2)
1211 ("libglade" ,libglade)
1212 ("glib" ,glib)))
1213 (propagated-inputs
1214 `(("python-pycairo" ,python2-pycairo) ;loaded at runtime
1215 ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
1216 ("gtk+" ,gtk+-2)))
1217 (arguments
1218 `(#:tests? #f
1219 #:phases (modify-phases %standard-phases
1220 (add-before 'configure 'set-gtk-doc-directory
1221 (lambda* (#:key outputs #:allow-other-keys)
1222 ;; Install documentation to "doc".
1223 (let ((doc (assoc-ref outputs "doc")))
1224 (substitute* "docs/Makefile.in"
1225 (("TARGET_DIR = \\$\\(datadir\\)")
1226 (string-append "TARGET_DIR = " doc))))))
1227 (add-after 'configure 'fix-codegen
1228 (lambda* (#:key inputs #:allow-other-keys)
1229 (substitute* "pygtk-codegen-2.0"
1230 (("^prefix=.*$")
1231 (string-append
1232 "prefix="
1233 (assoc-ref inputs "python-pygobject") "\n")))))
1234 (add-after 'install 'install-pth
1235 (lambda* (#:key inputs outputs #:allow-other-keys)
1236 ;; pygtk's modules are stored in a subdirectory of
1237 ;; python's site-packages directory. Add a .pth file so
1238 ;; that python will add that subdirectory to its module
1239 ;; search path.
1240 (let* ((out (assoc-ref outputs "out"))
1241 (site (string-append out "/lib/python"
1242 ,(version-major+minor
1243 (package-version python-2))
1244 "/site-packages")))
1245 (call-with-output-file (string-append site "/pygtk.pth")
1246 (lambda (port)
1247 (format port "gtk-2.0~%")))))))))
1248 (home-page "http://www.pygtk.org/")
1249 (synopsis "Python bindings for GTK+")
1250 (description
1251 "PyGTK allows you to write full featured GTK programs in Python. It is
1252 targeted at GTK 2.x, and can be used in conjunction with gnome-python to
1253 write GNOME applications.")
1254 (license license:lgpl2.1+)))
1255
1256 (define-public perl-cairo
1257 (package
1258 (name "perl-cairo")
1259 (version "1.106")
1260 (source (origin
1261 (method url-fetch)
1262 (uri (string-append
1263 "mirror://cpan/authors/id/X/XA/XAOC/Cairo-"
1264 version ".tar.gz"))
1265 (sha256
1266 (base32
1267 "1i25kks408c54k2zxskvg54l5k3qadzm8n72ffga9jy7ic0h6j76"))))
1268 (build-system perl-build-system)
1269 (native-inputs
1270 `(("perl-extutils-depends" ,perl-extutils-depends)
1271 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1272 (inputs
1273 `(("cairo" ,cairo)))
1274 (home-page "https://metacpan.org/release/Cairo")
1275 (synopsis "Perl interface to the cairo 2d vector graphics library")
1276 (description "Cairo provides Perl bindings for the vector graphics library
1277 cairo. It supports multiple output targets, including PNG, PDF and SVG. Cairo
1278 produces identical output on all those targets.")
1279 (license license:lgpl2.1+)))
1280
1281 (define-public perl-gtk2
1282 (package
1283 (name "perl-gtk2")
1284 (version "1.24992")
1285 (source (origin
1286 (method url-fetch)
1287 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Gtk2-"
1288 version ".tar.gz"))
1289 (sha256
1290 (base32
1291 "1044rj3wbfmgaif2jb0k28m2aczli6ai2n5yvn6pr7zjyw16kvd2"))))
1292 (build-system perl-build-system)
1293 (native-inputs
1294 `(("perl-extutils-depends" ,perl-extutils-depends)
1295 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1296 (inputs
1297 `(("gtk+" ,gtk+-2)))
1298 (propagated-inputs
1299 `(("perl-pango" ,perl-pango)))
1300 (home-page "https://metacpan.org/release/Gtk2")
1301 (synopsis "Perl interface to the 2.x series of the Gimp Toolkit library")
1302 (description "Perl bindings to the 2.x series of the Gtk+ widget set.
1303 This module allows you to write graphical user interfaces in a Perlish and
1304 object-oriented way, freeing you from the casting and memory management in C,
1305 yet remaining very close in spirit to original API.")
1306 (license license:lgpl2.1+)))
1307
1308 (define-public perl-pango
1309 (package
1310 (name "perl-pango")
1311 (version "1.227")
1312 (source (origin
1313 (method url-fetch)
1314 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Pango-"
1315 version ".tar.gz"))
1316 (sha256
1317 (base32
1318 "0wdcidnfnb6nm79fzfs39ivawj3x8m98a147fmcxgv1zvwia9c1l"))))
1319 (build-system perl-build-system)
1320 (native-inputs
1321 `(("perl-extutils-depends" ,perl-extutils-depends)
1322 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1323 (inputs
1324 `(("pango" ,pango)))
1325 (propagated-inputs
1326 `(("perl-cairo" ,perl-cairo)
1327 ("perl-glib" ,perl-glib)))
1328 (home-page "https://metacpan.org/release/Pango")
1329 (synopsis "Layout and render international text")
1330 (description "Pango is a library for laying out and rendering text, with an
1331 emphasis on internationalization. Pango can be used anywhere that text layout
1332 is needed, but using Pango in conjunction with Cairo and/or Gtk2 provides a
1333 complete solution with high quality text handling and graphics rendering.
1334
1335 Dynamically loaded modules handle text layout for particular combinations of
1336 script and font backend. Pango provides a wide selection of modules, including
1337 modules for Hebrew, Arabic, Hangul, Thai, and a number of Indic scripts.
1338 Virtually all of the world's major scripts are supported.
1339
1340 In addition to the low level layout rendering routines, Pango includes
1341 @code{Pango::Layout}, a high level driver for laying out entire blocks of text,
1342 and routines to assist in editing internationalized text.")
1343 (license license:lgpl2.1+)))
1344
1345 (define-public girara
1346 (package
1347 (name "girara")
1348 (version "0.2.9")
1349 (source (origin
1350 (method url-fetch)
1351 (uri
1352 (string-append "https://pwmt.org/projects/girara/download/girara-"
1353 version ".tar.xz"))
1354 (sha256
1355 (base32
1356 "0lkxrfna818wkkr2f6mdzf15y5z8xl1b9592ylmzjbqsqya3w7x8"))))
1357 (native-inputs `(("pkg-config" ,pkg-config)
1358 ("check" ,check)
1359 ("gettext" ,gettext-minimal)
1360 ("glib:bin" ,glib "bin")
1361 ("xorg-server" ,xorg-server-for-tests)))
1362 ;; Listed in 'Requires.private' of 'girara.pc'.
1363 (propagated-inputs `(("gtk+" ,gtk+)))
1364 (arguments
1365 `(#:phases (modify-phases %standard-phases
1366 (add-before 'check 'start-xserver
1367 ;; Tests require a running X server.
1368 (lambda* (#:key inputs #:allow-other-keys)
1369 (let ((xorg-server (assoc-ref inputs "xorg-server"))
1370 (display ":1"))
1371 (setenv "DISPLAY" display)
1372
1373 ;; On busy machines, tests may take longer than
1374 ;; the default of four seconds.
1375 (setenv "CK_DEFAULT_TIMEOUT" "20")
1376
1377 ;; Don't fail due to missing '/etc/machine-id'.
1378 (setenv "DBUS_FATAL_WARNINGS" "0")
1379 (zero? (system (string-append xorg-server "/bin/Xvfb "
1380 display " &")))))))))
1381 (build-system meson-build-system)
1382 (home-page "https://pwmt.org/projects/girara/")
1383 (synopsis "Library for minimalistic gtk+3 user interfaces")
1384 (description "Girara is a library that implements a user interface that
1385 focuses on simplicity and minimalism. Currently based on GTK+, a
1386 cross-platform widget toolkit, it provides an interface that focuses on three
1387 main components: a so-called view widget that represents the actual
1388 application, an input bar that is used to execute commands of the
1389 application and the status bar which provides the user with current
1390 information.")
1391 (license license:zlib)))
1392
1393 (define-public gtk-doc
1394 (package
1395 (name "gtk-doc")
1396 (version "1.27")
1397 (source (origin
1398 (method url-fetch)
1399 (uri (string-append "mirror://gnome/sources/" name "/"
1400 (version-major+minor version) "/"
1401 name "-" version ".tar.xz"))
1402 (sha256
1403 (base32
1404 "0vwsdl61nvnmqswlz5j9m4hg7qirhazwcikcnqf9nx0c13vx6sz2"))))
1405 (build-system gnu-build-system)
1406 (arguments
1407 `(#:parallel-tests? #f
1408 #:phases
1409 (modify-phases %standard-phases
1410 (add-after 'unpack 'patch-gtk-doc-scan
1411 (lambda* (#:key inputs #:allow-other-keys)
1412 (substitute* "gtk-doc.xsl"
1413 (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
1414 (string-append (assoc-ref inputs "docbook-xsl")
1415 "/xml/xsl/docbook-xsl-"
1416 ,(package-version docbook-xsl)
1417 "/html/chunk.xsl"))
1418 (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml")
1419 (string-append (assoc-ref inputs "docbook-xsl")
1420 "/xml/xsl/docbook-xsl-"
1421 ,(package-version docbook-xsl)
1422 "/common/en.xml")))
1423 #t))
1424 (add-after 'patch-gtk-doc-scan 'patch-test-out
1425 (lambda _
1426 ;; sanity.sh counts the number of status lines. Since our
1427 ;; texlive regenerates the fonts every time and the font
1428 ;; generator metafont outputs a lot of extra lines, this
1429 ;; test would always fail. Disable it for now.
1430 (substitute* "tests/Makefile.in"
1431 (("empty.sh sanity.sh") "empty.sh"))
1432 #t))
1433 (add-before 'build 'set-HOME
1434 (lambda _
1435 ;; FIXME: dblatex with texlive-union does not find the built
1436 ;; metafonts, so it tries to generate them in HOME.
1437 (setenv "HOME" "/tmp")
1438 #t))
1439 (add-before 'configure 'fix-docbook
1440 (lambda* (#:key inputs #:allow-other-keys)
1441 (substitute* "configure"
1442 ;; The configure check is overzealous about making sure that
1443 ;; things are in place -- it uses the xmlcatalog tool to make
1444 ;; sure that docbook-xsl is available, but this tool can only
1445 ;; look in one catalog file, unlike the $XML_CATALOG_FILES
1446 ;; variable that Guix defines. Fool the test by using the
1447 ;; docbook-xsl catalog explicitly and get on with life.
1448 (("\"\\$XML_CATALOG_FILE\" \
1449 \"http://docbook.sourceforge.net/release/xsl/")
1450 (string-append (car (find-files (assoc-ref inputs "docbook-xsl")
1451 "^catalog.xml$"))
1452 " \"http://docbook.sourceforge.net/release/xsl/")))
1453 #t))
1454 (add-after 'install 'wrap-executables
1455 (lambda* (#:key outputs #:allow-other-keys)
1456 (let ((out (assoc-ref outputs "out")))
1457 (for-each (lambda (prog)
1458 (wrap-program prog
1459 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))))
1460 (find-files (string-append out "/bin")))
1461 #t))))
1462 #:configure-flags
1463 (list (string-append "--with-xml-catalog="
1464 (assoc-ref %build-inputs "docbook-xml")
1465 "/xml/dtd/docbook/catalog.xml"))))
1466 (native-inputs
1467 `(("pkg-config" ,pkg-config)
1468 ("itstool" ,itstool)
1469 ("libxml" ,libxml2)
1470 ("gettext" ,gettext-minimal)
1471 ("bc" ,bc)))
1472 (inputs
1473 `(("perl" ,perl)
1474 ("python" ,python)
1475 ("xsltproc" ,libxslt)
1476 ("dblatex" ,dblatex)
1477 ("docbook-xml" ,docbook-xml-4.3)
1478 ("docbook-xsl" ,docbook-xsl)
1479 ("source-highlight" ,source-highlight)
1480 ("glib" ,glib)
1481 ("python-six" ,python-six)))
1482 (home-page "https://www.gtk.org/gtk-doc/")
1483 (synopsis "Documentation generator from C source code")
1484 (description
1485 "GTK-Doc generates API documentation from comments added to C code. It is
1486 typically used to document the public API of GTK+ and GNOME libraries, but it
1487 can also be used to document application code.")
1488 (license license:gpl2+)))
1489
1490 (define-public gtk-engines
1491 (package
1492 (name "gtk-engines")
1493 (version "2.20.2")
1494 (source (origin
1495 (method url-fetch)
1496 (uri (string-append "mirror://gnome/sources/" name "/"
1497 (version-major+minor version) "/"
1498 name "-" version ".tar.bz2"))
1499 (sha256
1500 (base32
1501 "1db65pb0j0mijmswrvpgkdabilqd23x22d95hp5kwxvcramq1dhm"))))
1502 (build-system gnu-build-system)
1503 (arguments
1504 `(#:configure-flags
1505 `("--enable-animation")))
1506 (native-inputs
1507 `(("pkg-config" ,pkg-config)
1508 ("intltool" ,intltool)))
1509 (inputs
1510 ;; Don't propagate GTK+ to reduce "profile pollution".
1511 `(("gtk+" ,gtk+-2))) ; required by gtk-engines-2.pc
1512 (home-page "https://live.gnome.org/GnomeArt")
1513 (synopsis "Theming engines for GTK+ 2.x")
1514 (description
1515 "This package contains the standard GTK+ 2.x theming engines including
1516 Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,
1517 Redmond95 and ThinIce.")
1518 (license (list license:gpl2+ license:lgpl2.1+))))
1519
1520 (define-public murrine
1521 (package
1522 (name "murrine")
1523 (version "0.98.2")
1524 (source (origin
1525 (method url-fetch)
1526 (uri (string-append "mirror://gnome/sources/" name "/"
1527 (version-major+minor version) "/"
1528 name "-" version ".tar.xz"))
1529 (sha256
1530 (base32
1531 "129cs5bqw23i76h3nmc29c9mqkm9460iwc8vkl7hs4xr07h8mip9"))))
1532 (build-system gnu-build-system)
1533 (arguments
1534 `(#:configure-flags
1535 `("--enable-animation"
1536 "--enable-animationrtl")))
1537 (native-inputs
1538 `(("pkg-config" ,pkg-config)
1539 ("intltool" ,intltool)))
1540 (propagated-inputs
1541 `(("gtk+" ,gtk+-2)))
1542 (home-page "https://live.gnome.org/GnomeArt")
1543 (synopsis "Cairo-based theming engine for GTK+ 2.x")
1544 (description
1545 "Murrine is a cairo-based GTK+ theming engine. It is named after the
1546 glass artworks done by Venicians glass blowers.")
1547 (license license:gpl2+)))
1548
1549 (define-public gtkspell3
1550 (package
1551 (name "gtkspell3")
1552 (version "3.0.9")
1553 (source (origin
1554 (method url-fetch)
1555 (uri (string-append "mirror://sourceforge/gtkspell/"
1556 version "/" name "-" version ".tar.xz"))
1557 (sha256
1558 (base32
1559 "09jdicmpipmj4v84gnkqwbmj4lh8v0i6pn967rb9jx4zg2ia9x54"))))
1560 (build-system gnu-build-system)
1561 (native-inputs
1562 `(("intltool" ,intltool)
1563 ("pkg-config" ,pkg-config)))
1564 (inputs
1565 `(("gobject-introspection" ,gobject-introspection)
1566 ("gtk+" ,gtk+)
1567 ("pango" ,pango)))
1568 (propagated-inputs
1569 `(("enchant" ,enchant-1.6))) ;gtkspell3-3.0.pc refers to it
1570 (home-page "http://gtkspell.sourceforge.net")
1571 (synopsis "Spell-checking addon for GTK's TextView widget")
1572 (description
1573 "GtkSpell provides word-processor-style highlighting and replacement of
1574 misspelled words in a GtkTextView widget.")
1575 (license license:gpl2+)))
1576
1577 (define-public clipit
1578 (package
1579 (name "clipit")
1580 (version "1.4.2")
1581 (source (origin
1582 (method url-fetch)
1583 (uri (string-append
1584 "https://github.com/downloads/ClipIt/clipit-"
1585 version ".tar.gz"))
1586 (sha256
1587 (base32
1588 "0jrwn8qfgb15rwspdp1p8hb1nc0ngmpvgr87d4k3lhlvqg2cfqva"))))
1589 (build-system gnu-build-system)
1590 (native-inputs
1591 `(("intltool" ,intltool)
1592 ("pkg-config" ,pkg-config)))
1593 (inputs
1594 `(("gtk+" ,gtk+-2)))
1595 (home-page "https://github.com/CristianHenzel/ClipIt")
1596 (synopsis "Lightweight GTK+ clipboard manager")
1597 (description
1598 "ClipIt is a clipboard manager with features such as a history, search
1599 thereof, global hotkeys and clipboard item actions. It was forked from
1600 Parcellite and adds bugfixes and features.")
1601 (license license:gpl2+)))
1602
1603 (define-public graphene
1604 (package
1605 (name "graphene")
1606 (version "1.6.0")
1607 (source (origin
1608 (method url-fetch)
1609 (uri (string-append
1610 "https://github.com/ebassi/graphene/archive/"
1611 version ".tar.gz"))
1612 (file-name (string-append name "-" version ".tar.gz"))
1613 (sha256
1614 (base32 "1zd2daj7y590wnzn4jw0niyc4fnzgxrcl9i7nwhy8b25ks2hz5wq"))))
1615 (build-system gnu-build-system)
1616 (arguments
1617 `(#:configure-flags '("--enable-introspection=yes")
1618 #:phases
1619 (modify-phases %standard-phases
1620 (add-before 'configure 'autogen
1621 (lambda _
1622 (zero? (system* "./autogen.sh")))))))
1623 (native-inputs
1624 `(("autoconf" ,autoconf)
1625 ("which" ,which)
1626 ("pkg-config" ,pkg-config)
1627 ("automake" ,automake)
1628 ("libtool" ,libtool)))
1629 (inputs
1630 `(("python" ,python)
1631 ("python-2" ,python-2)
1632 ("glib" ,glib)
1633 ("gobject-introspection" ,gobject-introspection)))
1634 (home-page "http://ebassi.github.io/graphene")
1635 (synopsis "Thin layer of graphic data types")
1636 (description "This library provides graphic types and their relative API;
1637 it does not deal with windowing system surfaces, drawing, scene graphs, or
1638 input.")
1639 (license license:expat)))
1640
1641 (define-public spread-sheet-widget
1642 (package
1643 (name "spread-sheet-widget")
1644 (version "0.3")
1645 (source
1646 (origin
1647 (method url-fetch)
1648 (uri (string-append "https://alpha.gnu.org/gnu/ssw/"
1649 name "-" version ".tar.gz"))
1650 (sha256
1651 (base32 "1h93yyh2by6yrmkwqg38nd5knids05k5nqzcihc1hdwgzg3c4b8y"))))
1652 (build-system gnu-build-system)
1653 (native-inputs
1654 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
1655 ("pkg-config" ,pkg-config)))
1656 ;; In 'Requires' of spread-sheet-widget.pc.
1657 (propagated-inputs
1658 `(("glib" ,glib)
1659 ("gtk+" ,gtk+)))
1660 (home-page "https://www.gnu.org/software/ssw/")
1661 (synopsis "Gtk+ widget for dealing with 2-D tabular data")
1662 (description
1663 "GNU Spread Sheet Widget is a library for Gtk+ which provides a widget for
1664 viewing and manipulating 2 dimensional tabular data in a manner similar to many
1665 popular spread sheet programs.")
1666 (license license:gpl3+)))
1667
1668 (define-public yad
1669 (package
1670 (name "yad")
1671 (version "0.40.3")
1672 (source
1673 (origin
1674 (method git-fetch)
1675 (uri (git-reference
1676 (url "https://github.com/v1cont/yad.git")
1677 (commit (string-append "v" version))))
1678 (file-name (git-file-name name version))
1679 (sha256
1680 (base32 "1vpgbjbkkbk5plicyklzpf65j1vlig4n4bi3qpvrz5bb09ic5alw"))))
1681 (build-system gnu-build-system)
1682 (arguments
1683 `(#:configure-flags
1684 '("--with-gtk=gtk3"
1685 "--enable-html"
1686 "--enable-gio"
1687 "--enable-spell"
1688 "--enable-icon-browser")
1689 #:phases
1690 (modify-phases %standard-phases
1691 (replace 'bootstrap
1692 (lambda _
1693 (invoke "autoreconf" "-vif")
1694 (invoke "intltoolize" "--force" "--automake")
1695 #t)))))
1696 (inputs
1697 `(("gtk+" ,gtk+)))
1698 (native-inputs
1699 `(("autoconf" ,autoconf)
1700 ("automake" ,automake)
1701 ("intltool" ,intltool)
1702 ("pkg-config" ,pkg-config)))
1703 (home-page "https://sourceforge.net/projects/yad-dialog/")
1704 (synopsis "GTK+ dialog boxes for shell scripts")
1705 (description
1706 "This program allows you to display GTK+ dialog boxes from command line or
1707 shell scripts. Example of how to use @code{yad} can be consulted at
1708 @url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.")
1709 (license license:gpl3+)))