gnu: util-linux: Adapt util-linux-tests.patch to version 2.27.
[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>
37cb3a69 3;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
97f94f5e 4;;; Copyright © 2014, 2015 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>
3a08a411
AE
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages gtk)
b5b73a82 27 #:use-module ((guix licenses) #:prefix license:)
b38e45d8 28 #:use-module (guix utils)
3a08a411
AE
29 #:use-module (guix packages)
30 #:use-module (guix download)
31 #:use-module (guix build-system gnu)
0b96fb2a 32 #:use-module (guix build-system python)
e926ba71 33 #:use-module (guix build-system waf)
b837e658 34 #:use-module (gnu packages)
3bc45449 35 #:use-module (gnu packages algebra)
1a51fe27
LC
36 #:use-module (gnu packages autotools)
37 #:use-module (gnu packages texinfo)
136770c9 38 #:use-module (gnu packages check)
6131c43d 39 #:use-module (gnu packages compression)
3bc45449 40 #:use-module (gnu packages docbook)
6131c43d 41 #:use-module (gnu packages fontutils)
3bc45449 42 #:use-module (gnu packages gettext)
6131c43d 43 #:use-module (gnu packages ghostscript)
31b254a3 44 #:use-module (gnu packages gl)
3a08a411 45 #:use-module (gnu packages glib)
95d439b2 46 #:use-module (gnu packages gnome)
a2609b41 47 #:use-module (gnu packages icu4c)
e55354b8 48 #:use-module (gnu packages image)
6131c43d 49 #:use-module (gnu packages pdf)
8b79a547 50 #:use-module (gnu packages perl)
6131c43d 51 #:use-module (gnu packages pkg-config)
3bc45449 52 #:use-module (gnu packages pretty-print)
6131c43d 53 #:use-module (gnu packages python)
8e70e6d2 54 #:use-module (gnu packages guile)
37cb3a69 55 #:use-module (gnu packages cups)
8e70e6d2 56 #:use-module (gnu packages xml)
6c0e878e
LC
57 #:use-module (gnu packages xorg)
58 #:use-module (gnu packages xdisorg))
3a08a411
AE
59
60(define-public atk
61 (package
62 (name "atk")
20342b7e 63 (version "2.16.0")
3a08a411
AE
64 (source (origin
65 (method url-fetch)
3b8e4347 66 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
67 (version-major+minor version) "/"
68 name "-" version ".tar.xz"))
3a08a411
AE
69 (sha256
70 (base32
20342b7e 71 "0qp5i91kfk6rhrlam3s8ha0cz88lkyp89vsyn4pb5856c1h9hpq9"))))
3a08a411 72 (build-system gnu-build-system)
cd0466eb
SB
73 (outputs '("out" "doc"))
74 (arguments
75 `(#:configure-flags
76 (list (string-append "--with-html-dir="
77 (assoc-ref %outputs "doc")
78 "/share/gtk-doc/html"))))
13a9e291 79 (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
141aed80
LC
80 (native-inputs
81 `(("pkg-config" ,pkg-config)
426adbe8 82 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 83 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
c5cc5006 84 (synopsis "GNOME accessibility toolkit")
3a08a411
AE
85 (description
86 "ATK provides the set of accessibility interfaces that are implemented
35b9e423 87by other toolkits and applications. Using the ATK interfaces, accessibility
3a08a411
AE
88tools have full access to view and control running applications.")
89 (license license:lgpl2.0+)
90 (home-page "https://developer.gnome.org/atk/")))
6131c43d
AE
91
92(define-public cairo
93 (package
94 (name "cairo")
d8720c50 95 (version "1.14.2")
6131c43d
AE
96 (source (origin
97 (method url-fetch)
98 (uri (string-append "http://cairographics.org/releases/cairo-"
99 version ".tar.xz"))
100 (sha256
101 (base32
d8720c50 102 "1sycbq0agbwmg1bj9lhkgsf0glmblaf2jrdy9g6vxfxivncxj6f9"))))
6131c43d
AE
103 (build-system gnu-build-system)
104 (propagated-inputs
105 `(("fontconfig" ,fontconfig)
106 ("freetype" ,freetype)
107 ("glib" ,glib)
108 ("libpng" ,libpng)
109 ("libx11" ,libx11)
110 ("libxext" ,libxext)
111 ("libxrender" ,libxrender)
112 ("pixman" ,pixman)))
113 (inputs
114 `(("ghostscript" ,ghostscript)
115 ("libspectre" ,libspectre)
6131c43d 116 ("poppler" ,poppler)
6131c43d
AE
117 ("xextproto" ,xextproto)
118 ("zlib" ,zlib)))
c4c4cc05
JD
119 (native-inputs
120 `(("pkg-config" ,pkg-config)
121 ("python" ,python-wrapper)))
6131c43d 122 (arguments
77888fae
MW
123 `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
124 #:configure-flags '("--enable-tee"))) ; needed for GNU Icecat
6131c43d
AE
125 (synopsis "2D graphics library")
126 (description
127 "Cairo is a 2D graphics library with support for multiple output devices.
128Currently supported output targets include the X Window System (via both
129Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
35b9e423 130output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
6131c43d
AE
131
132Cairo is designed to produce consistent output on all output media while
133taking advantage of display hardware acceleration when available
134eg. through the X Render Extension).
135
136The cairo API provides operations similar to the drawing operators of
35b9e423 137PostScript and PDF. Operations in cairo including stroking and filling cubic
6131c43d 138Bézier splines, transforming and compositing translucent images, and
35b9e423 139antialiased text rendering. All drawing operations can be transformed by any
e881752c 140affine transformation (scale, rotation, shear, etc.).")
6131c43d
AE
141 (license license:lgpl2.1) ; or Mozilla Public License 1.1
142 (home-page "http://cairographics.org/")))
a2609b41
AE
143
144(define-public harfbuzz
145 (package
146 (name "harfbuzz")
81ece429 147 (version "1.0.3")
a2609b41
AE
148 (source (origin
149 (method url-fetch)
150 (uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
151 version ".tar.bz2"))
152 (sha256
153 (base32
81ece429 154 "1xrxlrvgyr6mm9qjxmkif2kvcah082y94gf1vqi0f0bdl1g8gp7b"))))
a2609b41
AE
155 (build-system gnu-build-system)
156 (inputs
157 `(("cairo" ,cairo)
27383915 158 ("graphite2" ,graphite2)
c4c4cc05 159 ("icu4c" ,icu4c)))
a30a0455
SB
160 (propagated-inputs
161 `(("glib" ,glib))) ; required by harfbuzz-gobject.pc
c4c4cc05 162 (native-inputs
a30a0455
SB
163 `(("gobject-introspection" ,gobject-introspection)
164 ("pkg-config" ,pkg-config)
ac462e52 165 ("python" ,python-2))) ; incompatible with Python 3 (print syntax)
27383915 166 (arguments
a30a0455
SB
167 `(#:configure-flags `("--with-graphite2"
168 "--with-gobject")))
35b9e423 169 (synopsis "OpenType text shaping engine")
a2609b41
AE
170 (description
171 "HarfBuzz is an OpenType text shaping engine.")
172 (license (license:x11-style "file://COPYING"
173 "See 'COPYING' in the distribution."))
174 (home-page "http://www.freedesktop.org/wiki/Software/HarfBuzz/")))
4b9adff9
AE
175
176(define-public pango
177 (package
178 (name "pango")
dca1b58d 179 (version "1.36.8")
4b9adff9
AE
180 (source (origin
181 (method url-fetch)
dca1b58d
FB
182 (uri (string-append "mirror://gnome/sources/pango/"
183 (version-major+minor version) "/"
184 name "-" version ".tar.xz"))
4b9adff9
AE
185 (sha256
186 (base32
dca1b58d 187 "01rdzjh68w8l5zn0648yibyarj8p6g7yfn59nw5awaz1i8dvbnqq"))))
4b9adff9 188 (build-system gnu-build-system)
cf2135ff 189 (propagated-inputs
4b9adff9 190 `(("cairo" ,cairo)
4169a4bc
AE
191 ("harfbuzz" ,harfbuzz)))
192 (inputs
9a5acb54
JL
193 `(("zlib" ,zlib)
194
195 ;; Some packages, such as Openbox, expect Pango to be built with the
196 ;; optional libxft support.
197 ("libxft" ,libxft)))
c4c4cc05 198 (native-inputs
141aed80 199 `(("pkg-config" ,pkg-config)
426adbe8 200 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 201 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
4b9adff9
AE
202 (synopsis "GNOME text and font handling library")
203 (description
204 "Pango is the core text and font handling library used in GNOME
35b9e423 205applications. It has extensive support for the different writing systems
4b9adff9
AE
206used throughout the world.")
207 (license license:lgpl2.0+)
208 (home-page "https://developer.gnome.org/pango/")))
527e7961 209
5698b8b8
JD
210(define-public pangox-compat
211 (package
212 (name "pangox-compat")
213 (version "0.0.2")
214 (source (origin
215 (method url-fetch)
b38e45d8
EB
216 (uri (string-append "mirror://gnome/sources/" name "/"
217 (version-major+minor version) "/"
218 name "-" version ".tar.xz"))
5698b8b8
JD
219 (sha256
220 (base32
221 "0ip0ziys6mrqqmz4n71ays0kf5cs1xflj1gfpvs4fgy2nsrr482m"))))
222 (build-system gnu-build-system)
223 (inputs
224 `(("glib" ,glib)
225 ("pango" ,pango)))
226 (native-inputs
227 `(("intltool" ,intltool)
228 ("pkg-config" ,pkg-config)))
229 (home-page "https://developer.gnome.org/pango")
35b9e423 230 (synopsis "Obsolete pango functions")
5698b8b8
JD
231 (description "Pangox was a X backend to pango. It is now obsolete and no
232longer provided by recent pango releases. pangox-compat provides the
233functions which were removed.")
234 (license license:lgpl2.0+)))
235
e926ba71
RW
236(define-public ganv
237 (package
238 (name "ganv")
239 (version "1.4.2")
240 (source (origin
241 (method url-fetch)
242 (uri (string-append "http://download.drobilla.net/ganv-"
ea7f3349 243 version ".tar.bz2"))
e926ba71
RW
244 (sha256
245 (base32
246 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
247 (build-system waf-build-system)
ea7f3349
LC
248 (arguments
249 `(#:phases (alist-cons-before
250 'configure 'set-ldflags
251 (lambda* (#:key outputs #:allow-other-keys)
252 ;; Allow 'bin/ganv_bench' to find libganv-1.so.
253 (setenv "LDFLAGS"
254 (string-append "-Wl,-rpath="
255 (assoc-ref outputs "out") "/lib")))
256 %standard-phases)
257 #:tests? #f)) ; no check target
e926ba71
RW
258 (inputs
259 `(("gtk" ,gtk+-2)
260 ("gtkmm" ,gtkmm-2)))
261 (native-inputs
262 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
263 ("pkg-config" ,pkg-config)))
264 (home-page "http://drobilla.net/software/ganv/")
265 (synopsis "GTK+ widget for interactive graph-like environments")
266 (description
267 "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
268graph-like environments, e.g. modular synths or finite state machine
269diagrams.")
270 (license license:gpl3+)))
95d439b2
JD
271
272(define-public gtksourceview
273 (package
274 (name "gtksourceview")
275 (version "2.10.5") ; This is the last version which builds against gtk+2
276 (source (origin
277 (method url-fetch)
b38e45d8
EB
278 (uri (string-append "mirror://gnome/sources/" name "/"
279 (version-major+minor version) "/"
280 name "-" version ".tar.bz2"))
95d439b2
JD
281 (sha256
282 (base32
283 "07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5"))))
284 (build-system gnu-build-system)
285 (inputs
c4c4cc05 286 `(("gtk" ,gtk+-2)
95d439b2 287 ("libxml2" ,libxml2)
95d439b2
JD
288 ;; These two are needed only to allow the tests to run successfully.
289 ("xorg-server" ,xorg-server)
290 ("shared-mime-info" ,shared-mime-info)))
c4c4cc05 291 (native-inputs
44add1ce 292 `(("intltool" ,intltool)
221ed17a 293 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
c4c4cc05 294 ("pkg-config" ,pkg-config)))
95d439b2
JD
295 (arguments
296 `(#:phases
297 ;; Unfortunately, some of the tests in "make check" are highly dependent
298 ;; on the environment therefore, some black magic is required.
299 (alist-cons-before
300 'check 'start-xserver
301 (lambda* (#:key inputs #:allow-other-keys)
302 (let ((xorg-server (assoc-ref inputs "xorg-server"))
303 (mime (assoc-ref inputs "shared-mime-info")))
304
305 ;; There must be a running X server and make check doesn't start one.
306 ;; Therefore we must do it.
307 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
308 (setenv "DISPLAY" ":1")
309
310 ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
311 (system "ln -s gtksourceview gtksourceview-2.0")
312 (setenv "XDG_DATA_HOME" (getcwd))
313
314 ;; Finally, the mimetypes must be available.
315 (setenv "XDG_DATA_DIRS" (string-append mime "/share/")) ))
316 %standard-phases)))
317 (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
318 (description
319 "GtkSourceView is a portable C library that extends the standard GTK+
320framework for multiline text editing with support for configurable syntax
321highlighting, unlimited undo/redo, search and replace, a completion framework,
322printing and other features typical of a source code editor.")
323 (license license:lgpl2.0+)
324 (home-page "https://developer.gnome.org/gtksourceview/")))
325
527e7961
AE
326(define-public gdk-pixbuf
327 (package
328 (name "gdk-pixbuf")
0d5ddad4 329 (version "2.31.6")
527e7961
AE
330 (source (origin
331 (method url-fetch)
b38e45d8
EB
332 (uri (string-append "mirror://gnome/sources/" name "/"
333 (version-major+minor version) "/"
334 name "-" version ".tar.xz"))
527e7961
AE
335 (sha256
336 (base32
0d5ddad4 337 "062x2gqd7p6yxhxlib1ha4l3gk9ihcj080hrwwv9vmlmybb064hi"))))
527e7961 338 (build-system gnu-build-system)
48f46dc3 339 (arguments
a63a73dc
SB
340 '(#:configure-flags '("--with-x11")
341 #:phases
342 (modify-phases %standard-phases
343 (add-after
344 'unpack 'disable-failing-tests
345 (lambda _
346 (substitute* "tests/Makefile.in"
347 ;; XXX FIXME: This test fails on some machines with:
348 ;; GLib-FATAL-ERROR: gmem.c:103: failed to allocate
349 ;; 6039798016 bytes
350 (("cve-2015-4491\\$\\(EXEEXT\\) ") "")
351 ;; XXX FIXME: This test fails with:
352 ;; ERROR:pixbuf-jpeg.c:74:test_type9_rotation_exif_tag:
353 ;; assertion failed (error == NULL): Data differ
354 ;; (gdk-pixbuf-error-quark, 0)
355 (("pixbuf-jpeg\\$\\(EXEEXT\\) ") ""))
356 #t)))))
1b5758a6 357 (propagated-inputs ; required by gdk-pixbuf-2.0.pc
527e7961 358 `(("glib" ,glib)
1b5758a6
SB
359 ("libpng" ,libpng)))
360 (inputs
361 `(("libjpeg" ,libjpeg)
48f46dc3
SB
362 ("libtiff" ,libtiff)
363 ("libx11" ,libx11)))
c4c4cc05 364 (native-inputs
141aed80 365 `(("pkg-config" ,pkg-config)
426adbe8 366 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 367 ("gobject-introspection", gobject-introspection))) ; g-ir-compiler, etc.
527e7961
AE
368 (synopsis "GNOME image loading and manipulation library")
369 (description
370 "GdkPixbuf is a library for image loading and manipulation developed
371in the GNOME project.")
372 (license license:lgpl2.0+)
373 (home-page "https://developer.gnome.org/gdk-pixbuf/")))
cf2135ff 374
f3fb92e5
AE
375(define-public at-spi2-core
376 (package
377 (name "at-spi2-core")
0c75803b 378 (version "2.16.0")
f3fb92e5
AE
379 (source (origin
380 (method url-fetch)
381 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
382 (version-major+minor version) "/"
383 name "-" version ".tar.xz"))
f3fb92e5
AE
384 (sha256
385 (base32
0c75803b 386 "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw"))))
f3fb92e5 387 (build-system gnu-build-system)
068a53c3 388 (outputs '("out" "doc"))
f3fb92e5 389 (arguments
b19d6805 390 '(#:configure-flags
068a53c3
SB
391 (list (string-append "--with-html-dir="
392 (assoc-ref %outputs "doc")
393 "/share/gtk-doc/html"))
50cc7f41 394 #:phases
af108677 395 (modify-phases %standard-phases
3a4de6b2 396 (replace 'check
af108677
SB
397 ;; Run test-suite under a dbus session.
398 (lambda _
399 (zero? (system* "dbus-launch" "make" "check")))))))
c6a552da
SB
400 (propagated-inputs
401 ;; atspi-2.pc refers to all these.
402 `(("dbus" ,dbus)
403 ("glib" ,glib)))
404 (inputs
405 `(("libxi" ,libxi)
406 ("libxtst" ,libxtst)))
c4c4cc05 407 (native-inputs
50cc7f41
SB
408 `(("gobject-introspection" ,gobject-introspection)
409 ("intltool" ,intltool)
410 ("pkg-config" ,pkg-config)))
f3fb92e5
AE
411 (synopsis "Assistive Technology Service Provider Interface, core components")
412 (description
413 "The Assistive Technology Service Provider Interface, core components,
414is part of the GNOME accessibility project.")
415 (license license:lgpl2.0+)
416 (home-page "https://projects.gnome.org/accessibility/")))
417
5fda4784
AE
418(define-public at-spi2-atk
419 (package
420 (name "at-spi2-atk")
d3d4bc0b 421 (version "2.16.0")
5fda4784
AE
422 (source (origin
423 (method url-fetch)
424 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
425 (version-major+minor version) "/"
426 name "-" version ".tar.xz"))
5fda4784
AE
427 (sha256
428 (base32
d3d4bc0b 429 "1y9gfz1iz3wpja7s000f0bmyyvc6im5fcdl6bxwbz0v3qdgc9vvq"))))
5fda4784 430 (build-system gnu-build-system)
5fda4784 431 (arguments
57fcd224
SB
432 '(#:phases
433 (modify-phases %standard-phases
3a4de6b2 434 (replace 'check
57fcd224
SB
435 ;; Run test-suite under a dbus session.
436 (lambda _
437 (zero? (system* "dbus-launch" "make" "check")))))))
6967cc3f
SB
438 (propagated-inputs
439 `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
440 (inputs
441 `(("atk" ,atk)))
c4c4cc05 442 (native-inputs
6967cc3f
SB
443 `(("dbus" ,dbus) ; for testing
444 ("pkg-config" ,pkg-config)))
5fda4784
AE
445 (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
446 (description
447 "The Assistive Technology Service Provider Interface
448is part of the GNOME accessibility project.")
449 (license license:lgpl2.0+)
450 (home-page "https://projects.gnome.org/accessibility/")))
451
8b79a547 452(define-public gtk+-2
cf2135ff
AE
453 (package
454 (name "gtk+")
62b7015b 455 (version "2.24.28")
cf2135ff
AE
456 (source (origin
457 (method url-fetch)
1c8362a8 458 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
459 (version-major+minor version) "/"
460 name "-" version ".tar.xz"))
cf2135ff
AE
461 (sha256
462 (base32
62b7015b 463 "0mj6xn40py9r9lvzg633fal81xfwfm89d9mvz7jk4lmwk0g49imj"))))
cf2135ff 464 (build-system gnu-build-system)
6b1f2388 465 (outputs '("out" "doc"))
4169a4bc 466 (propagated-inputs
cf2135ff 467 `(("atk" ,atk)
cf2135ff 468 ("gdk-pixbuf" ,gdk-pixbuf)
4169a4bc 469 ("pango" ,pango)))
dfbce50c
SB
470 (inputs
471 `(("cups" ,cups)
472 ("libxcomposite" ,libxcomposite)
473 ("libxcursor" ,libxcursor)
474 ("libxdamage" ,libxdamage)
475 ("libxi" ,libxi)
476 ("libxinerama" ,libxinerama)
477 ("libxrandr" ,libxrandr)))
c4c4cc05 478 (native-inputs
1c8362a8 479 `(("perl" ,perl)
dfbce50c 480 ("gettext" ,gnu-gettext)
426adbe8 481 ("glib" ,glib "bin")
9d297fae 482 ("gobject-introspection" ,gobject-introspection)
1c8362a8
AE
483 ("pkg-config" ,pkg-config)
484 ("python-wrapper" ,python-wrapper)))
cf2135ff 485 (arguments
b19d6805 486 `(#:configure-flags
6b1f2388
SB
487 (list "--with-xinput=yes"
488 (string-append "--with-html-dir="
489 (assoc-ref %outputs "doc")
490 "/share/gtk-doc/html"))
9d297fae 491 #:phases
d4bf49b1
EB
492 (alist-cons-before
493 'configure 'disable-tests
494 (lambda _
495 ;; FIXME: re-enable tests requiring an X server
496 (substitute* "gtk/Makefile.in"
497 (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits .")))
cf2135ff 498 %standard-phases)))
0327ced2 499 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
cf2135ff
AE
500 (description
501 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
35b9e423 502graphical user interfaces. Offering a complete set of widgets, GTK+ is
cf2135ff
AE
503suitable for projects ranging from small one-off tools to complete
504application suites.")
505 (license license:lgpl2.0+)
506 (home-page "http://www.gtk.org/")))
8e70e6d2 507
8b79a547
AE
508(define-public gtk+
509 (package (inherit gtk+-2)
b38e45d8 510 (name "gtk+")
a35b8fc6 511 (version "3.16.6")
8b79a547
AE
512 (source (origin
513 (method url-fetch)
b38e45d8
EB
514 (uri (string-append "mirror://gnome/sources/" name "/"
515 (version-major+minor version) "/"
516 name "-" version ".tar.xz"))
8b79a547
AE
517 (sha256
518 (base32
a35b8fc6 519 "1gpzlnfrifc17yfk0zki6b2vmsfpf5cmrbh232s6iaan11np44jd"))))
0e112540 520 (propagated-inputs
8b79a547 521 `(("at-spi2-atk" ,at-spi2-atk)
0e112540
AE
522 ("atk" ,atk)
523 ("gdk-pixbuf" ,gdk-pixbuf)
31b254a3 524 ("libepoxy" ,libepoxy)
8b79a547
AE
525 ("libxi" ,libxi)
526 ("libxinerama" ,libxinerama)
9e5c0927 527 ("libxdamage" ,libxdamage)
0e112540
AE
528 ("pango" ,pango)))
529 (inputs
52b8beb1
SB
530 `(("librsvg" ,librsvg) ;for gtk-encode-symbolic-svg
531 ("libxml2" ,libxml2)
37cb3a69 532 ("cups" ,cups))) ;for printing support
c4c4cc05 533 (native-inputs
141aed80 534 `(("perl" ,perl)
426adbe8 535 ("glib" ,glib "bin")
31b254a3 536 ("gettext" ,gnu-gettext)
8b79a547 537 ("pkg-config" ,pkg-config)
141aed80 538 ("gobject-introspection" ,gobject-introspection)
8b79a547 539 ("python-wrapper" ,python-wrapper)
97f94f5e 540 ("xorg-server" ,xorg-server)))
8b79a547 541 (arguments
260b07a7
LC
542 `(;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes
543 ;; to "doc".
544 #:configure-flags (list (string-append "--with-html-dir="
545 (assoc-ref %outputs "doc")
546 "/share/gtk-doc/html"))
547 #:phases
31b254a3
AW
548 (alist-cons-before
549 'configure 'pre-configure
550 (lambda _
551 ;; Disable most tests, failing in the chroot with the message:
552 ;; D-Bus library appears to be incorrectly set up; failed to read
553 ;; machine uuid: Failed to open "/etc/machine-id": No such file or
554 ;; directory.
555 ;; See the manual page for dbus-uuidgen to correct this issue.
556 (substitute* "testsuite/Makefile.in"
557 (("SUBDIRS = gdk gtk a11y css reftests")
558 "SUBDIRS = gdk"))
559 (substitute* '("demos/widget-factory/Makefile.in"
560 "demos/gtk-demo/Makefile.in")
561 (("gtk-update-icon-cache") "$(bindir)/gtk-update-icon-cache"))
562 #t)
52b8beb1
SB
563 (alist-cons-after
564 'install 'wrap-gtk-encode-symbolic-svg
565 ;; By using GdkPixbuf, gtk-encode-symbolic-svg needs to know
566 ;; librsvg's loaders.cache to handle SVG files.
567 (lambda* (#:key inputs outputs #:allow-other-keys)
568 (let* ((out (assoc-ref outputs "out"))
569 (prog (string-append out "/bin/gtk-encode-symbolic-svg"))
570 (librsvg (assoc-ref inputs "librsvg"))
571 (loaders.cache (find-files librsvg "^loaders\\.cache$")))
572 (wrap-program prog
573 `("GDK_PIXBUF_MODULE_FILE" = ,loaders.cache))))
574 %standard-phases))))))
5fda4784 575
8e70e6d2
LC
576;;;
577;;; Guile bindings.
578;;;
579
580(define-public guile-cairo
581 (package
582 (name "guile-cairo")
583 (version "1.4.1")
584 (source (origin
585 (method url-fetch)
586 (uri (string-append
587 "http://download.gna.org/guile-cairo/guile-cairo-"
588 version
589 ".tar.gz"))
590 (sha256
591 (base32
592 "1f5nd9n46n6cwfl1byjml02q3y2hgn7nkx98km1czgwarxl7ws3x"))))
593 (build-system gnu-build-system)
594 (arguments
595 '(#:phases (alist-cons-before
596 'configure 'set-module-directory
597 (lambda* (#:key outputs #:allow-other-keys)
598 ;; Install modules under $out/share/guile/site/2.0.
599 (let ((out (assoc-ref outputs "out")))
600 (substitute* "Makefile.in"
601 (("scmdir = ([[:graph:]]+).*" _ value)
602 (string-append "scmdir = " value "/2.0\n")))
603 (substitute* "cairo/Makefile.in"
604 (("moduledir = ([[:graph:]]+).*" _ value)
605 (string-append "moduledir = "
606 "$(prefix)/share/guile/site/2.0/cairo\n'")))))
607 (alist-cons-after
608 'install 'install-missing-file
609 (lambda* (#:key outputs #:allow-other-keys)
610 ;; By default 'vector-types.scm' is not installed, so do
611 ;; it here.
612 (let ((out (assoc-ref outputs "out")))
613 (copy-file "cairo/vector-types.scm"
614 (string-append out "/share/guile/site/2.0"
615 "/cairo/vector-types.scm"))))
616 %standard-phases))))
617 (inputs
618 `(("guile-lib" ,guile-lib)
619 ("expat" ,expat)
8e70e6d2 620 ("guile" ,guile-2.0)))
49710cea
LC
621 (propagated-inputs
622 ;; The .pc file refers to 'cairo'.
623 `(("cairo" ,cairo)))
c4c4cc05
JD
624 (native-inputs
625 `(("pkg-config" ,pkg-config)))
8e70e6d2
LC
626 (home-page "http://www.nongnu.org/guile-cairo/")
627 (synopsis "Cairo bindings for GNU Guile")
628 (description
629 "Guile-Cairo wraps the Cairo graphics library for Guile Scheme.
630Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API
631stable, providing a firm base on which to do graphics work. Finally, and
632importantly, it is pleasant to use. You get a powerful and well-maintained
633graphics library with all of the benefits of Scheme: memory management,
634exceptions, macros, and a dynamic programming environment.")
635 (license license:lgpl3+)))
66663503 636
1a51fe27
LC
637(define-public guile-rsvg
638 (package
639 (name "guile-rsvg")
640 (version "2.18.1")
641 (source (origin
642 (method url-fetch)
643 (uri (string-append "http://wingolog.org/pub/guile-rsvg/"
644 name "-" version ".tar.gz"))
645 (sha256
646 (base32
647 "136f236iw3yrrz6pkkp1ma9c5mrs5icqha6pnawinqpk892r3jh7"))
648 (patches (list (search-patch "guile-rsvg-pkgconfig.patch")))
649 (modules '((guix build utils)))
650 (snippet
651 '(substitute* (find-files "." "Makefile\\.am")
652 (("/share/guile/site")
653 "/share/guile/site/2.0")))))
654 (build-system gnu-build-system)
655 (arguments
656 `(#:phases (modify-phases %standard-phases
657 (add-before 'configure 'bootstrap
658 (lambda _
659 (zero? (system* "autoreconf" "-vfi")))))))
660 (native-inputs `(("pkg-config" ,pkg-config)
661 ("autoconf" ,autoconf)
662 ("automake" ,automake)
663 ("libtool" ,libtool)
664 ("texinfo" ,texinfo)))
665 (inputs `(("guile" ,guile-2.0)
666 ("librsvg" ,librsvg)
667 ("guile-lib" ,guile-lib))) ;for (unit-test)
668 (propagated-inputs `(("guile-cairo" ,guile-cairo)))
669 (synopsis "Render SVG images using Cairo from Guile")
670 (description
671 "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
672images onto Cairo surfaces.")
673 (home-page "http://wingolog.org/projects/guile-rsvg/")
674 (license license:lgpl2.1+)))
7ca0dbc3 675
cdd383e9
LC
676(define-public guile-present
677 (package
678 (name "guile-present")
679 (version "0.3.0")
680 (source (origin
681 (method url-fetch)
682 (uri (string-append "http://wingolog.org/pub/guile-present/"
683 "guile-present-" version ".tar.gz"))
684 (sha256
685 (base32
686 "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
687 (patches (list (search-patch "guile-present-coding.patch")))
688 (modules '((guix build utils)))
689 (snippet
690 '(substitute* "Makefile.in"
691 (("godir = .*$")
692 "godir = $(moddir)\n")))))
693 (build-system gnu-build-system)
694 (arguments
695 '(#:phases (alist-cons-after
696 'install 'post-install
697 (lambda* (#:key inputs outputs #:allow-other-keys)
698 (let* ((out (assoc-ref outputs "out"))
699 (bin (string-append out "/bin"))
700 (guile (assoc-ref inputs "guile")))
701 (substitute* (find-files bin ".*")
702 (("guile")
703 (string-append guile "/bin/guile -L "
704 out "/share/guile/site/2.0 -C "
705 out "/share/guile/site/2.0 ")))))
706 %standard-phases)))
707 (native-inputs `(("pkg-config" ,pkg-config)))
708 (inputs `(("guile" ,guile-2.0)))
709 (propagated-inputs
710 ;; These are used by the (present …) modules.
711 `(("guile-lib" ,guile-lib)
712 ("guile-cairo" ,guile-cairo)
713 ("guile-rsvg" ,guile-rsvg)))
714 (home-page "http://wingolog.org/software/guile-present/")
715 (synopsis "Create SVG or PDF presentations in Guile")
716 (description
717 "Guile-Present defines a declarative vocabulary for presentations,
718together with tools to render presentation documents as SVG or PDF.
719Guile-Present can be used to make presentations programmatically, but also
720includes a tools to generate PDF presentations out of Org mode and Texinfo
721documents.")
722 (license license:lgpl3+)))
7ca0dbc3 723
66663503
LC
724;;;
725;;; C++ bindings.
726;;;
727
728(define-public cairomm
729 (package
730 (name "cairomm")
d36caa10 731 (version "1.11.2")
66663503
LC
732 (source (origin
733 (method url-fetch)
734 (uri (string-append "http://cairographics.org/releases/cairomm-"
735 version ".tar.gz"))
736 (sha256
737 (base32
d36caa10 738 "138052ybc58q5yl92m2p0br0k0a9g1pi9gfhmn4y220yih4pgxnc"))))
66663503
LC
739 (build-system gnu-build-system)
740 (arguments
741 ;; The examples lack -lcairo.
742 '(#:make-flags '("LDFLAGS=-lcairo")))
c4c4cc05 743 (native-inputs `(("pkg-config" ,pkg-config)))
66663503
LC
744 (propagated-inputs
745 `(("libsigc++" ,libsigc++)
746 ("freetype" ,freetype)
747 ("fontconfig" ,fontconfig)
748 ("cairo" ,cairo)))
749 (home-page "http://cairographics.org/")
750 (synopsis "C++ bindings to the Cairo 2D graphics library")
751 (description
752 "Cairomm provides a C++ programming interface to the Cairo 2D graphics
753library.")
754 (license license:lgpl2.0+)))
c5cc5006
LC
755
756(define-public pangomm
757 (package
758 (name "pangomm")
a8054b4e 759 (version "2.36.0")
c5cc5006
LC
760 (source (origin
761 (method url-fetch)
b38e45d8
EB
762 (uri (string-append "mirror://gnome/sources/" name "/"
763 (version-major+minor version) "/"
764 name "-" version ".tar.xz"))
c5cc5006
LC
765 (sha256
766 (base32
a8054b4e 767 "1w11d05nkxglzg67rfa81vqghm75xhy6j396xmmp5mq8qx96knd8"))))
c5cc5006 768 (build-system gnu-build-system)
c4c4cc05 769 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
770 (propagated-inputs
771 `(("cairo" ,cairo)
772 ("cairomm" ,cairomm)
773 ("glibmm" ,glibmm)
774 ("pango" ,pango)))
775 (home-page "http://www.pango.org/")
776 (synopsis "C++ interface to the Pango text rendering library")
777 (description
778 "Pangomm provides a C++ programming interface to the Pango text rendering
779library.")
780 (license license:lgpl2.1+)))
781
782(define-public atkmm
783 (package
784 (name "atkmm")
785 (version "2.22.7")
786 (source (origin
787 (method url-fetch)
b38e45d8
EB
788 (uri (string-append "mirror://gnome/sources/" name "/"
789 (version-major+minor version) "/"
790 name "-" version ".tar.xz"))
c5cc5006
LC
791 (sha256
792 (base32
793 "06zrf2ymml2dzp53sss0d4ch4dk9v09jm8rglnrmwk4v81mq9gxz"))))
794 (build-system gnu-build-system)
c4c4cc05 795 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
796 (propagated-inputs
797 `(("glibmm" ,glibmm) ("atk" ,atk)))
798 (home-page "http://www.gtkmm.org")
799 (synopsis "C++ interface to the ATK accessibility library")
800 (description
801 "ATKmm provides a C++ programming interface to the ATK accessibility
802toolkit.")
803 (license license:lgpl2.1+)))
804
805(define-public gtkmm
806 (package
807 (name "gtkmm")
09a5c4c3 808 (version "3.16.0")
c5cc5006
LC
809 (source (origin
810 (method url-fetch)
b38e45d8
EB
811 (uri (string-append "mirror://gnome/sources/" name "/"
812 (version-major+minor version) "/"
813 name "-" version ".tar.xz"))
c5cc5006
LC
814 (sha256
815 (base32
09a5c4c3 816 "036xn22jkaf3akpid7w23b8vkqa3xxqz93mwacmyar5vw7slm3cv"))))
c5cc5006 817 (build-system gnu-build-system)
c4c4cc05 818 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
819 (propagated-inputs
820 `(("pangomm" ,pangomm)
821 ("cairomm" ,cairomm)
822 ("atkmm" ,atkmm)
823 ("gtk+" ,gtk+)
824 ("glibmm" ,glibmm)))
825 (home-page "http://gtkmm.org/")
826 (synopsis
827 "C++ interface to the GTK+ graphical user interface library")
828 (description
829 "gtkmm is the official C++ interface for the popular GUI library GTK+.
830Highlights include typesafe callbacks, and a comprehensive set of widgets that
831are easily extensible via inheritance. You can create user interfaces either
832in code or with the Glade User Interface designer, using libglademm. There's
833extensive documentation, including API reference and a tutorial.")
834 (license license:lgpl2.1+)))
9c086443
JD
835
836
837(define-public gtkmm-2
838 (package (inherit gtkmm)
b38e45d8 839 (name "gtkmm")
f8f63893 840 (version "2.24.4")
9c086443
JD
841 (source (origin
842 (method url-fetch)
b38e45d8
EB
843 (uri (string-append "mirror://gnome/sources/" name "/"
844 (version-major+minor version) "/"
845 name "-" version ".tar.xz"))
9c086443
JD
846 (sha256
847 (base32
f8f63893 848 "1vpmjqv0aqb1ds0xi6nigxnhlr0c74090xzi15b92amlzkrjyfj4"))))
9c086443
JD
849 (propagated-inputs
850 `(("pangomm" ,pangomm)
851 ("cairomm" ,cairomm)
852 ("atkmm" ,atkmm)
853 ("gtk+" ,gtk+-2)
854 ("glibmm" ,glibmm)))))
fbcfa730
EB
855
856(define-public python-pycairo
857 (package
858 (name "python-pycairo")
859 (version "1.10.0")
860 (source
861 (origin
862 (method url-fetch)
863 (uri (string-append "http://cairographics.org/releases/pycairo-"
864 version ".tar.bz2"))
865 (sha256
866 (base32
b837e658
SB
867 "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s"))
868 (patches (list (search-patch "pycairo-wscript.patch")))))
869 (build-system waf-build-system)
fbcfa730 870 (native-inputs
b837e658
SB
871 `(("pkg-config" ,pkg-config)
872 ("python-waf" ,python-waf)))
fbcfa730
EB
873 (propagated-inputs ;pycairo.pc references cairo
874 `(("cairo" ,cairo)))
875 (arguments
876 `(#:tests? #f
b837e658
SB
877 #:phases
878 (modify-phases %standard-phases
879 (add-before
880 'configure 'patch-waf
881 (lambda* (#:key inputs #:allow-other-keys)
882 ;; The bundled `waf' doesn't work with python-3.4.x.
883 (copy-file (assoc-ref %build-inputs "python-waf") "./waf"))))))
fbcfa730
EB
884 (home-page "http://cairographics.org/pycairo/")
885 (synopsis "Python bindings for cairo")
886 (description
887 "Pycairo is a set of Python bindings for the Cairo graphics library.")
888 (license license:lgpl3+)))
889
7ca0dbc3 890(define-public python2-pycairo
fbcfa730 891 (package (inherit python-pycairo)
7ca0dbc3 892 (name "python2-pycairo")
fbcfa730
EB
893 (version "1.10.0")
894 (source
895 (origin
896 (method url-fetch)
897 (uri (string-append "http://cairographics.org/releases/py2cairo-"
898 version ".tar.bz2"))
899 (sha256
900 (base32
901 "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k"))))
902 (arguments
903 `(#:python ,python-2
b837e658
SB
904 ,@(substitute-keyword-arguments (package-arguments python-pycairo)
905 ((#:phases phases)
906 `(alist-delete 'patch-waf ,phases))
907 ((#:native-inputs native-inputs)
908 `(alist-delete "python-waf" ,native-inputs)))))
fbcfa730 909 ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
0d6a8339 910 (license (list license:lgpl2.1 license:mpl1.1))))
fbcfa730
EB
911
912(define-public python2-pygtk
913 (package
914 (name "python2-pygtk")
915 (version "2.24.0")
916 (source
917 (origin
918 (method url-fetch)
919 (uri (string-append "http://ftp.gnome.org/pub/GNOME/sources"
920 "/pygtk/" (version-major+minor version)
921 "/pygtk-" version ".tar.bz2"))
922 (sha256
923 (base32
924 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
925 (build-system gnu-build-system)
926 (native-inputs
927 `(("pkg-config" ,pkg-config)))
928 (inputs
929 `(("python" ,python-2)
930 ("glib" ,glib)))
931 (propagated-inputs
7ca0dbc3 932 `(("python-pycairo" ,python2-pycairo) ;loaded at runtime
fbcfa730
EB
933 ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
934 ("gtk+" ,gtk+-2)))
935 (arguments
936 `(#:tests? #f
937 #:phases (alist-cons-after
cb4d3d86
RW
938 'configure 'fix-codegen
939 (lambda* (#:key inputs #:allow-other-keys)
940 (substitute* "pygtk-codegen-2.0"
941 (("^prefix=.*$")
942 (string-append
943 "prefix="
944 (assoc-ref inputs "python-pygobject") "\n"))))
945 (alist-cons-after
946 'install 'install-pth
947 (lambda* (#:key inputs outputs #:allow-other-keys)
948 ;; pygtk's modules are stored in a subdirectory of python's
949 ;; site-packages directory. Add a .pth file so that python
950 ;; will add that subdirectory to its module search path.
951 (let* ((out (assoc-ref outputs "out"))
952 (site (string-append out "/lib/python"
953 ,(version-major+minor
954 (package-version python-2))
955 "/site-packages")))
956 (call-with-output-file (string-append site "/pygtk.pth")
957 (lambda (port)
958 (format port "gtk-2.0~%")))))
959 %standard-phases))))
fbcfa730
EB
960 (home-page "http://www.pygtk.org/")
961 (synopsis "Python bindings for GTK+")
962 (description
963 "PyGTK allows you to write full featured GTK programs in Python. It is
964targetted at GTK 2.x, and can be used in conjunction with gnome-python to
965write GNOME applications.")
966 (license license:lgpl2.1+)))
136770c9
PW
967
968(define-public girara
969 (package
970 (name "girara")
90ab5dd2 971 (version "0.2.4")
136770c9
PW
972 (source (origin
973 (method url-fetch)
974 (uri
975 (string-append "https://pwmt.org/projects/girara/download/girara-"
976 version ".tar.gz"))
977 (sha256
978 (base32
90ab5dd2 979 "0pnfdsg435b5vc4x8l9pgm77aj7ram1q0bzrp9g4a3bh1r64xq1f"))))
136770c9
PW
980 (native-inputs `(("pkg-config" ,pkg-config)
981 ("gettext" ,gnu-gettext)))
982 (inputs `(("gtk+" ,gtk+)
983 ("check" ,check)))
984 (arguments
985 `(#:make-flags
986 `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
987 "COLOR=0" "CC=gcc")
988 #:test-target "test"
989 #:tests? #f ; Tests fail with "Gtk cannot open display:"
990 #:phases
991 (alist-delete 'configure %standard-phases)))
992 (build-system gnu-build-system)
993 (home-page "https://pwmt.org/projects/girara/")
994 (synopsis "Library for minimalistic gtk+3 user interfaces")
995 (description "Girara is a library that implements a user interface that
996focuses on simplicity and minimalism. Currently based on GTK+, a
997cross-platform widget toolkit, it provides an interface that focuses on three
998main components: a so-called view widget that represents the actual
999application, an input bar that is used to execute commands of the
1000application and the status bar which provides the user with current
1001information.")
1002 (license license:zlib)))
3bc45449
AW
1003
1004(define-public gtk-doc
1005 (package
1006 (name "gtk-doc")
1007 (version "1.24")
1008 (source (origin
1009 (method url-fetch)
1010 (uri (string-append "mirror://gnome/sources/" name "/"
1011 (version-major+minor version) "/"
1012 name "-" version ".tar.xz"))
1013 (sha256
1014 (base32
1015 "12xmmcnq4138dlbhmqa45wqza8dky4lf856sp80h6xjwl2g7a85l"))))
1016 (build-system gnu-build-system)
1017 (arguments
1018 `(#:configure-flags
1019 (list (string-append "--with-xml-catalog="
1020 (assoc-ref %build-inputs "docbook-xml")
1021 "/xml/dtd/docbook/catalog.xml"))))
1022 (native-inputs
1023 `(("pkg-config" ,pkg-config)
1024 ("itstool" ,itstool)
1025 ("libxml" ,libxml2)
1026 ("gettext" ,gnu-gettext)
1027 ("bc" ,bc)))
1028 (inputs
1029 `(("perl" ,perl)
1030 ("python" ,python)
1031 ("xsltproc" ,libxslt)
1032 ("dblatex" ,dblatex)
1033 ("docbook-xml" ,docbook-xml-4.3)
1034 ("docbook-xsl" ,docbook-xsl)
1035 ("source-highlight" ,source-highlight)
1036 ("glib" ,glib)))
1037 (home-page "http://www.gtk.org/gtk-doc/")
1038 (synopsis "Documentation generator from C source code")
1039 (description
1040 "GTK-Doc generates API documentation from comments added to C code. It is
1041typically used to document the public API of GTK+ and GNOME libraries, but it
1042can also be used to document application code.")
1043 (license license:gpl2+)))