gnu: ungoogled-chromium: Update to 78.0.3904.97-0.acaf163.
[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 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
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)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix utils)
44 #:use-module (guix packages)
45 #:use-module (guix download)
46 #:use-module (guix git-download)
47 #:use-module (guix build-system glib-or-gtk)
48 #:use-module (guix build-system gnu)
49 #:use-module (guix build-system meson)
50 #:use-module (guix build-system perl)
51 #:use-module (guix build-system python)
52 #:use-module (guix build-system waf)
53 #:use-module (gnu packages)
54 #:use-module (gnu packages algebra)
55 #:use-module (gnu packages autotools)
56 #:use-module (gnu packages base)
57 #:use-module (gnu packages texinfo)
58 #:use-module (gnu packages check)
59 #:use-module (gnu packages compression)
60 #:use-module (gnu packages docbook)
61 #:use-module (gnu packages enchant)
62 #:use-module (gnu packages fontutils)
63 #:use-module (gnu packages freedesktop)
64 #:use-module (gnu packages fribidi)
65 #:use-module (gnu packages gettext)
66 #:use-module (gnu packages ghostscript)
67 #:use-module (gnu packages gl)
68 #:use-module (gnu packages glib)
69 #:use-module (gnu packages gnome)
70 #:use-module (gnu packages icu4c)
71 #:use-module (gnu packages image)
72 #:use-module (gnu packages libffi)
73 #:use-module (gnu packages linux)
74 #:use-module (gnu packages pdf)
75 #:use-module (gnu packages perl)
76 #:use-module (gnu packages pkg-config)
77 #:use-module (gnu packages pretty-print)
78 #:use-module (gnu packages python)
79 #:use-module (gnu packages python-xyz)
80 #:use-module (gnu packages guile)
81 #:use-module (gnu packages guile-xyz)
82 #:use-module (gnu packages cups)
83 #:use-module (gnu packages xml)
84 #:use-module (gnu packages xorg)
85 #:use-module (gnu packages xdisorg)
86 #:use-module (srfi srfi-1)
87 #:use-module (srfi srfi-26))
88
89 (define-public atk
90 (package
91 (name "atk")
92 (version "2.32.0")
93 (source (origin
94 (method url-fetch)
95 (uri (string-append "mirror://gnome/sources/" name "/"
96 (version-major+minor version) "/"
97 name "-" version ".tar.xz"))
98 (sha256
99 (base32
100 "1k4i817bd2w5b9z394f2yyx95591l2746wa40am0vvz4gzdgwhfb"))))
101 (build-system meson-build-system)
102 (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
103 (native-inputs
104 `(("pkg-config" ,pkg-config)
105 ("gettext" ,gettext-minimal)
106 ("glib" ,glib "bin") ; glib-mkenums, etc.
107 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
108 (synopsis "GNOME accessibility toolkit")
109 (description
110 "ATK provides the set of accessibility interfaces that are implemented
111 by other toolkits and applications. Using the ATK interfaces, accessibility
112 tools have full access to view and control running applications.")
113 (license license:lgpl2.0+)
114 (home-page "https://developer.gnome.org/atk/")))
115
116 (define-public cairo
117 (package
118 (name "cairo")
119 (version "1.16.0")
120 (source (origin
121 (method url-fetch)
122 (uri (string-append "https://cairographics.org/releases/cairo-"
123 version ".tar.xz"))
124 (sha256
125 (base32
126 "0c930mk5xr2bshbdljv005j3j8zr47gqmkry3q6qgvqky6rjjysy"))))
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)
140 ("poppler" ,poppler)
141 ("xorgproto" ,xorgproto)
142 ("zlib" ,zlib)))
143 (native-inputs
144 `(("pkg-config" ,pkg-config)
145 ("python" ,python-wrapper)))
146 (arguments
147 `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
148 #:configure-flags '("--enable-tee"))) ; needed for GNU Icecat
149 (synopsis "2D graphics library")
150 (description
151 "Cairo is a 2D graphics library with support for multiple output devices.
152 Currently supported output targets include the X Window System (via both
153 Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
154 output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
155
156 Cairo is designed to produce consistent output on all output media while
157 taking advantage of display hardware acceleration when available
158 eg. through the X Render Extension).
159
160 The cairo API provides operations similar to the drawing operators of
161 PostScript and PDF. Operations in cairo including stroking and filling cubic
162 Bézier splines, transforming and compositing translucent images, and
163 antialiased text rendering. All drawing operations can be transformed by any
164 affine transformation (scale, rotation, shear, etc.).")
165 (license license:lgpl2.1) ; or Mozilla Public License 1.1
166 (home-page "https://cairographics.org/")))
167
168 (define-public cairo-xcb
169 (package
170 (inherit cairo)
171 (name "cairo-xcb")
172 (inputs
173 `(("mesa" ,mesa)
174 ,@(package-inputs cairo)))
175 (arguments
176 `(#:tests? #f
177 #:configure-flags
178 '("--enable-xlib-xcb" "--enable-gl" "--enable-egl")))
179 (synopsis "2D graphics library (with X11 support)")))
180
181 (define-public harfbuzz
182 (package
183 (name "harfbuzz")
184 (version "2.5.3")
185 (source (origin
186 (method url-fetch)
187 (uri (string-append "https://www.freedesktop.org/software/"
188 "harfbuzz/release/harfbuzz-"
189 version ".tar.xz"))
190 (sha256
191 (base32
192 "0p45xk5bblsw8lfs7y7z80b4rvda9f2hlpr28flkrfmpjz3hvl7y"))))
193 (build-system gnu-build-system)
194 (outputs '("out"
195 "bin")) ; 160K, only hb-view depend on cairo
196 (inputs
197 `(("cairo" ,cairo)))
198 (propagated-inputs
199 ;; There are all in the Requires or Requires.private field of '.pc'.
200 `(("glib" ,glib)
201 ("graphite2" ,graphite2)
202 ("icu4c" ,icu4c)))
203 (native-inputs
204 `(("glib:bin" ,glib "bin") ;for glib-mkenums
205 ("gobject-introspection" ,gobject-introspection)
206 ("pkg-config" ,pkg-config)
207 ("python" ,python-wrapper)
208 ("which" ,which)))
209 (arguments
210 `(#:configure-flags `("--with-graphite2"
211 "--with-gobject"
212 ,(string-append
213 "--bindir=" (assoc-ref %outputs "bin") "/bin"))))
214 (synopsis "OpenType text shaping engine")
215 (description
216 "HarfBuzz is an OpenType text shaping engine.")
217 (license (license:x11-style "file://COPYING"
218 "See 'COPYING' in the distribution."))
219 (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
220
221 (define-public pango
222 (package
223 (name "pango")
224 (version "1.42.4")
225 (source (origin
226 (method url-fetch)
227 (uri (string-append "mirror://gnome/sources/pango/"
228 (version-major+minor version) "/"
229 name "-" version ".tar.xz"))
230 (sha256
231 (base32
232 "17bwb7dgbncrfsmchlib03k9n3xaalirb39g3yb43gg8cg6p8aqx"))))
233 (build-system gnu-build-system)
234 (propagated-inputs
235 ;; These are all in Requires or Requires.private of the '.pc' files.
236 `(("cairo" ,cairo)
237 ("fribidi" ,fribidi)
238 ("fontconfig" ,fontconfig)
239 ("freetype" ,freetype)
240 ("glib" ,glib)
241 ("harfbuzz" ,harfbuzz)))
242 (inputs
243 `(("zlib" ,zlib)
244
245 ;; Some packages, such as Openbox, expect Pango to be built with the
246 ;; optional libxft support.
247 ("libxft" ,libxft)))
248 (native-inputs
249 `(("pkg-config" ,pkg-config)
250 ("glib" ,glib "bin") ; glib-mkenums, etc.
251 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
252 (synopsis "GNOME text and font handling library")
253 (description
254 "Pango is the core text and font handling library used in GNOME
255 applications. It has extensive support for the different writing systems
256 used throughout the world.")
257 (license license:lgpl2.0+)
258 (home-page "https://developer.gnome.org/pango/")))
259
260 (define-public pangox-compat
261 (package
262 (name "pangox-compat")
263 (version "0.0.2")
264 (source (origin
265 (method url-fetch)
266 (uri (string-append "mirror://gnome/sources/" name "/"
267 (version-major+minor version) "/"
268 name "-" version ".tar.xz"))
269 (sha256
270 (base32
271 "0ip0ziys6mrqqmz4n71ays0kf5cs1xflj1gfpvs4fgy2nsrr482m"))))
272 (build-system gnu-build-system)
273 (inputs
274 `(("glib" ,glib)
275 ("pango" ,pango)))
276 (native-inputs
277 `(("intltool" ,intltool)
278 ("pkg-config" ,pkg-config)))
279 (home-page "https://developer.gnome.org/pango")
280 (synopsis "Obsolete pango functions")
281 (description "Pangox was a X backend to pango. It is now obsolete and no
282 longer provided by recent pango releases. pangox-compat provides the
283 functions which were removed.")
284 (license license:lgpl2.0+)))
285
286 (define-public ganv
287 (package
288 (name "ganv")
289 (version "1.4.2")
290 (source (origin
291 (method url-fetch)
292 (uri (string-append "https://download.drobilla.net/ganv-"
293 version ".tar.bz2"))
294 (sha256
295 (base32
296 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
297 (build-system waf-build-system)
298 (arguments
299 `(#:phases
300 (modify-phases %standard-phases
301 (add-before 'configure 'set-flags
302 (lambda* (#:key outputs #:allow-other-keys)
303 ;; Allow 'bin/ganv_bench' to find libganv-1.so.
304 (setenv "LDFLAGS"
305 (string-append "-Wl,-rpath="
306 (assoc-ref outputs "out") "/lib"))
307 #t)))
308 #:python ,python-2 ;XXX: The bundled waf fails with Python 3.7.0.
309 #:tests? #f)) ; no check target
310 (inputs
311 `(("gtk" ,gtk+-2)
312 ("gtkmm" ,gtkmm-2)))
313 (native-inputs
314 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
315 ("pkg-config" ,pkg-config)))
316 (home-page "https://drobilla.net/software/ganv/")
317 (synopsis "GTK+ widget for interactive graph-like environments")
318 (description
319 "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
320 graph-like environments, e.g. modular synths or finite state machine
321 diagrams.")
322 (license license:gpl3+)))
323
324 (define-public ganv-devel
325 (let ((commit "12f7d6b0438c94dd87f773a92eee3453d971846e")
326 (revision "1"))
327 (package
328 (inherit ganv)
329 (name "ganv")
330 (version (string-append "1.5.4-" revision "."
331 (string-take commit 9)))
332 (source (origin
333 (method git-fetch)
334 (uri (git-reference
335 (url "https://git.drobilla.net/ganv.git")
336 (commit commit)))
337 (file-name (git-file-name name version))
338 (sha256
339 (base32
340 "1cr8w02lr6bk9mkxa12j3imq721b2an2yn4bj5wnwmpm91ddn2gi")))))))
341
342 (define-public gtksourceview-2
343 (package
344 (name "gtksourceview")
345 (version "2.10.5") ; This is the last version which builds against gtk+2
346 (source (origin
347 (method url-fetch)
348 (uri (string-append "mirror://gnome/sources/" name "/"
349 (version-major+minor version) "/"
350 name "-" version ".tar.bz2"))
351 (sha256
352 (base32
353 "07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5"))
354 (patches
355 (search-patches
356 "gtksourceview-2-add-default-directory.patch"))))
357 (build-system gnu-build-system)
358 (native-inputs
359 `(("intltool" ,intltool)
360 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
361 ("pkg-config" ,pkg-config)
362 ;; For testing.
363 ("xorg-server" ,xorg-server)
364 ("shared-mime-info" ,shared-mime-info)))
365 (propagated-inputs
366 ;; As per the pkg-config file.
367 `(("gtk" ,gtk+-2)
368 ("libxml2" ,libxml2)))
369 (arguments
370 `(#:phases
371 ;; Unfortunately, some of the tests in "make check" are highly dependent
372 ;; on the environment therefore, some black magic is required.
373 (modify-phases %standard-phases
374 (add-before 'check 'start-xserver
375 (lambda* (#:key inputs #:allow-other-keys)
376 (let ((xorg-server (assoc-ref inputs "xorg-server"))
377 (mime (assoc-ref inputs "shared-mime-info")))
378
379 ;; There must be a running X server and make check doesn't start one.
380 ;; Therefore we must do it.
381 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
382 (setenv "DISPLAY" ":1")
383
384 ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
385 (system "ln -s gtksourceview gtksourceview-2.0")
386 (setenv "XDG_DATA_HOME" (getcwd))
387
388 ;; Finally, the mimetypes must be available.
389 (setenv "XDG_DATA_DIRS" (string-append mime "/share/")))
390 #t)))))
391 (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
392 (description
393 "GtkSourceView is a portable C library that extends the standard GTK+
394 framework for multiline text editing with support for configurable syntax
395 highlighting, unlimited undo/redo, search and replace, a completion framework,
396 printing and other features typical of a source code editor.")
397 (license license:lgpl2.0+)
398 (home-page "https://developer.gnome.org/gtksourceview/")))
399
400 (define-public gtksourceview
401 (package
402 (name "gtksourceview")
403 (version "4.2.0")
404 (source (origin
405 (method url-fetch)
406 (uri (string-append "mirror://gnome/sources/gtksourceview/"
407 (version-major+minor version) "/"
408 "gtksourceview-" version ".tar.xz"))
409 (sha256
410 (base32
411 "0xgnjj7jd56wbl99s76sa1vjq9bkz4mdsxwgwlcphg689liyncf4"))))
412 (build-system gnu-build-system)
413 (arguments
414 '(#:phases
415 (modify-phases %standard-phases
416 (add-before
417 'check 'pre-check
418 (lambda* (#:key inputs #:allow-other-keys)
419 (let ((xorg-server (assoc-ref inputs "xorg-server")))
420 ;; Tests require a running X server.
421 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
422 (setenv "DISPLAY" ":1")
423 ;; For the missing /etc/machine-id.
424 (setenv "DBUS_FATAL_WARNINGS" "0")
425 #t))))))
426 (native-inputs
427 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
428 ("intltool" ,intltool)
429 ("itstool" ,itstool)
430 ("gobject-introspection" ,gobject-introspection)
431 ("pkg-config" ,pkg-config)
432 ("vala" ,vala)
433 ;; For testing.
434 ("xorg-server" ,xorg-server)
435 ("shared-mime-info" ,shared-mime-info)))
436 (propagated-inputs
437 ;; gtksourceview-3.0.pc refers to all these.
438 `(("glib" ,glib)
439 ("gtk+" ,gtk+)
440 ("libxml2" ,libxml2)))
441 (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
442 (synopsis "GNOME source code widget")
443 (description "GtkSourceView is a text widget that extends the standard
444 GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax
445 highlighting and other features typical of a source code editor.")
446 (license license:lgpl2.1+)))
447
448 (define-public gtksourceview-3
449 (package (inherit gtksourceview)
450 (name "gtksourceview")
451 (version "3.24.10")
452 (source (origin
453 (method url-fetch)
454 (uri (string-append "mirror://gnome/sources/" name "/"
455 (version-major+minor version) "/"
456 name "-" version ".tar.xz"))
457 (sha256
458 (base32
459 "16ym7jwiki4s1pilwr4incx0yg7ll94f1cajrnpndkxxs36hcm5b"))))))
460
461 (define-public gdk-pixbuf
462 (package
463 (name "gdk-pixbuf")
464 (version "2.38.1")
465 (source (origin
466 (method url-fetch)
467 (uri (string-append "mirror://gnome/sources/" name "/"
468 (version-major+minor version) "/"
469 name "-" version ".tar.xz"))
470 (sha256
471 (base32
472 "0fmbjgjcyym3qg46f64qgl7icdm4ii77flyc1mhk244rp8vgi7zi"))))
473 (build-system meson-build-system)
474 (arguments
475 `(#:configure-flags '("-Dinstalled_tests=false")
476 #:phases
477 (modify-phases %standard-phases
478 (add-after
479 'unpack 'disable-failing-tests
480 (lambda _
481 (substitute* "tests/meson.build"
482 ;; XXX FIXME: This test fails on armhf machines with:
483 ;; SKIP Not enough memory to load bitmap image
484 ;; ERROR: cve-2015-4491 - too few tests run (expected 4, got 2)
485 ((".*'cve-2015-4491'.*") "")
486 ;; XXX FIXME: This test fails with:
487 ;; ERROR:pixbuf-jpeg.c:74:test_type9_rotation_exif_tag:
488 ;; assertion failed (error == NULL): Data differ
489 ;; (gdk-pixbuf-error-quark, 0)
490 ((".*'pixbuf-jpeg'.*") ""))
491 #t))
492 ;; The slow tests take longer than the specified timeout.
493 ,@(if (any (cute string=? <> (%current-system))
494 '("armhf-linux" "aarch64-linux"))
495 '((replace 'check
496 (lambda _
497 (invoke "meson" "test" "--timeout-multiplier" "5"))))
498 '())
499 (add-before 'configure 'aid-install-script
500 (lambda* (#:key outputs #:allow-other-keys)
501 ;; "build-aux/post-install.sh" invokes `gdk-pixbuf-query-loaders`
502 ;; for updating loader.cache, but it's not on PATH. Make it use
503 ;; the one we're installing. XXX: Won't work when cross-compiling.
504 (substitute* "build-aux/post-install.sh"
505 (("gdk-pixbuf-query-loaders" match)
506 (string-append (assoc-ref outputs "out") "/bin/" match)))
507 #t)))))
508 (propagated-inputs
509 `(;; Required by gdk-pixbuf-2.0.pc
510 ("glib" ,glib)
511 ("libpng" ,libpng)
512 ;; Used for testing and required at runtime.
513 ("shared-mime-info" ,shared-mime-info)))
514 (inputs
515 `(("libjpeg" ,libjpeg)
516 ("libtiff" ,libtiff)
517 ("libx11" ,libx11)))
518 (native-inputs
519 `(("pkg-config" ,pkg-config)
520 ("gettext" ,gettext-minimal)
521 ("glib" ,glib "bin") ; glib-mkenums, etc.
522 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
523 (synopsis "GNOME image loading and manipulation library")
524 (description
525 "GdkPixbuf is a library for image loading and manipulation developed
526 in the GNOME project.")
527 (license license:lgpl2.0+)
528 (home-page "https://developer.gnome.org/gdk-pixbuf/")))
529
530 ;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
531 ;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the
532 ;; closure size.
533 (define-public gdk-pixbuf+svg
534 (package (inherit gdk-pixbuf)
535 (name "gdk-pixbuf+svg")
536 (inputs
537 `(("librsvg" ,librsvg)
538 ,@(package-inputs gdk-pixbuf)))
539 (arguments
540 '(#:configure-flags '("-Dinstalled-tests=false")
541 #:tests? #f ; tested by the gdk-pixbuf package already
542 #:phases
543 (modify-phases %standard-phases
544 (add-after 'install 'register-svg-loader
545 (lambda* (#:key inputs outputs #:allow-other-keys)
546 (let* ((out (assoc-ref outputs "out"))
547 (librsvg (assoc-ref inputs "librsvg"))
548 (loaders
549 (append
550 (find-files out "^libpixbufloader-.*\\.so$")
551 (find-files librsvg "^libpixbufloader-.*\\.so$")))
552 (gdk-pixbuf-query-loaders
553 (string-append out "/bin/gdk-pixbuf-query-loaders")))
554 (apply invoke
555 gdk-pixbuf-query-loaders
556 "--update-cache"
557 loaders)))))))
558 (synopsis
559 "GNOME image loading and manipulation library, with SVG support")))
560
561 (define-public at-spi2-core
562 (package
563 (name "at-spi2-core")
564 (version "2.32.1")
565 (source (origin
566 (method url-fetch)
567 (uri (string-append "mirror://gnome/sources/" name "/"
568 (version-major+minor version) "/"
569 name "-" version ".tar.xz"))
570 (sha256
571 (base32
572 "0lqd7gsl471v6538iighkvb21gjglcb9pklvas32rjpsxcvsjaiw"))))
573 (build-system meson-build-system)
574 (outputs '("out" "doc"))
575 (arguments
576 '(#:configure-flags
577 (list "-Ddocs=true")
578 #:phases
579 (modify-phases %standard-phases
580 (add-after 'unpack 'set-documentation-path
581 (lambda* (#:key outputs #:allow-other-keys)
582 ;; Ensure that the cross-references point to the "doc" output.
583 (substitute* "doc/libatspi/meson.build"
584 (("docpath =.*")
585 (string-append "docpath = '" (assoc-ref outputs "doc") "/share/gtk-doc/html'\n")))
586 #t))
587 (add-before 'install 'prepare-doc-directory
588 (lambda* (#:key outputs #:allow-other-keys)
589 (mkdir-p (string-append (assoc-ref outputs "doc") "/share"))
590 #t))
591 (add-after 'install 'move-documentation
592 (lambda* (#:key outputs #:allow-other-keys)
593 (let ((out (assoc-ref outputs "out"))
594 (doc (assoc-ref outputs "doc")))
595 (copy-recursively
596 (string-append out "/share/gtk-doc")
597 (string-append doc "/share/gtk-doc"))
598 (delete-file-recursively
599 (string-append out "/share/gtk-doc")))
600 #t))
601 (add-after 'install 'check
602 (lambda _
603 (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
604 ;; Run test-suite under a dbus session.
605 (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
606 (string-append %output "/share"))
607 ;; Don't fail on missing '/etc/machine-id'.
608 (setenv "DBUS_FATAL_WARNINGS" "0") ;
609 (invoke "dbus-launch" "ninja" "test")))
610 (delete 'check))))
611 (propagated-inputs
612 ;; atspi-2.pc refers to all these.
613 `(("dbus" ,dbus)
614 ("glib" ,glib)
615 ("libxi" ,libxi)
616 ("libxtst" ,libxtst)))
617 (native-inputs
618 `(("gobject-introspection" ,gobject-introspection)
619 ("gtk-doc" ,gtk-doc)
620 ("glib" ,glib "bin")
621 ("intltool" ,intltool)
622 ("pkg-config" ,pkg-config)))
623 (synopsis "Assistive Technology Service Provider Interface, core components")
624 (description
625 "The Assistive Technology Service Provider Interface, core components,
626 is part of the GNOME accessibility project.")
627 (license license:lgpl2.0+)
628 (home-page "https://projects.gnome.org/accessibility/")))
629
630 (define-public at-spi2-atk
631 (package
632 (name "at-spi2-atk")
633 (version "2.32.0")
634 (source (origin
635 (method url-fetch)
636 (uri (string-append "mirror://gnome/sources/" name "/"
637 (version-major+minor version) "/"
638 name "-" version ".tar.xz"))
639 (sha256
640 (base32
641 "0p54wx6f6q7s8w0b1j0sgw87pikllp79q5g3lfiwqazs779ycl8b"))))
642 (build-system meson-build-system)
643 (arguments
644 '(#:phases
645 (modify-phases %standard-phases
646 (replace 'check
647 ;; Run test-suite under a dbus session.
648 (lambda _
649 (setenv "DBUS_FATAL_WARNINGS" "0")
650 (invoke "dbus-launch" "meson" "test"))))))
651 (propagated-inputs
652 `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
653 (inputs
654 `(("atk" ,atk)))
655 (native-inputs
656 `(("pkg-config" ,pkg-config)
657 ;; For tests.
658 ("dbus" ,dbus)
659 ("libxml2" ,libxml2)))
660 (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
661 (description
662 "The Assistive Technology Service Provider Interface
663 is part of the GNOME accessibility project.")
664 (license license:lgpl2.0+)
665 (home-page "https://projects.gnome.org/accessibility/")))
666
667 (define-public gtk+-2
668 (package
669 (name "gtk+")
670 (version "2.24.32")
671 (source (origin
672 (method url-fetch)
673 (uri (string-append "mirror://gnome/sources/" name "/"
674 (version-major+minor version) "/"
675 name "-" version ".tar.xz"))
676 (sha256
677 (base32
678 "0bjq7ja9gwcv6n5q4qkvdjjx40wsdiikksz1zqxvxsm5vlyskj5n"))
679 (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
680 "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
681 "gtk2-theme-paths.patch"))))
682 (build-system gnu-build-system)
683 (outputs '("out" "doc"))
684 (propagated-inputs
685 `(("atk" ,atk)
686 ("gdk-pixbuf" ,gdk-pixbuf+svg)
687 ("pango" ,pango)))
688 (inputs
689 `(("cups" ,cups)
690 ("libxcomposite" ,libxcomposite)
691 ("libxcursor" ,libxcursor)
692 ("libxdamage" ,libxdamage)
693 ("libxi" ,libxi)
694 ("libxinerama" ,libxinerama)
695 ("libxrandr" ,libxrandr)))
696 (native-inputs
697 `(("perl" ,perl)
698 ("gettext" ,gettext-minimal)
699 ("glib" ,glib "bin")
700 ("gobject-introspection" ,gobject-introspection)
701 ("pkg-config" ,pkg-config)
702 ("python-wrapper" ,python-wrapper)))
703 (arguments
704 `(#:configure-flags
705 (list "--with-xinput=yes"
706 (string-append "--with-html-dir="
707 (assoc-ref %outputs "doc")
708 "/share/gtk-doc/html"))
709 #:phases
710 (alist-cons-before
711 'configure 'disable-tests
712 (lambda _
713 ;; FIXME: re-enable tests requiring an X server
714 (substitute* "gtk/Makefile.in"
715 (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
716 #t)
717 %standard-phases)))
718 (native-search-paths
719 (list (search-path-specification
720 (variable "GUIX_GTK2_PATH")
721 (files '("lib/gtk-2.0")))))
722 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
723 (description
724 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
725 graphical user interfaces. Offering a complete set of widgets, GTK+ is
726 suitable for projects ranging from small one-off tools to complete
727 application suites.")
728 (license license:lgpl2.0+)
729 (home-page "https://www.gtk.org/")))
730
731 (define-public gtk+
732 (package (inherit gtk+-2)
733 (name "gtk+")
734 (version "3.24.10")
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 "00qvq1r96ikdalv7xzgng1kad9i0rcahqk01gwhxl3xrw83z3a1m"))
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.42.0")
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 "0mmzxp3wniaafkxr30sb22mq9x44xckb5d60h1bl99lkzxks0vfa"))))
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.28.0")
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 "0fnxrspxkhhbrjphqrpvl3zjm66n50s4cywrrrwkhbflgy8zqk2c"))))
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.24.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 "1hxdnhavjyvbcpxhd5z17l9fj4182028s66lc0s16qqqrldhjwbd"))))
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 `(#:disallowed-references (,xorg-server-for-tests)
1118 #:phases (modify-phases %standard-phases
1119 (add-before 'check 'run-xvfb
1120 (lambda* (#:key inputs #:allow-other-keys)
1121 (let ((xorg-server (assoc-ref inputs "xorg-server")))
1122 ;; Tests such as 'object_move/test' require a running
1123 ;; X server.
1124 (system (string-append xorg-server "/bin/Xvfb :1 &"))
1125 (setenv "DISPLAY" ":1")
1126 ;; Don't fail because of the missing /etc/machine-id.
1127 (setenv "DBUS_FATAL_WARNINGS" "0")
1128 #t))))))
1129 (home-page "https://gtkmm.org/")
1130 (synopsis
1131 "C++ interface to the GTK+ graphical user interface library")
1132 (description
1133 "gtkmm is the official C++ interface for the popular GUI library GTK+.
1134 Highlights include typesafe callbacks, and a comprehensive set of widgets that
1135 are easily extensible via inheritance. You can create user interfaces either
1136 in code or with the Glade User Interface designer, using libglademm. There's
1137 extensive documentation, including API reference and a tutorial.")
1138 (license license:lgpl2.1+)))
1139
1140
1141 (define-public gtkmm-2
1142 (package (inherit gtkmm)
1143 (name "gtkmm")
1144 (version "2.24.5")
1145 (source (origin
1146 (method url-fetch)
1147 (uri (string-append "mirror://gnome/sources/" name "/"
1148 (version-major+minor version) "/"
1149 name "-" version ".tar.xz"))
1150 (sha256
1151 (base32
1152 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
1153 (arguments '())
1154 (native-inputs `(("pkg-config" ,pkg-config)))
1155 (propagated-inputs
1156 `(("pangomm" ,pangomm)
1157 ("cairomm" ,cairomm)
1158 ("atkmm" ,atkmm)
1159 ("gtk+" ,gtk+-2)
1160 ("glibmm" ,glibmm)))))
1161
1162 (define-public gtksourceviewmm
1163 (package
1164 (name "gtksourceviewmm")
1165 (version "3.18.0")
1166 (source (origin
1167 (method url-fetch)
1168 (uri (string-append "mirror://gnome/sources/" name "/"
1169 (version-major+minor version) "/"
1170 name "-" version ".tar.xz"))
1171 (sha256
1172 (base32 "0fgvmhm4h4qmxig87qvangs6ijw53mi40siz7pixlxbrsgiil22i"))))
1173 (build-system gnu-build-system)
1174 (native-inputs
1175 `(("pkg-config" ,pkg-config)))
1176 (propagated-inputs
1177 ;; In 'Requires' of gtksourceviewmm-3.0.pc.
1178 `(("glibmm" ,glibmm)
1179 ("gtkmm" ,gtkmm)
1180 ("gtksourceview" ,gtksourceview-3)))
1181 (synopsis "C++ interface to the GTK+ 'GtkTextView' widget")
1182 (description
1183 "gtksourceviewmm is a portable C++ library that extends the standard GTK+
1184 framework for multiline text editing with support for configurable syntax
1185 highlighting, unlimited undo/redo, search and replace, a completion framework,
1186 printing and other features typical of a source code editor.")
1187 (license license:lgpl2.1+)
1188 (home-page "https://developer.gnome.org/gtksourceview/")))
1189
1190 ;;;
1191 ;;; Python bindings.
1192 ;;;
1193
1194 (define-public python-pycairo
1195 (package
1196 (name "python-pycairo")
1197 (version "1.17.1")
1198 (source
1199 (origin
1200 (method url-fetch)
1201 (uri (string-append "https://github.com/pygobject/pycairo/releases/download/v"
1202 version "/pycairo-" version ".tar.gz"))
1203 (sha256
1204 (base32
1205 "165n0g7gp2a0qi8558snvfans17x83jv2lv7bx4vr1rxjbn3a2hg"))))
1206 (build-system python-build-system)
1207 (native-inputs
1208 `(("pkg-config" ,pkg-config)
1209 ("python-pytest" ,python-pytest)))
1210 (propagated-inputs ;pycairo.pc references cairo
1211 `(("cairo" ,cairo)))
1212 (home-page "https://cairographics.org/pycairo/")
1213 (synopsis "Python bindings for cairo")
1214 (description
1215 "Pycairo is a set of Python bindings for the Cairo graphics library.")
1216 (license license:lgpl3+)
1217 (properties `((python2-variant . ,(delay python2-pycairo))))))
1218
1219 (define-public python2-pycairo
1220 (let ((pycairo (package-with-python2
1221 (strip-python2-variant python-pycairo))))
1222 (package
1223 (inherit pycairo)
1224 (propagated-inputs
1225 `(("python2-funcsigs" ,python2-funcsigs)
1226 ,@(package-propagated-inputs pycairo)))
1227 ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
1228 (license (list license:lgpl2.1 license:mpl1.1)))))
1229
1230 (define-public python2-pygtk
1231 (package
1232 (name "python2-pygtk")
1233 (version "2.24.0")
1234 (source
1235 (origin
1236 (method url-fetch)
1237 (uri (string-append "mirror://gnome/sources"
1238 "/pygtk/" (version-major+minor version)
1239 "/pygtk-" version ".tar.bz2"))
1240 (sha256
1241 (base32
1242 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
1243 (build-system gnu-build-system)
1244 (outputs '("out"
1245 "doc")) ;13 MiB of gtk-doc HTML
1246 (native-inputs
1247 `(("pkg-config" ,pkg-config)))
1248 (inputs
1249 `(("python" ,python-2)
1250 ("libglade" ,libglade)
1251 ("glib" ,glib)))
1252 (propagated-inputs
1253 `(("python-pycairo" ,python2-pycairo) ;loaded at runtime
1254 ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
1255 ("gtk+" ,gtk+-2)))
1256 (arguments
1257 `(#:tests? #f
1258 #:phases (modify-phases %standard-phases
1259 (add-before 'configure 'set-gtk-doc-directory
1260 (lambda* (#:key outputs #:allow-other-keys)
1261 ;; Install documentation to "doc".
1262 (let ((doc (assoc-ref outputs "doc")))
1263 (substitute* "docs/Makefile.in"
1264 (("TARGET_DIR = \\$\\(datadir\\)")
1265 (string-append "TARGET_DIR = " doc))))))
1266 (add-after 'configure 'fix-codegen
1267 (lambda* (#:key inputs #:allow-other-keys)
1268 (substitute* "pygtk-codegen-2.0"
1269 (("^prefix=.*$")
1270 (string-append
1271 "prefix="
1272 (assoc-ref inputs "python-pygobject") "\n")))))
1273 (add-after 'install 'install-pth
1274 (lambda* (#:key inputs outputs #:allow-other-keys)
1275 ;; pygtk's modules are stored in a subdirectory of
1276 ;; python's site-packages directory. Add a .pth file so
1277 ;; that python will add that subdirectory to its module
1278 ;; search path.
1279 (let* ((out (assoc-ref outputs "out"))
1280 (site (string-append out "/lib/python"
1281 ,(version-major+minor
1282 (package-version python-2))
1283 "/site-packages")))
1284 (call-with-output-file (string-append site "/pygtk.pth")
1285 (lambda (port)
1286 (format port "gtk-2.0~%")))))))))
1287 (home-page "http://www.pygtk.org/")
1288 (synopsis "Python bindings for GTK+")
1289 (description
1290 "PyGTK allows you to write full featured GTK programs in Python. It is
1291 targeted at GTK 2.x, and can be used in conjunction with gnome-python to
1292 write GNOME applications.")
1293 (license license:lgpl2.1+)))
1294
1295 (define-public perl-cairo
1296 (package
1297 (name "perl-cairo")
1298 (version "1.106")
1299 (source (origin
1300 (method url-fetch)
1301 (uri (string-append
1302 "mirror://cpan/authors/id/X/XA/XAOC/Cairo-"
1303 version ".tar.gz"))
1304 (sha256
1305 (base32
1306 "1i25kks408c54k2zxskvg54l5k3qadzm8n72ffga9jy7ic0h6j76"))))
1307 (build-system perl-build-system)
1308 (native-inputs
1309 `(("perl-extutils-depends" ,perl-extutils-depends)
1310 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1311 (inputs
1312 `(("cairo" ,cairo)))
1313 (home-page "https://metacpan.org/release/Cairo")
1314 (synopsis "Perl interface to the cairo 2d vector graphics library")
1315 (description "Cairo provides Perl bindings for the vector graphics library
1316 cairo. It supports multiple output targets, including PNG, PDF and SVG. Cairo
1317 produces identical output on all those targets.")
1318 (license license:lgpl2.1+)))
1319
1320 (define-public perl-gtk2
1321 (package
1322 (name "perl-gtk2")
1323 (version "1.24993")
1324 (source (origin
1325 (method url-fetch)
1326 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Gtk2-"
1327 version ".tar.gz"))
1328 (sha256
1329 (base32
1330 "0ry9jfvfgdwzalxcvwsgr7plhk3agx7p40l0fqdf3vrf7ds47i29"))))
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 `(("gtk+" ,gtk+-2)))
1337 (propagated-inputs
1338 `(("perl-pango" ,perl-pango)))
1339 (home-page "https://metacpan.org/release/Gtk2")
1340 (synopsis "Perl interface to the 2.x series of the Gimp Toolkit library")
1341 (description "Perl bindings to the 2.x series of the Gtk+ widget set.
1342 This module allows you to write graphical user interfaces in a Perlish and
1343 object-oriented way, freeing you from the casting and memory management in C,
1344 yet remaining very close in spirit to original API.")
1345 (license license:lgpl2.1+)))
1346
1347 (define-public perl-pango
1348 (package
1349 (name "perl-pango")
1350 (version "1.227")
1351 (source (origin
1352 (method url-fetch)
1353 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Pango-"
1354 version ".tar.gz"))
1355 (sha256
1356 (base32
1357 "0wdcidnfnb6nm79fzfs39ivawj3x8m98a147fmcxgv1zvwia9c1l"))))
1358 (build-system perl-build-system)
1359 (native-inputs
1360 `(("perl-extutils-depends" ,perl-extutils-depends)
1361 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1362 (inputs
1363 `(("pango" ,pango)))
1364 (propagated-inputs
1365 `(("perl-cairo" ,perl-cairo)
1366 ("perl-glib" ,perl-glib)))
1367 (home-page "https://metacpan.org/release/Pango")
1368 (synopsis "Layout and render international text")
1369 (description "Pango is a library for laying out and rendering text, with an
1370 emphasis on internationalization. Pango can be used anywhere that text layout
1371 is needed, but using Pango in conjunction with Cairo and/or Gtk2 provides a
1372 complete solution with high quality text handling and graphics rendering.
1373
1374 Dynamically loaded modules handle text layout for particular combinations of
1375 script and font backend. Pango provides a wide selection of modules, including
1376 modules for Hebrew, Arabic, Hangul, Thai, and a number of Indic scripts.
1377 Virtually all of the world's major scripts are supported.
1378
1379 In addition to the low level layout rendering routines, Pango includes
1380 @code{Pango::Layout}, a high level driver for laying out entire blocks of text,
1381 and routines to assist in editing internationalized text.")
1382 (license license:lgpl2.1+)))
1383
1384 (define-public girara
1385 (package
1386 (name "girara")
1387 (version "0.3.2")
1388 (source (origin
1389 (method url-fetch)
1390 (uri
1391 (string-append "https://pwmt.org/projects/girara/download/girara-"
1392 version ".tar.xz"))
1393 (sha256
1394 (base32
1395 "1kc6n1mxjxa7wvwnqy94qfg8l9jvx9qrvrr2kc7m4g0z20x3a00p"))))
1396 (native-inputs `(("pkg-config" ,pkg-config)
1397 ("check" ,check)
1398 ("gettext" ,gettext-minimal)
1399 ("glib:bin" ,glib "bin")
1400 ("xorg-server" ,xorg-server-for-tests)))
1401 ;; Listed in 'Requires.private' of 'girara.pc'.
1402 (propagated-inputs `(("gtk+" ,gtk+)))
1403 (arguments
1404 `(#:phases (modify-phases %standard-phases
1405 (add-before 'check 'start-xserver
1406 ;; Tests require a running X server.
1407 (lambda* (#:key inputs #:allow-other-keys)
1408 (let ((xorg-server (assoc-ref inputs "xorg-server"))
1409 (display ":1"))
1410 (setenv "DISPLAY" display)
1411
1412 ;; On busy machines, tests may take longer than
1413 ;; the default of four seconds.
1414 (setenv "CK_DEFAULT_TIMEOUT" "20")
1415
1416 ;; Don't fail due to missing '/etc/machine-id'.
1417 (setenv "DBUS_FATAL_WARNINGS" "0")
1418 (zero? (system (string-append xorg-server "/bin/Xvfb "
1419 display " &")))))))))
1420 (build-system meson-build-system)
1421 (home-page "https://pwmt.org/projects/girara/")
1422 (synopsis "Library for minimalistic gtk+3 user interfaces")
1423 (description "Girara is a library that implements a user interface that
1424 focuses on simplicity and minimalism. Currently based on GTK+, a
1425 cross-platform widget toolkit, it provides an interface that focuses on three
1426 main components: a so-called view widget that represents the actual
1427 application, an input bar that is used to execute commands of the
1428 application and the status bar which provides the user with current
1429 information.")
1430 (license license:zlib)))
1431
1432 (define-public gtk-doc
1433 (package
1434 (name "gtk-doc")
1435 (version "1.28")
1436 (source (origin
1437 (method url-fetch)
1438 (uri (string-append "mirror://gnome/sources/" name "/"
1439 (version-major+minor version) "/"
1440 name "-" version ".tar.xz"))
1441 (sha256
1442 (base32
1443 "05apmwibkmn1icx05l8aw241lhymcx01zvk5i499cb150bijj7li"))))
1444 (build-system gnu-build-system)
1445 (arguments
1446 `(#:parallel-tests? #f
1447 #:phases
1448 (modify-phases %standard-phases
1449 (add-after 'unpack 'patch-gtk-doc-scan
1450 (lambda* (#:key inputs #:allow-other-keys)
1451 (substitute* "gtk-doc.xsl"
1452 (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
1453 (string-append (assoc-ref inputs "docbook-xsl")
1454 "/xml/xsl/docbook-xsl-"
1455 ,(package-version docbook-xsl)
1456 "/html/chunk.xsl"))
1457 (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml")
1458 (string-append (assoc-ref inputs "docbook-xsl")
1459 "/xml/xsl/docbook-xsl-"
1460 ,(package-version docbook-xsl)
1461 "/common/en.xml")))
1462 #t))
1463 (add-after 'patch-gtk-doc-scan 'patch-test-out
1464 (lambda _
1465 ;; sanity.sh counts the number of status lines. Since our
1466 ;; texlive regenerates the fonts every time and the font
1467 ;; generator metafont outputs a lot of extra lines, this
1468 ;; test would always fail. Disable it for now.
1469 (substitute* "tests/Makefile.in"
1470 (("empty.sh sanity.sh") "empty.sh"))
1471 #t))
1472 (add-before 'build 'set-HOME
1473 (lambda _
1474 ;; FIXME: dblatex with texlive-union does not find the built
1475 ;; metafonts, so it tries to generate them in HOME.
1476 (setenv "HOME" "/tmp")
1477 #t))
1478 (add-before 'configure 'fix-docbook
1479 (lambda* (#:key inputs #:allow-other-keys)
1480 (substitute* "configure"
1481 ;; The configure check is overzealous about making sure that
1482 ;; things are in place -- it uses the xmlcatalog tool to make
1483 ;; sure that docbook-xsl is available, but this tool can only
1484 ;; look in one catalog file, unlike the $XML_CATALOG_FILES
1485 ;; variable that Guix defines. Fool the test by using the
1486 ;; docbook-xsl catalog explicitly and get on with life.
1487 (("\"\\$XML_CATALOG_FILE\" \
1488 \"http://docbook.sourceforge.net/release/xsl/")
1489 (string-append (car (find-files (assoc-ref inputs "docbook-xsl")
1490 "^catalog.xml$"))
1491 " \"http://docbook.sourceforge.net/release/xsl/")))
1492 #t))
1493 (add-after 'install 'wrap-executables
1494 (lambda* (#:key outputs #:allow-other-keys)
1495 (let ((out (assoc-ref outputs "out")))
1496 (for-each (lambda (prog)
1497 (wrap-program prog
1498 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))))
1499 (find-files (string-append out "/bin")))
1500 #t))))
1501 #:configure-flags
1502 (list (string-append "--with-xml-catalog="
1503 (assoc-ref %build-inputs "docbook-xml")
1504 "/xml/dtd/docbook/catalog.xml"))))
1505 (native-inputs
1506 `(("pkg-config" ,pkg-config)
1507 ("itstool" ,itstool)
1508 ("libxml" ,libxml2)
1509 ("gettext" ,gettext-minimal)
1510 ("bc" ,bc)))
1511 (inputs
1512 `(("perl" ,perl)
1513 ("python" ,python)
1514 ("xsltproc" ,libxslt)
1515 ("dblatex" ,dblatex)
1516 ("docbook-xml" ,docbook-xml-4.3)
1517 ("docbook-xsl" ,docbook-xsl)
1518 ("source-highlight" ,source-highlight)
1519 ("glib" ,glib)
1520 ("python-six" ,python-six)))
1521 (home-page "https://www.gtk.org/gtk-doc/")
1522 (synopsis "Documentation generator from C source code")
1523 (description
1524 "GTK-Doc generates API documentation from comments added to C code. It is
1525 typically used to document the public API of GTK+ and GNOME libraries, but it
1526 can also be used to document application code.")
1527 (license license:gpl2+)))
1528
1529 (define-public gtk-engines
1530 (package
1531 (name "gtk-engines")
1532 (version "2.20.2")
1533 (source (origin
1534 (method url-fetch)
1535 (uri (string-append "mirror://gnome/sources/" name "/"
1536 (version-major+minor version) "/"
1537 name "-" version ".tar.bz2"))
1538 (sha256
1539 (base32
1540 "1db65pb0j0mijmswrvpgkdabilqd23x22d95hp5kwxvcramq1dhm"))))
1541 (build-system gnu-build-system)
1542 (arguments
1543 `(#:configure-flags
1544 `("--enable-animation")))
1545 (native-inputs
1546 `(("pkg-config" ,pkg-config)
1547 ("intltool" ,intltool)))
1548 (inputs
1549 ;; Don't propagate GTK+ to reduce "profile pollution".
1550 `(("gtk+" ,gtk+-2))) ; required by gtk-engines-2.pc
1551 (home-page "https://live.gnome.org/GnomeArt")
1552 (synopsis "Theming engines for GTK+ 2.x")
1553 (description
1554 "This package contains the standard GTK+ 2.x theming engines including
1555 Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,
1556 Redmond95 and ThinIce.")
1557 (license (list license:gpl2+ license:lgpl2.1+))))
1558
1559 (define-public murrine
1560 (package
1561 (name "murrine")
1562 (version "0.98.2")
1563 (source (origin
1564 (method url-fetch)
1565 (uri (string-append "mirror://gnome/sources/" name "/"
1566 (version-major+minor version) "/"
1567 name "-" version ".tar.xz"))
1568 (sha256
1569 (base32
1570 "129cs5bqw23i76h3nmc29c9mqkm9460iwc8vkl7hs4xr07h8mip9"))))
1571 (build-system gnu-build-system)
1572 (arguments
1573 `(#:configure-flags
1574 `("--enable-animation"
1575 "--enable-animationrtl")))
1576 (native-inputs
1577 `(("pkg-config" ,pkg-config)
1578 ("intltool" ,intltool)))
1579 (propagated-inputs
1580 `(("gtk+" ,gtk+-2)))
1581 (home-page "https://live.gnome.org/GnomeArt")
1582 (synopsis "Cairo-based theming engine for GTK+ 2.x")
1583 (description
1584 "Murrine is a cairo-based GTK+ theming engine. It is named after the
1585 glass artworks done by Venicians glass blowers.")
1586 (license license:gpl2+)))
1587
1588 (define-public gtkspell3
1589 (package
1590 (name "gtkspell3")
1591 (version "3.0.9")
1592 (source (origin
1593 (method url-fetch)
1594 (uri (string-append "mirror://sourceforge/gtkspell/"
1595 version "/" name "-" version ".tar.xz"))
1596 (sha256
1597 (base32
1598 "09jdicmpipmj4v84gnkqwbmj4lh8v0i6pn967rb9jx4zg2ia9x54"))))
1599 (build-system gnu-build-system)
1600 (native-inputs
1601 `(("intltool" ,intltool)
1602 ("pkg-config" ,pkg-config)
1603 ("vala" ,vala)))
1604 (inputs
1605 `(("gobject-introspection" ,gobject-introspection)
1606 ("gtk+" ,gtk+)
1607 ("pango" ,pango)))
1608 (propagated-inputs
1609 `(("enchant" ,enchant-1.6))) ;gtkspell3-3.0.pc refers to it
1610 (home-page "http://gtkspell.sourceforge.net")
1611 (synopsis "Spell-checking addon for GTK's TextView widget")
1612 (description
1613 "GtkSpell provides word-processor-style highlighting and replacement of
1614 misspelled words in a GtkTextView widget.")
1615 (license license:gpl2+)))
1616
1617 (define-public clipit
1618 (package
1619 (name "clipit")
1620 (version "1.4.4")
1621 (source
1622 (origin
1623 (method git-fetch)
1624 (uri (git-reference
1625 (url "https://github.com/CristianHenzel/ClipIt.git")
1626 (commit (string-append "v" version))))
1627 (file-name (git-file-name name version))
1628 (sha256
1629 (base32 "05xi29v2y0rvb33fmvrz7r9j4l858qj7ngwd7dp4pzpkkaybjln0"))))
1630 (build-system gnu-build-system)
1631 (native-inputs
1632 `(("autoconf" ,autoconf)
1633 ("automake" ,automake)
1634 ("intltool" ,intltool)
1635 ("pkg-config" ,pkg-config)))
1636 (inputs
1637 `(("gtk+" ,gtk+-2)))
1638 (home-page "https://github.com/CristianHenzel/ClipIt")
1639 (synopsis "Lightweight GTK+ clipboard manager")
1640 (description
1641 "ClipIt is a clipboard manager with features such as a history, search
1642 thereof, global hotkeys and clipboard item actions. It was forked from
1643 Parcellite and adds bugfixes and features.")
1644 (license license:gpl2+)))
1645
1646 (define-public graphene
1647 (package
1648 (name "graphene")
1649 (version "1.6.0")
1650 (source (origin
1651 (method url-fetch)
1652 (uri (string-append
1653 "https://github.com/ebassi/graphene/archive/"
1654 version ".tar.gz"))
1655 (file-name (string-append name "-" version ".tar.gz"))
1656 (sha256
1657 (base32 "1zd2daj7y590wnzn4jw0niyc4fnzgxrcl9i7nwhy8b25ks2hz5wq"))))
1658 (build-system gnu-build-system)
1659 (arguments
1660 `(#:configure-flags '("--enable-introspection=yes")))
1661 (native-inputs
1662 `(("autoconf" ,autoconf)
1663 ("which" ,which)
1664 ("pkg-config" ,pkg-config)
1665 ("automake" ,automake)
1666 ("libtool" ,libtool)))
1667 (inputs
1668 `(("python" ,python)
1669 ("python-2" ,python-2)
1670 ("glib" ,glib)
1671 ("gobject-introspection" ,gobject-introspection)))
1672 (home-page "http://ebassi.github.io/graphene")
1673 (synopsis "Thin layer of graphic data types")
1674 (description "This library provides graphic types and their relative API;
1675 it does not deal with windowing system surfaces, drawing, scene graphs, or
1676 input.")
1677 (license license:expat)))
1678
1679 (define-public spread-sheet-widget
1680 (package
1681 (name "spread-sheet-widget")
1682 (version "0.3")
1683 (source
1684 (origin
1685 (method url-fetch)
1686 (uri (string-append "https://alpha.gnu.org/gnu/ssw/"
1687 "spread-sheet-widget-" version ".tar.gz"))
1688 (sha256
1689 (base32 "1h93yyh2by6yrmkwqg38nd5knids05k5nqzcihc1hdwgzg3c4b8y"))))
1690 (build-system gnu-build-system)
1691 (native-inputs
1692 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
1693 ("pkg-config" ,pkg-config)))
1694 ;; In 'Requires' of spread-sheet-widget.pc.
1695 (propagated-inputs
1696 `(("glib" ,glib)
1697 ("gtk+" ,gtk+)))
1698 (home-page "https://www.gnu.org/software/ssw/")
1699 (synopsis "Gtk+ widget for dealing with 2-D tabular data")
1700 (description
1701 "GNU Spread Sheet Widget is a library for Gtk+ which provides a widget for
1702 viewing and manipulating 2 dimensional tabular data in a manner similar to many
1703 popular spread sheet programs.")
1704 (license license:gpl3+)))
1705
1706 (define-public volumeicon
1707 (package
1708 (name "volumeicon")
1709 (version "0.5.1")
1710 (source
1711 (origin
1712 (method url-fetch)
1713 (uri (string-append "http://nullwise.com/files/volumeicon/volumeicon-"
1714 version ".tar.gz"))
1715 (sha256
1716 (base32 "182xl2w8syv6ky2h2bc9imc6ap8pzh0p7rp63hh8nw0xm38c3f14"))))
1717 (build-system gnu-build-system)
1718 (arguments
1719 `(#:configure-flags
1720 (list "--enable-notify"))) ; optional libnotify support
1721 (native-inputs
1722 `(("intltool" ,intltool)
1723 ("pkg-config" ,pkg-config)))
1724 (inputs
1725 `(("alsa-lib" ,alsa-lib)
1726 ("gtk+" ,gtk+)
1727 ("libnotify" ,libnotify)))
1728 (home-page "http://nullwise.com/volumeicon.html")
1729 (synopsis "System tray volume applet")
1730 (description
1731 "Volume Icon is a volume indicator and control applet for @acronym{the
1732 Advanced Linux Sound Architecture, ALSA}. It sits in the system tray,
1733 independent of your desktop environment, and supports global key bindings.")
1734 (license (list license:expat ; src/{bind.c,keybinder.h}
1735 license:isc ; src/alsa_volume_mapping.c
1736 license:gpl3)))) ; the rest & combined work
1737
1738 (define-public yad
1739 (package
1740 (name "yad")
1741 (version "5.0")
1742 (source
1743 (origin
1744 (method git-fetch)
1745 (uri (git-reference
1746 (url "https://github.com/v1cont/yad.git")
1747 (commit (string-append "v" version))))
1748 (file-name (git-file-name name version))
1749 (sha256
1750 (base32 "07rd61hvilsxxrj7lf8c9k0a8glj07s48m7ya8d45030r90g3lvc"))))
1751 (build-system glib-or-gtk-build-system)
1752 (arguments
1753 `(#:configure-flags
1754 ;; Passing --enable-foo will silently disable foo if prerequisite
1755 ;; inputs are missing, not abort the build as one might expect.
1756 ;; ‘--enable-html’ adds a huge webkitgtk dependency. It was never
1757 ;; present in the past and nobody complained.
1758 '("--enable-icon-browser"
1759 "--enable-spell") ; gspell checking support
1760 #:phases
1761 (modify-phases %standard-phases
1762 (add-after 'bootstrap 'intltoolize
1763 (lambda _
1764 (invoke "intltoolize" "--force" "--automake"))))))
1765 (inputs
1766 `(("gspell" ,gspell)
1767 ("gtk+" ,gtk+)))
1768 (native-inputs
1769 `(("autoconf" ,autoconf)
1770 ("automake" ,automake)
1771 ("intltool" ,intltool)
1772 ("pkg-config" ,pkg-config)))
1773 (home-page "https://sourceforge.net/projects/yad-dialog/")
1774 (synopsis "GTK+ dialog boxes for shell scripts")
1775 (description
1776 "This program allows you to display GTK+ dialog boxes from command line or
1777 shell scripts. Example of how to use @code{yad} can be consulted at
1778 @url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.")
1779 (license license:gpl3+)))
1780
1781 (define-public libdbusmenu
1782 (package
1783 (name "libdbusmenu")
1784 (version "16.04.0")
1785 (source
1786 (origin
1787 (method url-fetch)
1788 (uri (string-append "https://launchpad.net/libdbusmenu/"
1789 (version-major+minor version) "/" version
1790 "/+download/libdbusmenu-" version ".tar.gz"))
1791 (sha256
1792 (base32 "12l7z8dhl917iy9h02sxmpclnhkdjryn08r8i4sr8l3lrlm4mk5r"))))
1793 (build-system gnu-build-system)
1794 (arguments
1795 `(#:configure-flags
1796 '("--sysconfdir=/etc"
1797 "--localstatedir=/var"
1798 ;; The shebang of the generated test files should be patched before
1799 ;; enabling tests.
1800 "--disable-tests")
1801 #:make-flags
1802 `(,(string-append "typelibdir=" (assoc-ref %outputs "out")
1803 "/lib/girepository-1.0"))
1804 #:phases
1805 (modify-phases %standard-phases
1806 (add-before 'configure 'set-environment
1807 (lambda _
1808 (setenv "HAVE_VALGRIND_TRUE" "")
1809 (setenv "HAVE_VALGRIND_FALSE" "#")
1810 #t)))))
1811 (inputs
1812 `(("glib" ,glib)
1813 ("gtk+" ,gtk+)
1814 ("gtk+-2" ,gtk+-2)))
1815 (native-inputs
1816 `(("glib:bin" ,glib "bin")
1817 ("gnome-doc-utils" ,gnome-doc-utils)
1818 ("gobject-introspection" ,gobject-introspection)
1819 ("intltool" ,intltool)
1820 ("json-glib" ,json-glib)
1821 ("pkg-config" ,pkg-config)
1822 ("python" ,python-2)
1823 ("vala" ,vala)))
1824 (home-page "https://launchpad.net/libdbusmenu")
1825 (synopsis "Library for passing menus over DBus")
1826 (description "@code{libdbusmenu} passes a menu structure across DBus so
1827 that a program can create a menu simply without worrying about how it is
1828 displayed on the other side of the bus.")
1829
1830 ;; Dual-licensed under either LGPLv2.1 or LGPLv3.
1831 (license (list license:lgpl2.1 license:lgpl3))))