gnu: at-spi2-core: Update to 2.24.0.
[jackhill/guix/guix.git] / gnu / packages / gtk.scm
CommitLineData
3a08a411
AE
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
b9743865 3;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
b9acdad7 4;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
b38e45d8 5;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
a6035fc1 6;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
136770c9 7;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
dfbce50c 8;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
3bc45449 9;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
c900f843 10;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
a9276c12 11;;; Coypright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
5b003972 12;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
b7807bb2 13;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
21f05134 14;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
9b381643 15;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
97b66a91 16;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is>
61af2675 17;;; Coypright © 2017 Roel Janssen <roel@gnu.org>
3a08a411
AE
18;;;
19;;; This file is part of GNU Guix.
20;;;
21;;; GNU Guix is free software; you can redistribute it and/or modify it
22;;; under the terms of the GNU General Public License as published by
23;;; the Free Software Foundation; either version 3 of the License, or (at
24;;; your option) any later version.
25;;;
26;;; GNU Guix is distributed in the hope that it will be useful, but
27;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29;;; GNU General Public License for more details.
30;;;
31;;; You should have received a copy of the GNU General Public License
32;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33
34(define-module (gnu packages gtk)
b5b73a82 35 #:use-module ((guix licenses) #:prefix license:)
b38e45d8 36 #:use-module (guix utils)
3a08a411
AE
37 #:use-module (guix packages)
38 #:use-module (guix download)
a9276c12 39 #:use-module (guix git-download)
3a08a411 40 #:use-module (guix build-system gnu)
0b96fb2a 41 #:use-module (guix build-system python)
e926ba71 42 #:use-module (guix build-system waf)
b837e658 43 #:use-module (gnu packages)
3bc45449 44 #:use-module (gnu packages algebra)
1a51fe27 45 #:use-module (gnu packages autotools)
61af2675 46 #:use-module (gnu packages base)
1a51fe27 47 #:use-module (gnu packages texinfo)
136770c9 48 #:use-module (gnu packages check)
6131c43d 49 #:use-module (gnu packages compression)
3bc45449 50 #:use-module (gnu packages docbook)
9c0c77f8 51 #:use-module (gnu packages enchant)
6131c43d 52 #:use-module (gnu packages fontutils)
3bc45449 53 #:use-module (gnu packages gettext)
6131c43d 54 #:use-module (gnu packages ghostscript)
31b254a3 55 #:use-module (gnu packages gl)
3a08a411 56 #:use-module (gnu packages glib)
95d439b2 57 #:use-module (gnu packages gnome)
a2609b41 58 #:use-module (gnu packages icu4c)
e55354b8 59 #:use-module (gnu packages image)
9b381643 60 #:use-module (gnu packages libffi)
6131c43d 61 #:use-module (gnu packages pdf)
8b79a547 62 #:use-module (gnu packages perl)
6131c43d 63 #:use-module (gnu packages pkg-config)
3bc45449 64 #:use-module (gnu packages pretty-print)
6131c43d 65 #:use-module (gnu packages python)
8e70e6d2 66 #:use-module (gnu packages guile)
37cb3a69 67 #:use-module (gnu packages cups)
8e70e6d2 68 #:use-module (gnu packages xml)
6c0e878e
LC
69 #:use-module (gnu packages xorg)
70 #:use-module (gnu packages xdisorg))
3a08a411
AE
71
72(define-public atk
73 (package
74 (name "atk")
3084d8f4 75 (version "2.22.0")
3a08a411
AE
76 (source (origin
77 (method url-fetch)
3b8e4347 78 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
79 (version-major+minor version) "/"
80 name "-" version ".tar.xz"))
3a08a411
AE
81 (sha256
82 (base32
3084d8f4 83 "1dj47ndvspa7lghw1jvjhv3v08q5f9ab5rb395mcgjbl975gajfk"))))
3a08a411 84 (build-system gnu-build-system)
cd0466eb
SB
85 (outputs '("out" "doc"))
86 (arguments
87 `(#:configure-flags
88 (list (string-append "--with-html-dir="
89 (assoc-ref %outputs "doc")
90 "/share/gtk-doc/html"))))
13a9e291 91 (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
141aed80
LC
92 (native-inputs
93 `(("pkg-config" ,pkg-config)
426adbe8 94 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 95 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
c5cc5006 96 (synopsis "GNOME accessibility toolkit")
3a08a411
AE
97 (description
98 "ATK provides the set of accessibility interfaces that are implemented
35b9e423 99by other toolkits and applications. Using the ATK interfaces, accessibility
3a08a411
AE
100tools have full access to view and control running applications.")
101 (license license:lgpl2.0+)
102 (home-page "https://developer.gnome.org/atk/")))
6131c43d
AE
103
104(define-public cairo
105 (package
106 (name "cairo")
b3822954 107 (version "1.14.8")
6131c43d
AE
108 (source (origin
109 (method url-fetch)
b3822954 110 (uri (string-append "https://cairographics.org/releases/cairo-"
6131c43d
AE
111 version ".tar.xz"))
112 (sha256
113 (base32
b3822954 114 "082ypjlh03ss5616amgjp9ap3xwwccyh2knyyrj1a4d4x65dkwni"))
bc118f1a 115 (patches (search-patches "cairo-CVE-2016-9082.patch"))))
6131c43d
AE
116 (build-system gnu-build-system)
117 (propagated-inputs
118 `(("fontconfig" ,fontconfig)
119 ("freetype" ,freetype)
120 ("glib" ,glib)
121 ("libpng" ,libpng)
122 ("libx11" ,libx11)
123 ("libxext" ,libxext)
124 ("libxrender" ,libxrender)
125 ("pixman" ,pixman)))
126 (inputs
127 `(("ghostscript" ,ghostscript)
128 ("libspectre" ,libspectre)
6131c43d 129 ("poppler" ,poppler)
6131c43d
AE
130 ("xextproto" ,xextproto)
131 ("zlib" ,zlib)))
c4c4cc05
JD
132 (native-inputs
133 `(("pkg-config" ,pkg-config)
134 ("python" ,python-wrapper)))
6131c43d 135 (arguments
77888fae
MW
136 `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
137 #:configure-flags '("--enable-tee"))) ; needed for GNU Icecat
6131c43d
AE
138 (synopsis "2D graphics library")
139 (description
140 "Cairo is a 2D graphics library with support for multiple output devices.
141Currently supported output targets include the X Window System (via both
142Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
35b9e423 143output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
6131c43d
AE
144
145Cairo is designed to produce consistent output on all output media while
146taking advantage of display hardware acceleration when available
147eg. through the X Render Extension).
148
149The cairo API provides operations similar to the drawing operators of
35b9e423 150PostScript and PDF. Operations in cairo including stroking and filling cubic
6131c43d 151Bézier splines, transforming and compositing translucent images, and
35b9e423 152antialiased text rendering. All drawing operations can be transformed by any
e881752c 153affine transformation (scale, rotation, shear, etc.).")
6131c43d 154 (license license:lgpl2.1) ; or Mozilla Public License 1.1
b3822954 155 (home-page "https://cairographics.org/")))
a2609b41 156
40b3f523
DC
157(define-public cairo-xcb
158 (package
159 (inherit cairo)
160 (name "cairo-xcb")
161 (inputs
162 `(("mesa" ,mesa)
163 ,@(package-inputs cairo)))
164 (arguments
165 `(#:tests? #f
166 #:configure-flags
167 '("--enable-xlib-xcb" "--enable-gl" "--enable-egl")))
168 (synopsis "2D graphics library (with X11 support)")))
169
a2609b41
AE
170(define-public harfbuzz
171 (package
172 (name "harfbuzz")
8e5652f9 173 (version "1.4.3")
a2609b41 174 (source (origin
fd9b3b43 175 (method url-fetch)
5cc3096c 176 (uri (string-append "https://www.freedesktop.org/software/"
fd9b3b43
SB
177 "harfbuzz/release/harfbuzz-"
178 version ".tar.bz2"))
179 (sha256
180 (base32
8e5652f9 181 "08akv3qzwnf48xajb60dfcchkmfdjkpp65a0xd8s98w81901g343"))))
a2609b41 182 (build-system gnu-build-system)
0a129f39
SB
183 (outputs '("out"
184 "bin")) ; 160K, only hb-view depend on cairo
a2609b41 185 (inputs
fd9b3b43
SB
186 `(("cairo" ,cairo)))
187 (propagated-inputs
188 ;; There are all in the Requires or Requires.private field of '.pc'.
189 `(("glib" ,glib)
27383915 190 ("graphite2" ,graphite2)
c4c4cc05
JD
191 ("icu4c" ,icu4c)))
192 (native-inputs
a30a0455
SB
193 `(("gobject-introspection" ,gobject-introspection)
194 ("pkg-config" ,pkg-config)
ac462e52 195 ("python" ,python-2))) ; incompatible with Python 3 (print syntax)
27383915 196 (arguments
a30a0455 197 `(#:configure-flags `("--with-graphite2"
eb6afbcd
SB
198 "--with-gobject"
199 ,(string-append
200 "--bindir=" (assoc-ref %outputs "bin") "/bin"))))
35b9e423 201 (synopsis "OpenType text shaping engine")
a2609b41
AE
202 (description
203 "HarfBuzz is an OpenType text shaping engine.")
204 (license (license:x11-style "file://COPYING"
205 "See 'COPYING' in the distribution."))
61320932 206 (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
4b9adff9
AE
207
208(define-public pango
209 (package
210 (name "pango")
8c44bd58 211 (version "1.40.3")
4b9adff9
AE
212 (source (origin
213 (method url-fetch)
dca1b58d
FB
214 (uri (string-append "mirror://gnome/sources/pango/"
215 (version-major+minor version) "/"
216 name "-" version ".tar.xz"))
4b9adff9
AE
217 (sha256
218 (base32
8c44bd58 219 "1lqi4yncw5q0v7g5makzxyp18g5cksqyld8m1wx0qli8wxf8pfmb"))))
4b9adff9 220 (build-system gnu-build-system)
cf2135ff 221 (propagated-inputs
4b9adff9 222 `(("cairo" ,cairo)
4169a4bc
AE
223 ("harfbuzz" ,harfbuzz)))
224 (inputs
9a5acb54
JL
225 `(("zlib" ,zlib)
226
227 ;; Some packages, such as Openbox, expect Pango to be built with the
228 ;; optional libxft support.
229 ("libxft" ,libxft)))
c4c4cc05 230 (native-inputs
141aed80 231 `(("pkg-config" ,pkg-config)
426adbe8 232 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 233 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
4b9adff9
AE
234 (synopsis "GNOME text and font handling library")
235 (description
236 "Pango is the core text and font handling library used in GNOME
35b9e423 237applications. It has extensive support for the different writing systems
4b9adff9
AE
238used throughout the world.")
239 (license license:lgpl2.0+)
240 (home-page "https://developer.gnome.org/pango/")))
527e7961 241
5698b8b8
JD
242(define-public pangox-compat
243 (package
244 (name "pangox-compat")
245 (version "0.0.2")
246 (source (origin
247 (method url-fetch)
b38e45d8
EB
248 (uri (string-append "mirror://gnome/sources/" name "/"
249 (version-major+minor version) "/"
250 name "-" version ".tar.xz"))
5698b8b8
JD
251 (sha256
252 (base32
253 "0ip0ziys6mrqqmz4n71ays0kf5cs1xflj1gfpvs4fgy2nsrr482m"))))
254 (build-system gnu-build-system)
255 (inputs
256 `(("glib" ,glib)
257 ("pango" ,pango)))
258 (native-inputs
259 `(("intltool" ,intltool)
260 ("pkg-config" ,pkg-config)))
261 (home-page "https://developer.gnome.org/pango")
35b9e423 262 (synopsis "Obsolete pango functions")
5698b8b8
JD
263 (description "Pangox was a X backend to pango. It is now obsolete and no
264longer provided by recent pango releases. pangox-compat provides the
265functions which were removed.")
266 (license license:lgpl2.0+)))
267
e926ba71
RW
268(define-public ganv
269 (package
270 (name "ganv")
271 (version "1.4.2")
272 (source (origin
273 (method url-fetch)
274 (uri (string-append "http://download.drobilla.net/ganv-"
ea7f3349 275 version ".tar.bz2"))
e926ba71
RW
276 (sha256
277 (base32
278 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
279 (build-system waf-build-system)
ea7f3349
LC
280 (arguments
281 `(#:phases (alist-cons-before
d8c317df 282 'configure 'set-flags
ea7f3349 283 (lambda* (#:key outputs #:allow-other-keys)
d8c317df
SB
284 ;; Compile with C++11, required by gtkmm.
285 (setenv "CXXFLAGS" "-std=c++11")
ea7f3349
LC
286 ;; Allow 'bin/ganv_bench' to find libganv-1.so.
287 (setenv "LDFLAGS"
288 (string-append "-Wl,-rpath="
289 (assoc-ref outputs "out") "/lib")))
290 %standard-phases)
291 #:tests? #f)) ; no check target
e926ba71
RW
292 (inputs
293 `(("gtk" ,gtk+-2)
294 ("gtkmm" ,gtkmm-2)))
295 (native-inputs
296 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
297 ("pkg-config" ,pkg-config)))
298 (home-page "http://drobilla.net/software/ganv/")
299 (synopsis "GTK+ widget for interactive graph-like environments")
300 (description
301 "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
302graph-like environments, e.g. modular synths or finite state machine
303diagrams.")
304 (license license:gpl3+)))
95d439b2 305
a9276c12
RW
306(define-public ganv-devel
307 (let ((commit "31685d283e9b811b61014f820c42807f4effa071")
308 (revision "1"))
309 (package
310 (inherit ganv)
311 (name "ganv")
312 (version (string-append "1.4.2-" revision "."
313 (string-take commit 9)))
314 (source (origin
315 (method git-fetch)
316 (uri (git-reference
317 (url "http://git.drobilla.net/ganv.git")
318 (commit commit)))
319 (sha256
320 (base32
321 "0xmbykdl42jn9cgzrqrys5lng67d26nk5xq10wkkvjqldiwdck56")))))))
322
c900f843 323(define-public gtksourceview-2
95d439b2
JD
324 (package
325 (name "gtksourceview")
326 (version "2.10.5") ; This is the last version which builds against gtk+2
327 (source (origin
328 (method url-fetch)
b38e45d8
EB
329 (uri (string-append "mirror://gnome/sources/" name "/"
330 (version-major+minor version) "/"
331 name "-" version ".tar.bz2"))
95d439b2
JD
332 (sha256
333 (base32
334 "07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5"))))
335 (build-system gnu-build-system)
c4c4cc05 336 (native-inputs
44add1ce 337 `(("intltool" ,intltool)
221ed17a 338 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
bd05ea41
SB
339 ("pkg-config" ,pkg-config)
340 ;; For testing.
341 ("xorg-server" ,xorg-server)
342 ("shared-mime-info" ,shared-mime-info)))
68d85de1
TUBK
343 (propagated-inputs
344 ;; As per the pkg-config file.
bd05ea41
SB
345 `(("gtk" ,gtk+-2)
346 ("libxml2" ,libxml2)))
95d439b2
JD
347 (arguments
348 `(#:phases
349 ;; Unfortunately, some of the tests in "make check" are highly dependent
350 ;; on the environment therefore, some black magic is required.
351 (alist-cons-before
352 'check 'start-xserver
353 (lambda* (#:key inputs #:allow-other-keys)
354 (let ((xorg-server (assoc-ref inputs "xorg-server"))
355 (mime (assoc-ref inputs "shared-mime-info")))
356
357 ;; There must be a running X server and make check doesn't start one.
358 ;; Therefore we must do it.
359 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
360 (setenv "DISPLAY" ":1")
361
362 ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
363 (system "ln -s gtksourceview gtksourceview-2.0")
364 (setenv "XDG_DATA_HOME" (getcwd))
365
366 ;; Finally, the mimetypes must be available.
367 (setenv "XDG_DATA_DIRS" (string-append mime "/share/")) ))
368 %standard-phases)))
369 (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
370 (description
371 "GtkSourceView is a portable C library that extends the standard GTK+
372framework for multiline text editing with support for configurable syntax
373highlighting, unlimited undo/redo, search and replace, a completion framework,
374printing and other features typical of a source code editor.")
375 (license license:lgpl2.0+)
376 (home-page "https://developer.gnome.org/gtksourceview/")))
377
c900f843
DH
378(define-public gtksourceview
379 (package
380 (name "gtksourceview")
53c18fac 381 (version "3.22.2")
c900f843
DH
382 (source (origin
383 (method url-fetch)
384 (uri (string-append "mirror://gnome/sources/" name "/"
385 (version-major+minor version) "/"
386 name "-" version ".tar.xz"))
387 (sha256
388 (base32
53c18fac 389 "0pmgff3p9q1z500aiqfn5l4mmij4yfi4qhq8fxscqc89vlql5s3c"))))
c900f843
DH
390 (build-system gnu-build-system)
391 (arguments
392 '(#:phases
393 (modify-phases %standard-phases
394 (add-before
395 'check 'pre-check
396 (lambda* (#:key inputs #:allow-other-keys)
397 (let ((xorg-server (assoc-ref inputs "xorg-server")))
398 ;; Tests require a running X server.
399 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
400 (setenv "DISPLAY" ":1")
401 ;; For the missing /etc/machine-id.
402 (setenv "DBUS_FATAL_WARNINGS" "0")
403 #t))))))
404 (native-inputs
405 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
406 ("intltool" ,intltool)
b3546174 407 ("itstool" ,itstool)
c900f843
DH
408 ("gobject-introspection" ,gobject-introspection)
409 ("pkg-config" ,pkg-config)
410 ("vala" ,vala)
411 ;; For testing.
412 ("xorg-server" ,xorg-server)
413 ("shared-mime-info" ,shared-mime-info)))
414 (propagated-inputs
415 ;; gtksourceview-3.0.pc refers to all these.
416 `(("glib" ,glib)
417 ("gtk+" ,gtk+)
418 ("libxml2" ,libxml2)))
419 (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
420 (synopsis "GNOME source code widget")
421 (description "GtkSourceView is a text widget that extends the standard
422GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax
423highlighting and other features typical of a source code editor.")
424 (license license:lgpl2.1+)))
425
527e7961
AE
426(define-public gdk-pixbuf
427 (package
428 (name "gdk-pixbuf")
e60d3a55 429 (version "2.36.3")
527e7961
AE
430 (source (origin
431 (method url-fetch)
b38e45d8
EB
432 (uri (string-append "mirror://gnome/sources/" name "/"
433 (version-major+minor version) "/"
434 name "-" version ".tar.xz"))
527e7961
AE
435 (sha256
436 (base32
8c6b077b
DM
437 "1v1rssjd8p5s3lymsfhiq5mbs2pc0h1r6jd0asrwdbrign7i68sj"))
438 (patches (search-patches "gdk-pixbuf-list-dir.patch"))))
527e7961 439 (build-system gnu-build-system)
48f46dc3 440 (arguments
a63a73dc
SB
441 '(#:configure-flags '("--with-x11")
442 #:phases
443 (modify-phases %standard-phases
444 (add-after
445 'unpack 'disable-failing-tests
446 (lambda _
447 (substitute* "tests/Makefile.in"
fe08b6e1
EF
448 ;; XXX FIXME: This test fails on armhf machines with:
449 ;; SKIP Not enough memory to load bitmap image
450 ;; ERROR: cve-2015-4491 - too few tests run (expected 4, got 2)
a63a73dc
SB
451 (("cve-2015-4491\\$\\(EXEEXT\\) ") "")
452 ;; XXX FIXME: This test fails with:
453 ;; ERROR:pixbuf-jpeg.c:74:test_type9_rotation_exif_tag:
454 ;; assertion failed (error == NULL): Data differ
455 ;; (gdk-pixbuf-error-quark, 0)
456 (("pixbuf-jpeg\\$\\(EXEEXT\\) ") ""))
457 #t)))))
6983ba56
SB
458 (propagated-inputs
459 `(;; Required by gdk-pixbuf-2.0.pc
460 ("glib" ,glib)
461 ("libpng" ,libpng)
462 ;; Used for testing and required at runtime.
463 ("shared-mime-info" ,shared-mime-info)))
1b5758a6
SB
464 (inputs
465 `(("libjpeg" ,libjpeg)
48f46dc3 466 ("libtiff" ,libtiff)
224276ab 467 ("libx11" ,libx11)))
c4c4cc05 468 (native-inputs
141aed80 469 `(("pkg-config" ,pkg-config)
426adbe8 470 ("glib" ,glib "bin") ; glib-mkenums, etc.
b3546174 471 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
527e7961
AE
472 (synopsis "GNOME image loading and manipulation library")
473 (description
474 "GdkPixbuf is a library for image loading and manipulation developed
475in the GNOME project.")
476 (license license:lgpl2.0+)
477 (home-page "https://developer.gnome.org/gdk-pixbuf/")))
cf2135ff 478
34dc3907
SB
479;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
480;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the
481;; closure size.
482(define-public gdk-pixbuf+svg
e60d3a55 483 (package (inherit gdk-pixbuf)
34dc3907
SB
484 (name "gdk-pixbuf+svg")
485 (inputs
486 `(("librsvg" ,librsvg)
487 ,@(package-inputs gdk-pixbuf)))
488 (arguments
489 '(#:configure-flags '("--with-x11")
490 #:tests? #f ; tested by the gdk-pixbuf package already
491 #:phases
492 (modify-phases %standard-phases
493 (add-after 'install 'register-svg-loader
494 (lambda* (#:key inputs outputs #:allow-other-keys)
495 (let* ((out (assoc-ref outputs "out"))
496 (librsvg (assoc-ref inputs "librsvg"))
497 (loaders
498 (append
499 (find-files out "^libpixbufloader-.*\\.so$")
500 (find-files librsvg "^libpixbufloader-.*\\.so$")))
501 (gdk-pixbuf-query-loaders
502 (string-append out "/bin/gdk-pixbuf-query-loaders")))
503 (zero? (apply system* `(,gdk-pixbuf-query-loaders
504 "--update-cache" ,@loaders)))))))))
505 (synopsis
506 "GNOME image loading and manipulation library, with SVG support")))
507
f3fb92e5
AE
508(define-public at-spi2-core
509 (package
510 (name "at-spi2-core")
8785f025 511 (version "2.24.0")
f3fb92e5
AE
512 (source (origin
513 (method url-fetch)
514 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
515 (version-major+minor version) "/"
516 name "-" version ".tar.xz"))
f3fb92e5
AE
517 (sha256
518 (base32
8785f025 519 "1kdgc5gkw3fsgxvwwsg7djvqijpc3xmpp9bp6k6v60yrzcag6yb1"))))
f3fb92e5 520 (build-system gnu-build-system)
068a53c3 521 (outputs '("out" "doc"))
f3fb92e5 522 (arguments
b19d6805 523 '(#:configure-flags
068a53c3
SB
524 (list (string-append "--with-html-dir="
525 (assoc-ref %outputs "doc")
526 "/share/gtk-doc/html"))
50cc7f41 527 #:phases
af108677 528 (modify-phases %standard-phases
3a4de6b2 529 (replace 'check
af108677
SB
530 ;; Run test-suite under a dbus session.
531 (lambda _
37fe56cf
SB
532 ;; Don't fail on missing '/etc/machine-id'.
533 (setenv "DBUS_FATAL_WARNINGS" "0")
af108677 534 (zero? (system* "dbus-launch" "make" "check")))))))
c6a552da
SB
535 (propagated-inputs
536 ;; atspi-2.pc refers to all these.
537 `(("dbus" ,dbus)
538 ("glib" ,glib)))
539 (inputs
540 `(("libxi" ,libxi)
541 ("libxtst" ,libxtst)))
c4c4cc05 542 (native-inputs
50cc7f41
SB
543 `(("gobject-introspection" ,gobject-introspection)
544 ("intltool" ,intltool)
545 ("pkg-config" ,pkg-config)))
f3fb92e5
AE
546 (synopsis "Assistive Technology Service Provider Interface, core components")
547 (description
548 "The Assistive Technology Service Provider Interface, core components,
549is part of the GNOME accessibility project.")
550 (license license:lgpl2.0+)
551 (home-page "https://projects.gnome.org/accessibility/")))
552
5fda4784
AE
553(define-public at-spi2-atk
554 (package
555 (name "at-spi2-atk")
8d2952e3 556 (version "2.22.0")
5fda4784
AE
557 (source (origin
558 (method url-fetch)
559 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
560 (version-major+minor version) "/"
561 name "-" version ".tar.xz"))
5fda4784
AE
562 (sha256
563 (base32
8d2952e3 564 "1h8k271ad78smm41c9bmw5dc4gki0wfy324cn2g25svkp2zfvgg8"))))
5fda4784 565 (build-system gnu-build-system)
5fda4784 566 (arguments
57fcd224
SB
567 '(#:phases
568 (modify-phases %standard-phases
3a4de6b2 569 (replace 'check
57fcd224
SB
570 ;; Run test-suite under a dbus session.
571 (lambda _
5fba12ec 572 (setenv "DBUS_FATAL_WARNINGS" "0")
57fcd224 573 (zero? (system* "dbus-launch" "make" "check")))))))
6967cc3f
SB
574 (propagated-inputs
575 `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
576 (inputs
577 `(("atk" ,atk)))
c4c4cc05 578 (native-inputs
6967cc3f
SB
579 `(("dbus" ,dbus) ; for testing
580 ("pkg-config" ,pkg-config)))
5fda4784
AE
581 (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
582 (description
583 "The Assistive Technology Service Provider Interface
584is part of the GNOME accessibility project.")
585 (license license:lgpl2.0+)
586 (home-page "https://projects.gnome.org/accessibility/")))
587
8b79a547 588(define-public gtk+-2
cf2135ff
AE
589 (package
590 (name "gtk+")
3de764f7 591 (version "2.24.31")
cf2135ff
AE
592 (source (origin
593 (method url-fetch)
1c8362a8 594 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
595 (version-major+minor version) "/"
596 name "-" version ".tar.xz"))
cf2135ff
AE
597 (sha256
598 (base32
3de764f7 599 "0n26jm09n03nqbd00d2ij63xrby3vik56sk5yj6w1vy768kr5hb8"))
6983ba56 600 (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
711670c0 601 "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
6983ba56 602 "gtk2-theme-paths.patch"))))
cf2135ff 603 (build-system gnu-build-system)
6b1f2388 604 (outputs '("out" "doc"))
4169a4bc 605 (propagated-inputs
cf2135ff 606 `(("atk" ,atk)
6983ba56 607 ("gdk-pixbuf" ,gdk-pixbuf+svg)
4169a4bc 608 ("pango" ,pango)))
dfbce50c
SB
609 (inputs
610 `(("cups" ,cups)
611 ("libxcomposite" ,libxcomposite)
612 ("libxcursor" ,libxcursor)
613 ("libxdamage" ,libxdamage)
614 ("libxi" ,libxi)
615 ("libxinerama" ,libxinerama)
616 ("libxrandr" ,libxrandr)))
c4c4cc05 617 (native-inputs
1c8362a8 618 `(("perl" ,perl)
b94a6ca0 619 ("gettext" ,gettext-minimal)
426adbe8 620 ("glib" ,glib "bin")
9d297fae 621 ("gobject-introspection" ,gobject-introspection)
1c8362a8
AE
622 ("pkg-config" ,pkg-config)
623 ("python-wrapper" ,python-wrapper)))
cf2135ff 624 (arguments
b19d6805 625 `(#:configure-flags
6b1f2388
SB
626 (list "--with-xinput=yes"
627 (string-append "--with-html-dir="
628 (assoc-ref %outputs "doc")
629 "/share/gtk-doc/html"))
9d297fae 630 #:phases
d4bf49b1
EB
631 (alist-cons-before
632 'configure 'disable-tests
633 (lambda _
634 ;; FIXME: re-enable tests requiring an X server
635 (substitute* "gtk/Makefile.in"
636 (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits .")))
2a6afac9
RW
637 %standard-phases)))
638 (native-search-paths
639 (list (search-path-specification
640 (variable "GUIX_GTK2_PATH")
641 (files '("lib/gtk-2.0")))))
0327ced2 642 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
cf2135ff
AE
643 (description
644 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
35b9e423 645graphical user interfaces. Offering a complete set of widgets, GTK+ is
cf2135ff
AE
646suitable for projects ranging from small one-off tools to complete
647application suites.")
648 (license license:lgpl2.0+)
649 (home-page "http://www.gtk.org/")))
8e70e6d2 650
8b79a547
AE
651(define-public gtk+
652 (package (inherit gtk+-2)
b38e45d8 653 (name "gtk+")
2d5785ad
MW
654 ;; NOTE: When updating the version of 'gtk+', the hash of 'mate-themes' in
655 ;; mate.scm will also need to be updated.
44350d23 656 (version "3.22.6")
8b79a547
AE
657 (source (origin
658 (method url-fetch)
b38e45d8
EB
659 (uri (string-append "mirror://gnome/sources/" name "/"
660 (version-major+minor version) "/"
661 name "-" version ".tar.xz"))
8b79a547
AE
662 (sha256
663 (base32
44350d23 664 "0bqpx8825b1fdjmz14wq20zq58gq1yi1p5xjps8l6zqid8hmm9zb"))
234e7980
RW
665 (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
666 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
7b808d76 667 (outputs '("out" "bin" "doc"))
0e112540 668 (propagated-inputs
8b79a547 669 `(("at-spi2-atk" ,at-spi2-atk)
0e112540 670 ("atk" ,atk)
6983ba56 671 ("gdk-pixbuf" ,gdk-pixbuf+svg)
31b254a3 672 ("libepoxy" ,libepoxy)
a572dca8 673 ("libxcursor" ,libxcursor)
8b79a547
AE
674 ("libxi" ,libxi)
675 ("libxinerama" ,libxinerama)
9e5c0927 676 ("libxdamage" ,libxdamage)
0e112540
AE
677 ("pango" ,pango)))
678 (inputs
6983ba56 679 `(("libxml2" ,libxml2)
1cb16f1e
SB
680 ;; XXX: colord depends on mozjs (through polkit), which fails on
681 ;; on non-intel systems now.
682 ;;("colord" ,colord)
a572dca8 683 ("cups" ,cups) ;for printing support
a2651b54
SB
684 ;; XXX: rest depends on p11-kit, which fails on mips64el now.
685 ;;("rest" ,rest)
a572dca8 686 ("json-glib" ,json-glib)))
c4c4cc05 687 (native-inputs
141aed80 688 `(("perl" ,perl)
426adbe8 689 ("glib" ,glib "bin")
b94a6ca0 690 ("gettext" ,gettext-minimal)
8b79a547 691 ("pkg-config" ,pkg-config)
141aed80 692 ("gobject-introspection" ,gobject-introspection)
8b79a547 693 ("python-wrapper" ,python-wrapper)
da79e82b
LF
694 ;; By using a special xorg-server for GTK+'s tests, we reduce the impact
695 ;; of updating xorg-server directly on the master branch.
696 ("xorg-server" ,xorg-server-1.19.2)))
8b79a547 697 (arguments
da79e82b
LF
698 `(#:disallowed-references (,xorg-server-1.19.2)
699 ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes
260b07a7
LC
700 ;; to "doc".
701 #:configure-flags (list (string-append "--with-html-dir="
702 (assoc-ref %outputs "doc")
703 "/share/gtk-doc/html"))
e4360e16
JD
704 #:phases (modify-phases %standard-phases
705 (add-before 'configure 'pre-configure
706 (lambda _
707 ;; Disable most tests, failing in the chroot with the message:
708 ;; D-Bus library appears to be incorrectly set up; failed to read
709 ;; machine uuid: Failed to open "/etc/machine-id": No such file or
710 ;; directory.
711 ;; See the manual page for dbus-uuidgen to correct this issue.
712 (substitute* "testsuite/Makefile.in"
713 (("SUBDIRS = gdk gtk a11y css reftests")
714 "SUBDIRS = gdk"))
4c8c2b0f
SB
715 #t))
716 (add-after 'install 'move-desktop-files
717 ;; Move desktop files into 'bin' to avoid cycle references.
718 (lambda* (#:key outputs #:allow-other-keys)
719 (let ((out (assoc-ref outputs "out"))
720 (bin (assoc-ref outputs "bin")))
721 (mkdir-p (string-append bin "/share"))
722 (rename-file (string-append out "/share/applications")
723 (string-append bin "/share/applications"))
724 #t))))))
4828ff91
RW
725 (native-search-paths
726 (list (search-path-specification
727 (variable "GUIX_GTK3_PATH")
728 (files '("lib/gtk-3.0")))))))
5fda4784 729
8e70e6d2
LC
730;;;
731;;; Guile bindings.
732;;;
733
734(define-public guile-cairo
735 (package
736 (name "guile-cairo")
737 (version "1.4.1")
738 (source (origin
b9743865
LC
739 (method url-fetch)
740 (uri (string-append
741 "http://download.gna.org/guile-cairo/guile-cairo-"
742 version
743 ".tar.gz"))
744 (sha256
745 (base32
746 "1f5nd9n46n6cwfl1byjml02q3y2hgn7nkx98km1czgwarxl7ws3x"))))
8e70e6d2
LC
747 (build-system gnu-build-system)
748 (arguments
0f11f640
LC
749 '(#:modules ((guix build utils)
750 (guix build gnu-build-system)
751 (ice-9 popen)
752 (ice-9 rdelim))
753
754 #:phases (modify-phases %standard-phases
b9743865
LC
755 (add-before 'configure 'set-module-directory
756 (lambda* (#:key outputs #:allow-other-keys)
757 ;; Install modules under $out/share/guile/site/2.0.
0f11f640
LC
758 (let ((out (assoc-ref outputs "out"))
759 (effective
760 (read-line
761 (open-pipe* OPEN_READ "guile" "-c"
762 "(display (effective-version))"))))
b9743865
LC
763 (substitute* "Makefile.in"
764 (("scmdir = ([[:graph:]]+).*" _ value)
0f11f640 765 (string-append "scmdir = " value "/" effective "\n")))
b9743865
LC
766 (substitute* "cairo/Makefile.in"
767 (("moduledir = ([[:graph:]]+).*" _ value)
768 (string-append "moduledir = "
0f11f640
LC
769 "$(prefix)/share/guile/site/"
770 effective "/cairo\n'")))
771 #t)))
b9743865
LC
772 (add-after 'install 'install-missing-file
773 (lambda* (#:key outputs #:allow-other-keys)
774 ;; By default 'vector-types.scm' is not installed, so do
775 ;; it here.
0f11f640
LC
776 (let ((out (assoc-ref outputs "out"))
777 (effective
778 (read-line
779 (open-pipe* OPEN_READ "guile" "-c"
780 "(display (effective-version))"))))
781 (install-file "cairo/vector-types.scm"
782 (string-append out "/share/guile/site/"
783 effective "/cairo"))
784 #t))))))
8e70e6d2
LC
785 (inputs
786 `(("guile-lib" ,guile-lib)
787 ("expat" ,expat)
8e70e6d2 788 ("guile" ,guile-2.0)))
49710cea
LC
789 (propagated-inputs
790 ;; The .pc file refers to 'cairo'.
791 `(("cairo" ,cairo)))
c4c4cc05 792 (native-inputs
b9743865 793 `(("pkg-config" ,pkg-config)))
8e70e6d2
LC
794 (home-page "http://www.nongnu.org/guile-cairo/")
795 (synopsis "Cairo bindings for GNU Guile")
796 (description
797 "Guile-Cairo wraps the Cairo graphics library for Guile Scheme.
798Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API
799stable, providing a firm base on which to do graphics work. Finally, and
800importantly, it is pleasant to use. You get a powerful and well-maintained
801graphics library with all of the benefits of Scheme: memory management,
802exceptions, macros, and a dynamic programming environment.")
803 (license license:lgpl3+)))
66663503 804
1a51fe27
LC
805(define-public guile-rsvg
806 (package
807 (name "guile-rsvg")
808 (version "2.18.1")
809 (source (origin
810 (method url-fetch)
811 (uri (string-append "http://wingolog.org/pub/guile-rsvg/"
812 name "-" version ".tar.gz"))
813 (sha256
814 (base32
815 "136f236iw3yrrz6pkkp1ma9c5mrs5icqha6pnawinqpk892r3jh7"))
fc1adab1 816 (patches (search-patches "guile-rsvg-pkgconfig.patch"))
1a51fe27
LC
817 (modules '((guix build utils)))
818 (snippet
819 '(substitute* (find-files "." "Makefile\\.am")
820 (("/share/guile/site")
821 "/share/guile/site/2.0")))))
822 (build-system gnu-build-system)
823 (arguments
824 `(#:phases (modify-phases %standard-phases
825 (add-before 'configure 'bootstrap
826 (lambda _
827 (zero? (system* "autoreconf" "-vfi")))))))
828 (native-inputs `(("pkg-config" ,pkg-config)
829 ("autoconf" ,autoconf)
830 ("automake" ,automake)
831 ("libtool" ,libtool)
832 ("texinfo" ,texinfo)))
833 (inputs `(("guile" ,guile-2.0)
834 ("librsvg" ,librsvg)
835 ("guile-lib" ,guile-lib))) ;for (unit-test)
836 (propagated-inputs `(("guile-cairo" ,guile-cairo)))
837 (synopsis "Render SVG images using Cairo from Guile")
838 (description
839 "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
840images onto Cairo surfaces.")
841 (home-page "http://wingolog.org/projects/guile-rsvg/")
842 (license license:lgpl2.1+)))
7ca0dbc3 843
cdd383e9
LC
844(define-public guile-present
845 (package
846 (name "guile-present")
847 (version "0.3.0")
848 (source (origin
849 (method url-fetch)
850 (uri (string-append "http://wingolog.org/pub/guile-present/"
851 "guile-present-" version ".tar.gz"))
852 (sha256
853 (base32
854 "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
fc1adab1 855 (patches (search-patches "guile-present-coding.patch"))
cdd383e9
LC
856 (modules '((guix build utils)))
857 (snippet
858 '(substitute* "Makefile.in"
859 (("godir = .*$")
860 "godir = $(moddir)\n")))))
861 (build-system gnu-build-system)
862 (arguments
863 '(#:phases (alist-cons-after
864 'install 'post-install
865 (lambda* (#:key inputs outputs #:allow-other-keys)
866 (let* ((out (assoc-ref outputs "out"))
867 (bin (string-append out "/bin"))
868 (guile (assoc-ref inputs "guile")))
869 (substitute* (find-files bin ".*")
870 (("guile")
871 (string-append guile "/bin/guile -L "
872 out "/share/guile/site/2.0 -C "
873 out "/share/guile/site/2.0 ")))))
874 %standard-phases)))
875 (native-inputs `(("pkg-config" ,pkg-config)))
876 (inputs `(("guile" ,guile-2.0)))
877 (propagated-inputs
878 ;; These are used by the (present …) modules.
879 `(("guile-lib" ,guile-lib)
880 ("guile-cairo" ,guile-cairo)
881 ("guile-rsvg" ,guile-rsvg)))
882 (home-page "http://wingolog.org/software/guile-present/")
883 (synopsis "Create SVG or PDF presentations in Guile")
884 (description
885 "Guile-Present defines a declarative vocabulary for presentations,
886together with tools to render presentation documents as SVG or PDF.
887Guile-Present can be used to make presentations programmatically, but also
888includes a tools to generate PDF presentations out of Org mode and Texinfo
889documents.")
890 (license license:lgpl3+)))
7ca0dbc3 891
9b381643
PH
892(define-public guile-gnome
893 (package
894 (name "guile-gnome")
895 (version "2.16.4")
896 (source (origin
897 (method url-fetch)
898 (uri
899 (string-append "mirror://gnu/" name
900 "/guile-gnome-platform/guile-gnome-platform-"
901 version ".tar.gz"))
902 (sha256
903 (base32
904 "1hqnqbb2lmr3hgbcv9kds1himn3av6h0lkk0zll8agcrsn7d9axd"))))
905 (build-system gnu-build-system)
906 (native-inputs
907 `(("pkg-config" ,pkg-config)
908 ("atk" ,atk)
909 ;;("corba" ,corba) ; not packaged yet
910 ("gconf" ,gconf)
911 ("gobject-introspection" ,gobject-introspection)
912 ;;("gthread" ,gthread) ; not packaged yet
913 ("gnome-vfs" ,gnome-vfs)
914 ("gdk-pixbuf" ,gdk-pixbuf)
915 ("gtk+" ,gtk+-2)
916 ("libglade" ,libglade)
917 ("libgnome" ,libgnome)
918 ("libgnomecanvas" ,libgnomecanvas)
919 ("libgnomeui" ,libgnomeui)
920 ("pango" ,pango)
921 ("libffi" ,libffi)
922 ("glib" ,glib)))
923 (inputs `(("guile" ,guile-2.0)))
924 (propagated-inputs
925 `(("guile-cairo" ,guile-cairo)
926 ("g-wrap" ,g-wrap)
927 ("guile-lib" ,guile-lib)))
928 (arguments
929 `(#:tests? #f ;FIXME
930 #:phases (modify-phases %standard-phases
931 (add-before 'configure 'pre-configure
932 (lambda* (#:key outputs #:allow-other-keys)
933 (let ((out (assoc-ref outputs "out")))
934 (substitute* (find-files "." "^Makefile.in$")
935 (("guilesite :=.*guile/site" all)
936 (string-append all "/2.0")))
937 #t))))))
938 (outputs '("out" "debug"))
939 (synopsis "Guile interface for GTK+ programming for GNOME")
940 (description
941 "Includes guile-clutter, guile-gnome-gstreamer,
942guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
6fd52309 943 (home-page "https://www.gnu.org/software/guile-gnome/")
9b381643
PH
944 (license license:gpl2+)))
945
66663503
LC
946;;;
947;;; C++ bindings.
948;;;
949
950(define-public cairomm
951 (package
952 (name "cairomm")
5a52e86e 953 (version "1.12.2")
66663503 954 (source (origin
2079087c 955 (method url-fetch)
5a52e86e
EF
956 (uri (string-append "https://www.cairographics.org/releases/"
957 name "-" version ".tar.gz"))
2079087c
SB
958 (sha256
959 (base32
5a52e86e 960 "16fmigxsaz85c3lgcls7biwyz8zy8c8h3jndfm54cxxas3a7zi25"))))
66663503
LC
961 (build-system gnu-build-system)
962 (arguments
963 ;; The examples lack -lcairo.
964 '(#:make-flags '("LDFLAGS=-lcairo")))
c4c4cc05 965 (native-inputs `(("pkg-config" ,pkg-config)))
66663503
LC
966 (propagated-inputs
967 `(("libsigc++" ,libsigc++)
968 ("freetype" ,freetype)
969 ("fontconfig" ,fontconfig)
970 ("cairo" ,cairo)))
5a52e86e 971 (home-page "https://cairographics.org/")
66663503
LC
972 (synopsis "C++ bindings to the Cairo 2D graphics library")
973 (description
974 "Cairomm provides a C++ programming interface to the Cairo 2D graphics
975library.")
976 (license license:lgpl2.0+)))
c5cc5006
LC
977
978(define-public pangomm
979 (package
980 (name "pangomm")
3086d9b9 981 (version "2.40.1")
c5cc5006
LC
982 (source (origin
983 (method url-fetch)
b38e45d8
EB
984 (uri (string-append "mirror://gnome/sources/" name "/"
985 (version-major+minor version) "/"
986 name "-" version ".tar.xz"))
c5cc5006
LC
987 (sha256
988 (base32
3086d9b9 989 "1bz3gciff23bpw9bqc4v2l3lkq9w7394v3a4jxkvx0ap5lmfwqlp"))))
c5cc5006 990 (build-system gnu-build-system)
c4c4cc05 991 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
992 (propagated-inputs
993 `(("cairo" ,cairo)
994 ("cairomm" ,cairomm)
995 ("glibmm" ,glibmm)
996 ("pango" ,pango)))
997 (home-page "http://www.pango.org/")
998 (synopsis "C++ interface to the Pango text rendering library")
999 (description
1000 "Pangomm provides a C++ programming interface to the Pango text rendering
1001library.")
1002 (license license:lgpl2.1+)))
1003
1004(define-public atkmm
1005 (package
1006 (name "atkmm")
5b003972 1007 (version "2.24.2")
c5cc5006
LC
1008 (source (origin
1009 (method url-fetch)
b38e45d8
EB
1010 (uri (string-append "mirror://gnome/sources/" name "/"
1011 (version-major+minor version) "/"
1012 name "-" version ".tar.xz"))
c5cc5006
LC
1013 (sha256
1014 (base32
5b003972 1015 "1gaqwhviadsmy0fsr47686yglv1p4mpkamj0in127bz2b5bki5gz"))))
c5cc5006 1016 (build-system gnu-build-system)
c4c4cc05 1017 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
1018 (propagated-inputs
1019 `(("glibmm" ,glibmm) ("atk" ,atk)))
1020 (home-page "http://www.gtkmm.org")
1021 (synopsis "C++ interface to the ATK accessibility library")
1022 (description
1023 "ATKmm provides a C++ programming interface to the ATK accessibility
1024toolkit.")
1025 (license license:lgpl2.1+)))
1026
1027(define-public gtkmm
1028 (package
1029 (name "gtkmm")
b1d6910e 1030 (version "3.22.0")
c5cc5006
LC
1031 (source (origin
1032 (method url-fetch)
b38e45d8
EB
1033 (uri (string-append "mirror://gnome/sources/" name "/"
1034 (version-major+minor version) "/"
1035 name "-" version ".tar.xz"))
c5cc5006
LC
1036 (sha256
1037 (base32
b1d6910e 1038 "1x8l0ny6r3ym53z82q9d5fan4m9vi93xy3b3hj1hrclgc95lvnh5"))))
c5cc5006 1039 (build-system gnu-build-system)
ff5c33fe 1040 (native-inputs `(("pkg-config" ,pkg-config)
ba470833
LC
1041 ("glib" ,glib "bin") ;for 'glib-compile-resources'
1042 ("xorg-server" ,xorg-server)))
c5cc5006
LC
1043 (propagated-inputs
1044 `(("pangomm" ,pangomm)
1045 ("cairomm" ,cairomm)
1046 ("atkmm" ,atkmm)
1047 ("gtk+" ,gtk+)
1048 ("glibmm" ,glibmm)))
ba470833
LC
1049 (arguments
1050 '(#:phases (modify-phases %standard-phases
1051 (add-before 'check 'run-xvfb
1052 (lambda* (#:key inputs #:allow-other-keys)
1053 (let ((xorg-server (assoc-ref inputs "xorg-server")))
1054 ;; Tests such as 'object_move/test' require a running
1055 ;; X server.
1056 (system (string-append xorg-server "/bin/Xvfb :1 &"))
1057 (setenv "DISPLAY" ":1")
1058 ;; Don't fail because of the missing /etc/machine-id.
1059 (setenv "DBUS_FATAL_WARNINGS" "0")
1060 #t))))))
c5cc5006
LC
1061 (home-page "http://gtkmm.org/")
1062 (synopsis
1063 "C++ interface to the GTK+ graphical user interface library")
1064 (description
1065 "gtkmm is the official C++ interface for the popular GUI library GTK+.
1066Highlights include typesafe callbacks, and a comprehensive set of widgets that
1067are easily extensible via inheritance. You can create user interfaces either
1068in code or with the Glade User Interface designer, using libglademm. There's
1069extensive documentation, including API reference and a tutorial.")
1070 (license license:lgpl2.1+)))
9c086443
JD
1071
1072
1073(define-public gtkmm-2
1074 (package (inherit gtkmm)
b38e45d8 1075 (name "gtkmm")
124596f2 1076 (version "2.24.5")
9c086443
JD
1077 (source (origin
1078 (method url-fetch)
b38e45d8
EB
1079 (uri (string-append "mirror://gnome/sources/" name "/"
1080 (version-major+minor version) "/"
1081 name "-" version ".tar.xz"))
9c086443
JD
1082 (sha256
1083 (base32
124596f2 1084 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
3ad29c9e
SB
1085 (arguments
1086 '(#:configure-flags '("CPPFLAGS=-std=c++11"))) ; required by libsigc++
ff5c33fe 1087 (native-inputs `(("pkg-config" ,pkg-config)))
9c086443
JD
1088 (propagated-inputs
1089 `(("pangomm" ,pangomm)
1090 ("cairomm" ,cairomm)
1091 ("atkmm" ,atkmm)
1092 ("gtk+" ,gtk+-2)
1093 ("glibmm" ,glibmm)))))
fbcfa730
EB
1094
1095(define-public python-pycairo
1096 (package
1097 (name "python-pycairo")
1098 (version "1.10.0")
1099 (source
1100 (origin
1101 (method url-fetch)
1102 (uri (string-append "http://cairographics.org/releases/pycairo-"
1103 version ".tar.bz2"))
1104 (sha256
1105 (base32
b837e658 1106 "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s"))
fc1adab1 1107 (patches (search-patches "pycairo-wscript.patch"))))
b837e658 1108 (build-system waf-build-system)
fbcfa730 1109 (native-inputs
b837e658
SB
1110 `(("pkg-config" ,pkg-config)
1111 ("python-waf" ,python-waf)))
fbcfa730
EB
1112 (propagated-inputs ;pycairo.pc references cairo
1113 `(("cairo" ,cairo)))
1114 (arguments
1115 `(#:tests? #f
b837e658
SB
1116 #:phases
1117 (modify-phases %standard-phases
1118 (add-before
1119 'configure 'patch-waf
1120 (lambda* (#:key inputs #:allow-other-keys)
1121 ;; The bundled `waf' doesn't work with python-3.4.x.
1122 (copy-file (assoc-ref %build-inputs "python-waf") "./waf"))))))
fbcfa730
EB
1123 (home-page "http://cairographics.org/pycairo/")
1124 (synopsis "Python bindings for cairo")
1125 (description
1126 "Pycairo is a set of Python bindings for the Cairo graphics library.")
7ec42f1d
LC
1127 (license license:lgpl3+)
1128 (properties `((python2-variant . ,(delay python2-pycairo))))))
fbcfa730 1129
7ca0dbc3 1130(define-public python2-pycairo
7ec42f1d 1131 (package (inherit (strip-python2-variant python-pycairo))
7ca0dbc3 1132 (name "python2-pycairo")
fbcfa730
EB
1133 (version "1.10.0")
1134 (source
1135 (origin
1136 (method url-fetch)
1137 (uri (string-append "http://cairographics.org/releases/py2cairo-"
1138 version ".tar.bz2"))
1139 (sha256
1140 (base32
1141 "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k"))))
1142 (arguments
1143 `(#:python ,python-2
b837e658
SB
1144 ,@(substitute-keyword-arguments (package-arguments python-pycairo)
1145 ((#:phases phases)
1146 `(alist-delete 'patch-waf ,phases))
1147 ((#:native-inputs native-inputs)
1148 `(alist-delete "python-waf" ,native-inputs)))))
fbcfa730 1149 ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
0d6a8339 1150 (license (list license:lgpl2.1 license:mpl1.1))))
fbcfa730
EB
1151
1152(define-public python2-pygtk
1153 (package
1154 (name "python2-pygtk")
1155 (version "2.24.0")
1156 (source
1157 (origin
1158 (method url-fetch)
966a543b 1159 (uri (string-append "mirror://gnome/sources"
fbcfa730
EB
1160 "/pygtk/" (version-major+minor version)
1161 "/pygtk-" version ".tar.bz2"))
1162 (sha256
1163 (base32
1164 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
1165 (build-system gnu-build-system)
594e7b47
LC
1166 (outputs '("out"
1167 "doc")) ;13 MiB of gtk-doc HTML
fbcfa730
EB
1168 (native-inputs
1169 `(("pkg-config" ,pkg-config)))
1170 (inputs
1171 `(("python" ,python-2)
6ab4712d 1172 ("libglade" ,libglade)
fbcfa730
EB
1173 ("glib" ,glib)))
1174 (propagated-inputs
7ca0dbc3 1175 `(("python-pycairo" ,python2-pycairo) ;loaded at runtime
fbcfa730
EB
1176 ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
1177 ("gtk+" ,gtk+-2)))
1178 (arguments
1179 `(#:tests? #f
ae115bc7 1180 #:phases (modify-phases %standard-phases
594e7b47
LC
1181 (add-before 'configure 'set-gtk-doc-directory
1182 (lambda* (#:key outputs #:allow-other-keys)
1183 ;; Install documentation to "doc".
1184 (let ((doc (assoc-ref outputs "doc")))
1185 (substitute* "docs/Makefile.in"
1186 (("TARGET_DIR = \\$\\(datadir\\)")
1187 (string-append "TARGET_DIR = " doc))))))
ae115bc7
LC
1188 (add-after 'configure 'fix-codegen
1189 (lambda* (#:key inputs #:allow-other-keys)
1190 (substitute* "pygtk-codegen-2.0"
1191 (("^prefix=.*$")
1192 (string-append
1193 "prefix="
1194 (assoc-ref inputs "python-pygobject") "\n")))))
1195 (add-after 'install 'install-pth
1196 (lambda* (#:key inputs outputs #:allow-other-keys)
1197 ;; pygtk's modules are stored in a subdirectory of
1198 ;; python's site-packages directory. Add a .pth file so
1199 ;; that python will add that subdirectory to its module
1200 ;; search path.
1201 (let* ((out (assoc-ref outputs "out"))
1202 (site (string-append out "/lib/python"
1203 ,(version-major+minor
1204 (package-version python-2))
1205 "/site-packages")))
1206 (call-with-output-file (string-append site "/pygtk.pth")
1207 (lambda (port)
1208 (format port "gtk-2.0~%")))))))))
fbcfa730
EB
1209 (home-page "http://www.pygtk.org/")
1210 (synopsis "Python bindings for GTK+")
1211 (description
1212 "PyGTK allows you to write full featured GTK programs in Python. It is
d1e4ad1b 1213targeted at GTK 2.x, and can be used in conjunction with gnome-python to
fbcfa730
EB
1214write GNOME applications.")
1215 (license license:lgpl2.1+)))
136770c9
PW
1216
1217(define-public girara
1218 (package
1219 (name "girara")
24bbd9e1 1220 (version "0.2.7")
136770c9
PW
1221 (source (origin
1222 (method url-fetch)
1223 (uri
1224 (string-append "https://pwmt.org/projects/girara/download/girara-"
1225 version ".tar.gz"))
1226 (sha256
1227 (base32
24bbd9e1 1228 "1r9jbhf9n40zj4ddqv1q5spijpjm683nxg4hr5lnir4a551s7rlq"))))
136770c9 1229 (native-inputs `(("pkg-config" ,pkg-config)
b94a6ca0 1230 ("gettext" ,gettext-minimal)))
136770c9
PW
1231 (inputs `(("gtk+" ,gtk+)
1232 ("check" ,check)))
1233 (arguments
1234 `(#:make-flags
1235 `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
1236 "COLOR=0" "CC=gcc")
1237 #:test-target "test"
1238 #:tests? #f ; Tests fail with "Gtk cannot open display:"
1239 #:phases
1240 (alist-delete 'configure %standard-phases)))
1241 (build-system gnu-build-system)
1242 (home-page "https://pwmt.org/projects/girara/")
1243 (synopsis "Library for minimalistic gtk+3 user interfaces")
1244 (description "Girara is a library that implements a user interface that
1245focuses on simplicity and minimalism. Currently based on GTK+, a
1246cross-platform widget toolkit, it provides an interface that focuses on three
1247main components: a so-called view widget that represents the actual
1248application, an input bar that is used to execute commands of the
1249application and the status bar which provides the user with current
1250information.")
1251 (license license:zlib)))
3bc45449
AW
1252
1253(define-public gtk-doc
1254 (package
1255 (name "gtk-doc")
9d19e18d 1256 (version "1.25")
3bc45449
AW
1257 (source (origin
1258 (method url-fetch)
1259 (uri (string-append "mirror://gnome/sources/" name "/"
1260 (version-major+minor version) "/"
1261 name "-" version ".tar.xz"))
1262 (sha256
1263 (base32
9d19e18d 1264 "0hpxcij9xx9ny3gs9p0iz4r8zslw8wqymbyababiyl7603a6x90y"))))
3bc45449
AW
1265 (build-system gnu-build-system)
1266 (arguments
6ad08117
AE
1267 `(#:parallel-tests? #f
1268 #:phases
b4787e71
AW
1269 (modify-phases %standard-phases
1270 (add-before
1271 'configure 'fix-docbook
1272 (lambda* (#:key inputs #:allow-other-keys)
1273 (substitute* "configure"
1274 ;; The configure check is overzealous about making sure that
1275 ;; things are in place -- it uses the xmlcatalog tool to make
1276 ;; sure that docbook-xsl is available, but this tool can only
1277 ;; look in one catalog file, unlike the $XML_CATALOG_FILES
1278 ;; variable that Guix defines. Fool the test by using the
1279 ;; docbook-xsl catalog explicitly and get on with life.
1280 (("\"\\$XML_CATALOG_FILE\" \
1281\"http://docbook.sourceforge.net/release/xsl/")
4ed737b2
MW
1282 (string-append (car (find-files (assoc-ref inputs "docbook-xsl")
1283 "^catalog.xml$"))
1284 " \"http://docbook.sourceforge.net/release/xsl/")))
1285 #t)))
b4787e71 1286 #:configure-flags
3bc45449
AW
1287 (list (string-append "--with-xml-catalog="
1288 (assoc-ref %build-inputs "docbook-xml")
1289 "/xml/dtd/docbook/catalog.xml"))))
1290 (native-inputs
1291 `(("pkg-config" ,pkg-config)
1292 ("itstool" ,itstool)
1293 ("libxml" ,libxml2)
b94a6ca0 1294 ("gettext" ,gettext-minimal)
3bc45449
AW
1295 ("bc" ,bc)))
1296 (inputs
1297 `(("perl" ,perl)
1298 ("python" ,python)
1299 ("xsltproc" ,libxslt)
1300 ("dblatex" ,dblatex)
1301 ("docbook-xml" ,docbook-xml-4.3)
1302 ("docbook-xsl" ,docbook-xsl)
1303 ("source-highlight" ,source-highlight)
1304 ("glib" ,glib)))
1305 (home-page "http://www.gtk.org/gtk-doc/")
1306 (synopsis "Documentation generator from C source code")
1307 (description
a124bbd2 1308 "GTK-Doc generates API documentation from comments added to C code. It is
3bc45449
AW
1309typically used to document the public API of GTK+ and GNOME libraries, but it
1310can also be used to document application code.")
1311 (license license:gpl2+)))
9ba5198c
FH
1312
1313(define-public gtk-engines
1314 (package
1315 (name "gtk-engines")
1316 (version "2.20.2")
1317 (source (origin
1318 (method url-fetch)
1319 (uri (string-append "mirror://gnome/sources/" name "/"
1320 (version-major+minor version) "/"
1321 name "-" version ".tar.bz2"))
1322 (sha256
1323 (base32
1324 "1db65pb0j0mijmswrvpgkdabilqd23x22d95hp5kwxvcramq1dhm"))))
1325 (build-system gnu-build-system)
1326 (arguments
1327 `(#:configure-flags
1328 `("--enable-animation")))
1329 (native-inputs
1330 `(("pkg-config" ,pkg-config)
1331 ("intltool" ,intltool)))
9fff9e64
SB
1332 (inputs
1333 ;; Don't propagate GTK+ to reduce "profile pollution".
9ba5198c
FH
1334 `(("gtk+" ,gtk+-2))) ; required by gtk-engines-2.pc
1335 (home-page "http://live.gnome.org/GnomeArt")
1336 (synopsis "Theming engines for GTK+ 2.x")
1337 (description
1338 "This package contains the standard GTK+ 2.x theming engines including
1339Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,
1340Redmond95 and ThinIce.")
1341 (license (list license:gpl2+ license:lgpl2.1+))))
b7807bb2
FH
1342
1343(define-public murrine
1344 (package
1345 (name "murrine")
1346 (version "0.98.2")
1347 (source (origin
1348 (method url-fetch)
1349 (uri (string-append "mirror://gnome/sources/" name "/"
1350 (version-major+minor version) "/"
1351 name "-" version ".tar.xz"))
1352 (sha256
1353 (base32
1354 "129cs5bqw23i76h3nmc29c9mqkm9460iwc8vkl7hs4xr07h8mip9"))))
1355 (build-system gnu-build-system)
1356 (arguments
1357 `(#:configure-flags
1358 `("--enable-animation"
1359 "--enable-animationrtl")))
1360 (native-inputs
1361 `(("pkg-config" ,pkg-config)
1362 ("intltool" ,intltool)))
1363 (propagated-inputs
1364 `(("gtk+" ,gtk+-2)))
1365 (home-page "http://live.gnome.org/GnomeArt")
1366 (synopsis "Cairo-based theming engine for GTK+ 2.x")
1367 (description
1368 "Murrine is a cairo-based GTK+ theming engine. It is named after the
1369glass artworks done by Venicians glass blowers.")
1370 (license license:gpl2+)))
9c0c77f8
KY
1371
1372(define-public gtkspell3
1373 (package
1374 (name "gtkspell3")
1375 (version "3.0.8")
1376 (source (origin
1377 (method url-fetch)
1378 (uri (string-append "mirror://sourceforge/gtkspell/"
1379 version "/" name "-" version ".tar.gz"))
1380 (sha256
1381 (base32
1382 "1zrz5pz4ryvcssk898liynmy2wyxgj95ak7mp2jv7x62yzihq6h1"))))
1383 (build-system gnu-build-system)
1384 (native-inputs
1385 `(("intltool" ,intltool)
1386 ("pkg-config" ,pkg-config)))
1387 (inputs
1388 `(("enchant" ,enchant)
1389 ("gobject-introspection" ,gobject-introspection)
1390 ("gtk+" ,gtk+)
1391 ("pango" ,pango)))
1392 (home-page "http://gtkspell.sourceforge.net")
1393 (synopsis "Spell-checking addon for GTK's TextView widget")
1394 (description
1395 "GtkSpell provides word-processor-style highlighting and replacement of
1396misspelled words in a GtkTextView widget.")
1397 (license license:gpl2+)))
37355498 1398
1399(define-public clipit
1400 (package
1401 (name "clipit")
1402 (version "1.4.2")
1403 (source (origin
1404 (method url-fetch)
1405 (uri (string-append
1406 "https://github.com/downloads/ClipIt/clipit-"
1407 version ".tar.gz"))
1408 (sha256
1409 (base32
1410 "0jrwn8qfgb15rwspdp1p8hb1nc0ngmpvgr87d4k3lhlvqg2cfqva"))))
1411 (build-system gnu-build-system)
1412 (native-inputs
1413 `(("intltool" ,intltool)
1414 ("pkg-config" ,pkg-config)))
1415 (inputs
1416 `(("gtk+" ,gtk+-2)))
1417 (home-page "https://github.com/CristianHenzel/ClipIt")
1418 (synopsis "Lightweight GTK+ clipboard manager")
1419 (description
1420 "ClipIt is a clipboard manager with features such as a history, search
1421thereof, global hotkeys and clipboard item actions. It was forked from
1422Parcellite and adds bugfixes and features.")
1423 (license license:gpl2+)))
61af2675
RJ
1424
1425(define-public graphene
1426 (package
1427 (name "graphene")
1428 (version "1.6.0")
1429 (source (origin
1430 (method url-fetch)
1431 (uri (string-append
1432 "https://github.com/ebassi/graphene/archive/"
1433 version ".tar.gz"))
1434 (file-name (string-append name "-" version ".tar.gz"))
1435 (sha256
1436 (base32 "1zd2daj7y590wnzn4jw0niyc4fnzgxrcl9i7nwhy8b25ks2hz5wq"))))
1437 (build-system gnu-build-system)
1438 (arguments
1439 `(#:configure-flags '("--enable-introspection=yes")
1440 #:phases
1441 (modify-phases %standard-phases
1442 (add-before 'configure 'autogen
1443 (lambda _
1444 (zero? (system* "./autogen.sh")))))))
1445 (native-inputs
1446 `(("autoconf" ,autoconf)
1447 ("which" ,which)
1448 ("pkg-config" ,pkg-config)
1449 ("automake" ,automake)
1450 ("libtool" ,libtool)))
1451 (inputs
1452 `(("python" ,python)
1453 ("python-2" ,python-2)
1454 ("glib" ,glib)
1455 ("gobject-introspection" ,gobject-introspection)))
1456 (home-page "http://ebassi.github.io/graphene")
1457 (synopsis "Thin layer of graphic data types")
1458 (description "This library provides graphic types and their relative API;
1459it does not deal with windowing system surfaces, drawing, scene graphs, or
1460input.")
1461 (license license:expat)))