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