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