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