gnu: rust-core-foundation-sys-0.6: Don't hide package.
[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.34.1")
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 "1jwp16r6p5z66k4b2v8zlzhyshhwlmyi27ippkrgqr8jsary7w6l"))))
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-for-tests)
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-for-tests)
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.40.0")
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 "1rnlx9yfw970maxi2x6niaxmih5la11q1ilr7gzshz2kk585k0hm"))))
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 (propagated-inputs
500 `(;; Required by gdk-pixbuf-2.0.pc
501 ("glib" ,glib)
502 ("libpng" ,libpng)
503 ;; Used for testing and required at runtime.
504 ("shared-mime-info" ,shared-mime-info)))
505 (inputs
506 `(("libjpeg" ,libjpeg)
507 ("libtiff" ,libtiff)
508 ("libx11" ,libx11)))
509 (native-inputs
510 `(("pkg-config" ,pkg-config)
511 ("gettext" ,gettext-minimal)
512 ("glib" ,glib "bin") ; glib-mkenums, etc.
513 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
514 (synopsis "GNOME image loading and manipulation library")
515 (description
516 "GdkPixbuf is a library for image loading and manipulation developed
517 in the GNOME project.")
518 (license license:lgpl2.0+)
519 (home-page "https://developer.gnome.org/gdk-pixbuf/")))
520
521 ;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
522 ;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the
523 ;; closure size.
524 (define-public gdk-pixbuf+svg
525 (package (inherit gdk-pixbuf)
526 (name "gdk-pixbuf+svg")
527 (inputs
528 `(("librsvg" ,librsvg)
529 ,@(package-inputs gdk-pixbuf)))
530 (arguments
531 '(#:configure-flags '("-Dinstalled-tests=false")
532 #:tests? #f ; tested by the gdk-pixbuf package already
533 #:phases
534 (modify-phases %standard-phases
535 (add-after 'install 'register-svg-loader
536 (lambda* (#:key inputs outputs #:allow-other-keys)
537 (let* ((out (assoc-ref outputs "out"))
538 (librsvg (assoc-ref inputs "librsvg"))
539 (loaders
540 (append
541 (find-files out "^libpixbufloader-.*\\.so$")
542 (find-files librsvg "^libpixbufloader-.*\\.so$")))
543 (gdk-pixbuf-query-loaders
544 (string-append out "/bin/gdk-pixbuf-query-loaders")))
545 (apply invoke
546 gdk-pixbuf-query-loaders
547 "--update-cache"
548 loaders)))))))
549 (synopsis
550 "GNOME image loading and manipulation library, with SVG support")))
551
552 (define-public at-spi2-core
553 (package
554 (name "at-spi2-core")
555 (version "2.34.0")
556 (source (origin
557 (method url-fetch)
558 (uri (string-append "mirror://gnome/sources/" name "/"
559 (version-major+minor version) "/"
560 name "-" version ".tar.xz"))
561 (sha256
562 (base32
563 "1ihixwhh3c16q6253qj9gf69741rb2pi51822a4rylsfcyywsafn"))))
564 (build-system meson-build-system)
565 (outputs '("out" "doc"))
566 (arguments
567 '(#:configure-flags
568 (list "-Ddocs=true")
569 #:phases
570 (modify-phases %standard-phases
571 (add-after 'unpack 'set-documentation-path
572 (lambda* (#:key outputs #:allow-other-keys)
573 ;; Ensure that the cross-references point to the "doc" output.
574 (substitute* "doc/libatspi/meson.build"
575 (("docpath =.*")
576 (string-append "docpath = '" (assoc-ref outputs "doc") "/share/gtk-doc/html'\n")))
577 #t))
578 (add-before 'install 'prepare-doc-directory
579 (lambda* (#:key outputs #:allow-other-keys)
580 (mkdir-p (string-append (assoc-ref outputs "doc") "/share"))
581 #t))
582 (add-after 'install 'move-documentation
583 (lambda* (#:key outputs #:allow-other-keys)
584 (let ((out (assoc-ref outputs "out"))
585 (doc (assoc-ref outputs "doc")))
586 (copy-recursively
587 (string-append out "/share/gtk-doc")
588 (string-append doc "/share/gtk-doc"))
589 (delete-file-recursively
590 (string-append out "/share/gtk-doc")))
591 #t))
592 (add-after 'install 'check
593 (lambda _
594 (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
595 ;; Run test-suite under a dbus session.
596 (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
597 (string-append %output "/share"))
598 ;; Don't fail on missing '/etc/machine-id'.
599 (setenv "DBUS_FATAL_WARNINGS" "0") ;
600 (invoke "dbus-launch" "ninja" "test")))
601 (delete 'check))))
602 (propagated-inputs
603 ;; atspi-2.pc refers to all these.
604 `(("dbus" ,dbus)
605 ("glib" ,glib)
606 ("libxi" ,libxi)
607 ("libxtst" ,libxtst)))
608 (native-inputs
609 `(("gobject-introspection" ,gobject-introspection)
610 ("gtk-doc" ,gtk-doc)
611 ("glib" ,glib "bin")
612 ("intltool" ,intltool)
613 ("pkg-config" ,pkg-config)))
614 (synopsis "Assistive Technology Service Provider Interface, core components")
615 (description
616 "The Assistive Technology Service Provider Interface, core components,
617 is part of the GNOME accessibility project.")
618 (license license:lgpl2.0+)
619 (home-page "https://projects.gnome.org/accessibility/")))
620
621 (define-public at-spi2-atk
622 (package
623 (name "at-spi2-atk")
624 (version "2.34.1")
625 (source (origin
626 (method url-fetch)
627 (uri (string-append "mirror://gnome/sources/" name "/"
628 (version-major+minor version) "/"
629 name "-" version ".tar.xz"))
630 (sha256
631 (base32
632 "05ncp7s5nddjinffs26mcvpbd63vk1m3cv5y530p3plgfhqgjvbp"))))
633 (build-system meson-build-system)
634 (arguments
635 '(#:phases
636 (modify-phases %standard-phases
637 (replace 'check
638 ;; Run test-suite under a dbus session.
639 (lambda _
640 (setenv "DBUS_FATAL_WARNINGS" "0")
641 (invoke "dbus-launch" "meson" "test"))))))
642 (propagated-inputs
643 `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
644 (inputs
645 `(("atk" ,atk)))
646 (native-inputs
647 `(("pkg-config" ,pkg-config)
648 ;; For tests.
649 ("dbus" ,dbus)
650 ("libxml2" ,libxml2)))
651 (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
652 (description
653 "The Assistive Technology Service Provider Interface
654 is part of the GNOME accessibility project.")
655 (license license:lgpl2.0+)
656 (home-page "https://projects.gnome.org/accessibility/")))
657
658 (define-public gtk+-2
659 (package
660 (name "gtk+")
661 (version "2.24.32")
662 (source (origin
663 (method url-fetch)
664 (uri (string-append "mirror://gnome/sources/" name "/"
665 (version-major+minor version) "/"
666 name "-" version ".tar.xz"))
667 (sha256
668 (base32
669 "0bjq7ja9gwcv6n5q4qkvdjjx40wsdiikksz1zqxvxsm5vlyskj5n"))
670 (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
671 "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
672 "gtk2-theme-paths.patch"))))
673 (build-system gnu-build-system)
674 (outputs '("out" "doc"))
675 (propagated-inputs
676 `(("atk" ,atk)
677 ("gdk-pixbuf" ,gdk-pixbuf+svg)
678 ("pango" ,pango)))
679 (inputs
680 `(("cups" ,cups)
681 ("libxcomposite" ,libxcomposite)
682 ("libxcursor" ,libxcursor)
683 ("libxdamage" ,libxdamage)
684 ("libxi" ,libxi)
685 ("libxinerama" ,libxinerama)
686 ("libxrandr" ,libxrandr)))
687 (native-inputs
688 `(("perl" ,perl)
689 ("gettext" ,gettext-minimal)
690 ("glib" ,glib "bin")
691 ("gobject-introspection" ,gobject-introspection)
692 ("pkg-config" ,pkg-config)
693 ("python-wrapper" ,python-wrapper)))
694 (arguments
695 `(#:configure-flags
696 (list "--with-xinput=yes"
697 (string-append "--with-html-dir="
698 (assoc-ref %outputs "doc")
699 "/share/gtk-doc/html"))
700 #:phases
701 (alist-cons-before
702 'configure 'disable-tests
703 (lambda _
704 ;; FIXME: re-enable tests requiring an X server
705 (substitute* "gtk/Makefile.in"
706 (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
707 #t)
708 %standard-phases)))
709 (native-search-paths
710 (list (search-path-specification
711 (variable "GUIX_GTK2_PATH")
712 (files '("lib/gtk-2.0")))))
713 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
714 (description
715 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
716 graphical user interfaces. Offering a complete set of widgets, GTK+ is
717 suitable for projects ranging from small one-off tools to complete
718 application suites.")
719 (license license:lgpl2.0+)
720 (home-page "https://www.gtk.org/")))
721
722 (define-public gtk+
723 (package (inherit gtk+-2)
724 (name "gtk+")
725 (version "3.24.13")
726 (source (origin
727 (method url-fetch)
728 (uri (string-append "mirror://gnome/sources/" name "/"
729 (version-major+minor version) "/"
730 name "-" version ".tar.xz"))
731 (sha256
732 (base32
733 "1a9hi7k59q0kqx0n3xhsk1ly23w9g9ncllnay1756g0yrww5qxsc"))
734 (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
735 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
736 (outputs '("out" "bin" "doc"))
737 (propagated-inputs
738 `(("at-spi2-atk" ,at-spi2-atk)
739 ("atk" ,atk)
740 ("gdk-pixbuf" ,gdk-pixbuf+svg)
741 ("libepoxy" ,libepoxy)
742 ("libxcursor" ,libxcursor)
743 ("libxi" ,libxi)
744 ("libxinerama" ,libxinerama)
745 ("libxkbcommon" ,libxkbcommon)
746 ("libxdamage" ,libxdamage)
747 ("libxrandr" ,libxrandr)
748 ("mesa" ,mesa)
749 ("pango" ,pango)
750 ("wayland" ,wayland)
751 ("wayland-protocols" ,wayland-protocols)))
752 (inputs
753 `(("libxml2" ,libxml2)
754 ;; XXX: colord depends on mozjs (through polkit), which fails on
755 ;; on non-intel systems now.
756 ;;("colord" ,colord)
757 ("cups" ,cups) ;for printing support
758 ;; XXX: rest depends on p11-kit, which fails on mips64el now.
759 ;;("rest" ,rest)
760 ("json-glib" ,json-glib)))
761 (native-inputs
762 `(("perl" ,perl)
763 ("glib" ,glib "bin")
764 ("gettext" ,gettext-minimal)
765 ("pkg-config" ,pkg-config)
766 ("gobject-introspection" ,gobject-introspection)
767 ("python-wrapper" ,python-wrapper)
768 ;; By using a special xorg-server for GTK+'s tests, we reduce the impact
769 ;; of updating xorg-server directly on the master branch.
770 ("xorg-server" ,xorg-server-for-tests)))
771 (arguments
772 `(#:disallowed-references (,xorg-server-for-tests)
773 ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes
774 ;; to "doc".
775 #:configure-flags (list (string-append "--with-html-dir="
776 (assoc-ref %outputs "doc")
777 "/share/gtk-doc/html")
778 ;; The header file <gdk/gdkwayland.h> is required
779 ;; by gnome-control-center
780 "--enable-wayland-backend"
781 ;; This is necessary to build both backends.
782 "--enable-x11-backend"
783 ;; This enables the HTML5 websocket backend.
784 "--enable-broadway-backend")
785 #:phases (modify-phases %standard-phases
786 (add-before 'configure 'pre-configure
787 (lambda _
788 ;; Disable most tests, failing in the chroot with the message:
789 ;; D-Bus library appears to be incorrectly set up; failed to read
790 ;; machine uuid: Failed to open "/etc/machine-id": No such file or
791 ;; directory.
792 ;; See the manual page for dbus-uuidgen to correct this issue.
793 (substitute* "testsuite/Makefile.in"
794 (("SUBDIRS = gdk gtk a11y css reftests")
795 "SUBDIRS = gdk"))
796 #t))
797 (add-after 'install 'move-desktop-files
798 ;; Move desktop files into 'bin' to avoid cycle references.
799 (lambda* (#:key outputs #:allow-other-keys)
800 (let ((out (assoc-ref outputs "out"))
801 (bin (assoc-ref outputs "bin")))
802 (mkdir-p (string-append bin "/share"))
803 (rename-file (string-append out "/share/applications")
804 (string-append bin "/share/applications"))
805 #t))))))
806 (native-search-paths
807 (list (search-path-specification
808 (variable "GUIX_GTK3_PATH")
809 (files '("lib/gtk-3.0")))))))
810
811 ;;;
812 ;;; Guile bindings.
813 ;;;
814
815 (define-public guile-cairo
816 (package
817 (name "guile-cairo")
818 (version "1.10.0")
819 (source (origin
820 (method url-fetch)
821 (uri (string-append "mirror://savannah/guile-cairo/guile-cairo-"
822 version ".tar.gz"))
823 (sha256
824 (base32
825 "0p6xrhf2k6n5dybn88050za7h90gnd7534n62l53vsca187pwgdf"))
826 (modules '((guix build utils)))
827 (snippet
828 (begin
829 '(begin
830 ;; Install Scheme files in …/guile/site/X.Y.
831 (substitute* (find-files "." "^Makefile\\.in$")
832 (("^(.*)dir = (.*)/guile/site(.*)" _ name prefix suffix)
833 (string-append name "dir = " prefix
834 "/guile/site/@GUILE_EFFECTIVE_VERSION@"
835 suffix)))
836 #t)))))
837 (build-system gnu-build-system)
838 (inputs
839 `(("guile-lib" ,guile-lib)
840 ("expat" ,expat)
841 ("guile" ,guile-2.2)))
842 (propagated-inputs
843 ;; The .pc file refers to 'cairo'.
844 `(("cairo" ,cairo)))
845 (native-inputs
846 `(("pkg-config" ,pkg-config)))
847 (home-page "https://www.nongnu.org/guile-cairo/")
848 (synopsis "Cairo bindings for GNU Guile")
849 (description
850 "Guile-Cairo wraps the Cairo graphics library for Guile Scheme.
851 Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API
852 stable, providing a firm base on which to do graphics work. Finally, and
853 importantly, it is pleasant to use. You get a powerful and well-maintained
854 graphics library with all of the benefits of Scheme: memory management,
855 exceptions, macros, and a dynamic programming environment.")
856 (license license:lgpl3+)))
857
858 (define-public guile-rsvg
859 ;; Use a recent snapshot that supports Guile 2.2 and beyond.
860 (let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678")
861 (revision "0"))
862 (package
863 (name "guile-rsvg")
864 (version (string-append "2.18.1-" revision "."
865 (string-take commit 7)))
866 (source (origin
867 (method url-fetch)
868 (uri (string-append "https://gitlab.com/wingo/guile-rsvg/"
869 "repository/archive.tar.gz?ref="
870 commit))
871 (sha256
872 (base32
873 "0vdzjx8l5nc4y2xjqs0g1rqn1zrwfsm30brh5gz00r1x41a2pvv2"))
874 (patches (search-patches "guile-rsvg-pkgconfig.patch"))
875 (modules '((guix build utils)))
876 (snippet
877 '(begin
878 (substitute* (find-files "." "Makefile\\.am")
879 (("/share/guile/site")
880 "/share/guile/site/@GUILE_EFFECTIVE_VERSION@"))
881 #t))
882 (file-name (string-append name "-" version ".tar.gz"))))
883 (build-system gnu-build-system)
884 (arguments
885 `(#:phases (modify-phases %standard-phases
886 (replace 'bootstrap
887 (lambda _
888 (invoke "autoreconf" "-vfi"))))))
889 (native-inputs `(("pkg-config" ,pkg-config)
890 ("autoconf" ,autoconf)
891 ("automake" ,automake)
892 ("libtool" ,libtool)
893 ("texinfo" ,texinfo)))
894 (inputs `(("guile" ,guile-2.2)
895 ("librsvg" ,librsvg)
896 ("guile-lib" ,guile-lib))) ;for (unit-test)
897 (propagated-inputs `(("guile-cairo" ,guile-cairo)))
898 (synopsis "Render SVG images using Cairo from Guile")
899 (description
900 "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
901 images onto Cairo surfaces.")
902 (home-page "http://wingolog.org/projects/guile-rsvg/")
903 (license license:lgpl2.1+))))
904
905 (define-public guile-present
906 (package
907 (name "guile-present")
908 (version "0.3.0")
909 (source (origin
910 (method url-fetch)
911 (uri (string-append "http://wingolog.org/pub/guile-present/"
912 "guile-present-" version ".tar.gz"))
913 (sha256
914 (base32
915 "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
916 (patches (search-patches "guile-present-coding.patch"))))
917 (build-system gnu-build-system)
918 (arguments
919 '(#:phases
920 (modify-phases %standard-phases
921 (add-after 'install 'post-install
922 (lambda* (#:key inputs outputs #:allow-other-keys)
923 (let* ((out (assoc-ref outputs "out"))
924 (bin (string-append out "/bin"))
925 (guile (assoc-ref inputs "guile")))
926 (substitute* (find-files bin ".*")
927 (("guile")
928 (string-append guile "/bin/guile -L "
929 out "/share/guile/site/2.0 -C "
930 out "/share/guile/site/2.0 "))))
931 #t)))))
932 (native-inputs `(("pkg-config" ,pkg-config)))
933 (inputs `(("guile" ,guile-2.2)))
934 (propagated-inputs
935 ;; These are used by the (present …) modules.
936 `(("guile-lib" ,guile-lib)
937 ("guile-cairo" ,guile-cairo)
938 ("guile-rsvg" ,guile-rsvg)))
939 (home-page "http://wingolog.org/software/guile-present/")
940 (synopsis "Create SVG or PDF presentations in Guile")
941 (description
942 "Guile-Present defines a declarative vocabulary for presentations,
943 together with tools to render presentation documents as SVG or PDF.
944 Guile-Present can be used to make presentations programmatically, but also
945 includes a tools to generate PDF presentations out of Org mode and Texinfo
946 documents.")
947 (license license:lgpl3+)))
948
949 (define-public guile-gnome
950 (package
951 (name "guile-gnome")
952 (version "2.16.5")
953 (source (origin
954 (method url-fetch)
955 (uri
956 (string-append "mirror://gnu/" name
957 "/guile-gnome-platform/guile-gnome-platform-"
958 version ".tar.gz"))
959 (sha256
960 (base32
961 "1gnf3j96nip5kl99a268i0dy1hj7s1cfs66sps3zwysnkd7qr399"))))
962 (build-system gnu-build-system)
963 (native-inputs
964 `(("pkg-config" ,pkg-config)
965 ("atk" ,atk)
966 ;;("corba" ,corba) ; not packaged yet
967 ("gconf" ,gconf)
968 ("gobject-introspection" ,gobject-introspection)
969 ;;("gthread" ,gthread) ; not packaged yet
970 ("gnome-vfs" ,gnome-vfs)
971 ("gdk-pixbuf" ,gdk-pixbuf)
972 ("gtk+" ,gtk+-2)
973 ("libglade" ,libglade)
974 ("libgnome" ,libgnome)
975 ("libgnomecanvas" ,libgnomecanvas)
976 ("libgnomeui" ,libgnomeui)
977 ("pango" ,pango)
978 ("libffi" ,libffi)
979 ("glib" ,glib)))
980 (inputs `(("guile" ,guile-2.2)))
981 (propagated-inputs
982 `(("guile-cairo" ,guile-cairo)
983 ("g-wrap" ,g-wrap)
984 ("guile-lib" ,guile-lib)))
985 (arguments
986 `(#:tests? #f ;FIXME
987 #:phases (modify-phases %standard-phases
988 (add-before 'configure 'pre-configure
989 (lambda* (#:key outputs #:allow-other-keys)
990 (let ((out (assoc-ref outputs "out")))
991 (substitute* (find-files "." "^Makefile.in$")
992 (("guilesite :=.*guile/site" all)
993 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
994 #t))))))
995 (outputs '("out" "debug"))
996 (synopsis "Guile interface for GTK+ programming for GNOME")
997 (description
998 "Includes guile-clutter, guile-gnome-gstreamer,
999 guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
1000 (home-page "https://www.gnu.org/software/guile-gnome/")
1001 (license license:gpl2+)
1002 (properties '((upstream-name . "guile-gnome-platform")
1003 (ftp-directory . "/gnu/guile-gnome/guile-gnome-platform")))))
1004
1005 ;;;
1006 ;;; C++ bindings.
1007 ;;;
1008
1009 (define-public cairomm
1010 (package
1011 (name "cairomm")
1012 (version "1.12.2")
1013 (source (origin
1014 (method url-fetch)
1015 (uri (string-append "https://www.cairographics.org/releases/"
1016 name "-" version ".tar.gz"))
1017 (sha256
1018 (base32
1019 "16fmigxsaz85c3lgcls7biwyz8zy8c8h3jndfm54cxxas3a7zi25"))))
1020 (build-system gnu-build-system)
1021 (arguments
1022 ;; The examples lack -lcairo.
1023 '(#:make-flags '("LDFLAGS=-lcairo")))
1024 (native-inputs `(("pkg-config" ,pkg-config)))
1025 (propagated-inputs
1026 `(("libsigc++" ,libsigc++)
1027 ("freetype" ,freetype)
1028 ("fontconfig" ,fontconfig)
1029 ("cairo" ,cairo)))
1030 (home-page "https://cairographics.org/")
1031 (synopsis "C++ bindings to the Cairo 2D graphics library")
1032 (description
1033 "Cairomm provides a C++ programming interface to the Cairo 2D graphics
1034 library.")
1035 (license license:lgpl2.0+)))
1036
1037 (define-public pangomm
1038 (package
1039 (name "pangomm")
1040 (version "2.42.0")
1041 (source (origin
1042 (method url-fetch)
1043 (uri (string-append "mirror://gnome/sources/" name "/"
1044 (version-major+minor version) "/"
1045 name "-" version ".tar.xz"))
1046 (sha256
1047 (base32
1048 "0mmzxp3wniaafkxr30sb22mq9x44xckb5d60h1bl99lkzxks0vfa"))))
1049 (build-system gnu-build-system)
1050 (native-inputs `(("pkg-config" ,pkg-config)))
1051 (propagated-inputs
1052 `(("cairo" ,cairo)
1053 ("cairomm" ,cairomm)
1054 ("glibmm" ,glibmm)
1055 ("pango" ,pango)))
1056 (home-page "http://www.pango.org/")
1057 (synopsis "C++ interface to the Pango text rendering library")
1058 (description
1059 "Pangomm provides a C++ programming interface to the Pango text rendering
1060 library.")
1061 (license license:lgpl2.1+)))
1062
1063 (define-public atkmm
1064 (package
1065 (name "atkmm")
1066 (version "2.28.0")
1067 (source (origin
1068 (method url-fetch)
1069 (uri (string-append "mirror://gnome/sources/" name "/"
1070 (version-major+minor version) "/"
1071 name "-" version ".tar.xz"))
1072 (sha256
1073 (base32
1074 "0fnxrspxkhhbrjphqrpvl3zjm66n50s4cywrrrwkhbflgy8zqk2c"))))
1075 (build-system gnu-build-system)
1076 (native-inputs `(("pkg-config" ,pkg-config)))
1077 (propagated-inputs
1078 `(("glibmm" ,glibmm) ("atk" ,atk)))
1079 (home-page "https://www.gtkmm.org")
1080 (synopsis "C++ interface to the ATK accessibility library")
1081 (description
1082 "ATKmm provides a C++ programming interface to the ATK accessibility
1083 toolkit.")
1084 (license license:lgpl2.1+)))
1085
1086 (define-public gtkmm
1087 (package
1088 (name "gtkmm")
1089 (version "3.24.2")
1090 (source (origin
1091 (method url-fetch)
1092 (uri (string-append "mirror://gnome/sources/" name "/"
1093 (version-major+minor version) "/"
1094 name "-" version ".tar.xz"))
1095 (sha256
1096 (base32
1097 "1hxdnhavjyvbcpxhd5z17l9fj4182028s66lc0s16qqqrldhjwbd"))))
1098 (build-system gnu-build-system)
1099 (native-inputs `(("pkg-config" ,pkg-config)
1100 ("glib" ,glib "bin") ;for 'glib-compile-resources'
1101 ("xorg-server" ,xorg-server-for-tests)))
1102 (propagated-inputs
1103 `(("pangomm" ,pangomm)
1104 ("cairomm" ,cairomm)
1105 ("atkmm" ,atkmm)
1106 ("gtk+" ,gtk+)
1107 ("glibmm" ,glibmm)))
1108 (arguments
1109 `(#:disallowed-references (,xorg-server-for-tests)
1110 #:phases (modify-phases %standard-phases
1111 (add-before 'check 'run-xvfb
1112 (lambda* (#:key inputs #:allow-other-keys)
1113 (let ((xorg-server (assoc-ref inputs "xorg-server")))
1114 ;; Tests such as 'object_move/test' require a running
1115 ;; X server.
1116 (system (string-append xorg-server "/bin/Xvfb :1 &"))
1117 (setenv "DISPLAY" ":1")
1118 ;; Don't fail because of the missing /etc/machine-id.
1119 (setenv "DBUS_FATAL_WARNINGS" "0")
1120 #t))))))
1121 (home-page "https://gtkmm.org/")
1122 (synopsis
1123 "C++ interface to the GTK+ graphical user interface library")
1124 (description
1125 "gtkmm is the official C++ interface for the popular GUI library GTK+.
1126 Highlights include typesafe callbacks, and a comprehensive set of widgets that
1127 are easily extensible via inheritance. You can create user interfaces either
1128 in code or with the Glade User Interface designer, using libglademm. There's
1129 extensive documentation, including API reference and a tutorial.")
1130 (license license:lgpl2.1+)))
1131
1132
1133 (define-public gtkmm-2
1134 (package (inherit gtkmm)
1135 (name "gtkmm")
1136 (version "2.24.5")
1137 (source (origin
1138 (method url-fetch)
1139 (uri (string-append "mirror://gnome/sources/" name "/"
1140 (version-major+minor version) "/"
1141 name "-" version ".tar.xz"))
1142 (sha256
1143 (base32
1144 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
1145 (arguments '())
1146 (native-inputs `(("pkg-config" ,pkg-config)))
1147 (propagated-inputs
1148 `(("pangomm" ,pangomm)
1149 ("cairomm" ,cairomm)
1150 ("atkmm" ,atkmm)
1151 ("gtk+" ,gtk+-2)
1152 ("glibmm" ,glibmm)))))
1153
1154 (define-public gtksourceviewmm
1155 (package
1156 (name "gtksourceviewmm")
1157 (version "3.18.0")
1158 (source (origin
1159 (method url-fetch)
1160 (uri (string-append "mirror://gnome/sources/" name "/"
1161 (version-major+minor version) "/"
1162 name "-" version ".tar.xz"))
1163 (sha256
1164 (base32 "0fgvmhm4h4qmxig87qvangs6ijw53mi40siz7pixlxbrsgiil22i"))))
1165 (build-system gnu-build-system)
1166 (native-inputs
1167 `(("pkg-config" ,pkg-config)))
1168 (propagated-inputs
1169 ;; In 'Requires' of gtksourceviewmm-3.0.pc.
1170 `(("glibmm" ,glibmm)
1171 ("gtkmm" ,gtkmm)
1172 ("gtksourceview" ,gtksourceview-3)))
1173 (synopsis "C++ interface to the GTK+ 'GtkTextView' widget")
1174 (description
1175 "gtksourceviewmm is a portable C++ library that extends the standard GTK+
1176 framework for multiline text editing with support for configurable syntax
1177 highlighting, unlimited undo/redo, search and replace, a completion framework,
1178 printing and other features typical of a source code editor.")
1179 (license license:lgpl2.1+)
1180 (home-page "https://developer.gnome.org/gtksourceview/")))
1181
1182 ;;;
1183 ;;; Python bindings.
1184 ;;;
1185
1186 (define-public python-pycairo
1187 (package
1188 (name "python-pycairo")
1189 (version "1.17.1")
1190 (source
1191 (origin
1192 (method url-fetch)
1193 (uri (string-append "https://github.com/pygobject/pycairo/releases/download/v"
1194 version "/pycairo-" version ".tar.gz"))
1195 (sha256
1196 (base32
1197 "165n0g7gp2a0qi8558snvfans17x83jv2lv7bx4vr1rxjbn3a2hg"))))
1198 (build-system python-build-system)
1199 (native-inputs
1200 `(("pkg-config" ,pkg-config)
1201 ("python-pytest" ,python-pytest)))
1202 (propagated-inputs ;pycairo.pc references cairo
1203 `(("cairo" ,cairo)))
1204 (home-page "https://cairographics.org/pycairo/")
1205 (synopsis "Python bindings for cairo")
1206 (description
1207 "Pycairo is a set of Python bindings for the Cairo graphics library.")
1208 (license license:lgpl3+)
1209 (properties `((python2-variant . ,(delay python2-pycairo))))))
1210
1211 (define-public python2-pycairo
1212 (let ((pycairo (package-with-python2
1213 (strip-python2-variant python-pycairo))))
1214 (package
1215 (inherit pycairo)
1216 (propagated-inputs
1217 `(("python2-funcsigs" ,python2-funcsigs)
1218 ,@(package-propagated-inputs pycairo)))
1219 ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
1220 (license (list license:lgpl2.1 license:mpl1.1)))))
1221
1222 (define-public python2-pygtk
1223 (package
1224 (name "python2-pygtk")
1225 (version "2.24.0")
1226 (source
1227 (origin
1228 (method url-fetch)
1229 (uri (string-append "mirror://gnome/sources"
1230 "/pygtk/" (version-major+minor version)
1231 "/pygtk-" version ".tar.bz2"))
1232 (sha256
1233 (base32
1234 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
1235 (build-system gnu-build-system)
1236 (outputs '("out"
1237 "doc")) ;13 MiB of gtk-doc HTML
1238 (native-inputs
1239 `(("pkg-config" ,pkg-config)))
1240 (inputs
1241 `(("python" ,python-2)
1242 ("libglade" ,libglade)
1243 ("glib" ,glib)))
1244 (propagated-inputs
1245 `(("python-pycairo" ,python2-pycairo) ;loaded at runtime
1246 ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
1247 ("gtk+" ,gtk+-2)))
1248 (arguments
1249 `(#:tests? #f
1250 #:phases (modify-phases %standard-phases
1251 (add-before 'configure 'set-gtk-doc-directory
1252 (lambda* (#:key outputs #:allow-other-keys)
1253 ;; Install documentation to "doc".
1254 (let ((doc (assoc-ref outputs "doc")))
1255 (substitute* "docs/Makefile.in"
1256 (("TARGET_DIR = \\$\\(datadir\\)")
1257 (string-append "TARGET_DIR = " doc))))))
1258 (add-after 'configure 'fix-codegen
1259 (lambda* (#:key inputs #:allow-other-keys)
1260 (substitute* "pygtk-codegen-2.0"
1261 (("^prefix=.*$")
1262 (string-append
1263 "prefix="
1264 (assoc-ref inputs "python-pygobject") "\n")))))
1265 (add-after 'install 'install-pth
1266 (lambda* (#:key inputs outputs #:allow-other-keys)
1267 ;; pygtk's modules are stored in a subdirectory of
1268 ;; python's site-packages directory. Add a .pth file so
1269 ;; that python will add that subdirectory to its module
1270 ;; search path.
1271 (let* ((out (assoc-ref outputs "out"))
1272 (site (string-append out "/lib/python"
1273 ,(version-major+minor
1274 (package-version python-2))
1275 "/site-packages")))
1276 (call-with-output-file (string-append site "/pygtk.pth")
1277 (lambda (port)
1278 (format port "gtk-2.0~%")))))))))
1279 (home-page "http://www.pygtk.org/")
1280 (synopsis "Python bindings for GTK+")
1281 (description
1282 "PyGTK allows you to write full featured GTK programs in Python. It is
1283 targeted at GTK 2.x, and can be used in conjunction with gnome-python to
1284 write GNOME applications.")
1285 (license license:lgpl2.1+)))
1286
1287 (define-public perl-cairo
1288 (package
1289 (name "perl-cairo")
1290 (version "1.107")
1291 (source (origin
1292 (method url-fetch)
1293 (uri (string-append
1294 "mirror://cpan/authors/id/X/XA/XAOC/Cairo-"
1295 version ".tar.gz"))
1296 (sha256
1297 (base32
1298 "0sg1gf1f2pjq7pji0zsv4rbi3bzpsx82z98k7yqxafzrvlkf27ay"))))
1299 (build-system perl-build-system)
1300 (native-inputs
1301 `(("perl-extutils-depends" ,perl-extutils-depends)
1302 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1303 (inputs
1304 `(("cairo" ,cairo)))
1305 (home-page "https://metacpan.org/release/Cairo")
1306 (synopsis "Perl interface to the cairo 2d vector graphics library")
1307 (description "Cairo provides Perl bindings for the vector graphics library
1308 cairo. It supports multiple output targets, including PNG, PDF and SVG. Cairo
1309 produces identical output on all those targets.")
1310 (license license:lgpl2.1+)))
1311
1312 (define-public perl-gtk2
1313 (package
1314 (name "perl-gtk2")
1315 (version "1.24993")
1316 (source (origin
1317 (method url-fetch)
1318 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Gtk2-"
1319 version ".tar.gz"))
1320 (sha256
1321 (base32
1322 "0ry9jfvfgdwzalxcvwsgr7plhk3agx7p40l0fqdf3vrf7ds47i29"))))
1323 (build-system perl-build-system)
1324 (native-inputs
1325 `(("perl-extutils-depends" ,perl-extutils-depends)
1326 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1327 (inputs
1328 `(("gtk+" ,gtk+-2)))
1329 (propagated-inputs
1330 `(("perl-pango" ,perl-pango)))
1331 (arguments
1332 `(#:phases
1333 (modify-phases %standard-phases
1334 (add-before 'build 'remove-broken-test
1335 ;; See https://gitlab.gnome.org/GNOME/perl-gtk2/issues/3.
1336 (lambda _
1337 (substitute* "t/GdkPixbuf.t"
1338 (("tests => 112") "tests => 111")
1339 (("ok \\(defined \\$pixbuf, \"Don't crash on partial pixmap data\"\\);")
1340 "# ok (defined $pixbuf, \"Don't crash on partial pixmap data\");")))))))
1341 (home-page "https://metacpan.org/release/Gtk2")
1342 (synopsis "Perl interface to the 2.x series of the Gimp Toolkit library")
1343 (description "Perl bindings to the 2.x series of the Gtk+ widget set.
1344 This module allows you to write graphical user interfaces in a Perlish and
1345 object-oriented way, freeing you from the casting and memory management in C,
1346 yet remaining very close in spirit to original API.")
1347 (license license:lgpl2.1+)))
1348
1349 (define-public perl-pango
1350 (package
1351 (name "perl-pango")
1352 (version "1.227")
1353 (source (origin
1354 (method url-fetch)
1355 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Pango-"
1356 version ".tar.gz"))
1357 (sha256
1358 (base32
1359 "0wdcidnfnb6nm79fzfs39ivawj3x8m98a147fmcxgv1zvwia9c1l"))))
1360 (build-system perl-build-system)
1361 (native-inputs
1362 `(("perl-extutils-depends" ,perl-extutils-depends)
1363 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1364 (inputs
1365 `(("pango" ,pango)))
1366 (propagated-inputs
1367 `(("perl-cairo" ,perl-cairo)
1368 ("perl-glib" ,perl-glib)))
1369 (home-page "https://metacpan.org/release/Pango")
1370 (synopsis "Layout and render international text")
1371 (description "Pango is a library for laying out and rendering text, with an
1372 emphasis on internationalization. Pango can be used anywhere that text layout
1373 is needed, but using Pango in conjunction with Cairo and/or Gtk2 provides a
1374 complete solution with high quality text handling and graphics rendering.
1375
1376 Dynamically loaded modules handle text layout for particular combinations of
1377 script and font backend. Pango provides a wide selection of modules, including
1378 modules for Hebrew, Arabic, Hangul, Thai, and a number of Indic scripts.
1379 Virtually all of the world's major scripts are supported.
1380
1381 In addition to the low level layout rendering routines, Pango includes
1382 @code{Pango::Layout}, a high level driver for laying out entire blocks of text,
1383 and routines to assist in editing internationalized text.")
1384 (license license:lgpl2.1+)))
1385
1386 (define-public girara
1387 (package
1388 (name "girara")
1389 (version "0.3.3")
1390 (source
1391 (origin
1392 (method git-fetch)
1393 (uri (git-reference
1394 (url "https://git.pwmt.org/pwmt/girara")
1395 (commit version)))
1396 (file-name (git-file-name name version))
1397 (sha256
1398 (base32 "0q0yfv2777s72p473lw0ll435n7vz4v204cmp9naq8am7a6i6avn"))))
1399 (native-inputs `(("pkg-config" ,pkg-config)
1400 ("check" ,check)
1401 ("gettext" ,gettext-minimal)
1402 ("glib:bin" ,glib "bin")
1403 ("xorg-server" ,xorg-server-for-tests)))
1404 ;; Listed in 'Requires.private' of 'girara.pc'.
1405 (propagated-inputs `(("gtk+" ,gtk+)))
1406 (arguments
1407 `(#:phases (modify-phases %standard-phases
1408 (add-before 'check 'start-xserver
1409 ;; Tests require a running X server.
1410 (lambda* (#:key inputs #:allow-other-keys)
1411 (let ((xorg-server (assoc-ref inputs "xorg-server"))
1412 (display ":1"))
1413 (setenv "DISPLAY" display)
1414
1415 ;; On busy machines, tests may take longer than
1416 ;; the default of four seconds.
1417 (setenv "CK_DEFAULT_TIMEOUT" "20")
1418
1419 ;; Don't fail due to missing '/etc/machine-id'.
1420 (setenv "DBUS_FATAL_WARNINGS" "0")
1421 (zero? (system (string-append xorg-server "/bin/Xvfb "
1422 display " &")))))))))
1423 (build-system meson-build-system)
1424 (home-page "https://pwmt.org/projects/girara/")
1425 (synopsis "Library for minimalistic gtk+3 user interfaces")
1426 (description "Girara is a library that implements a user interface that
1427 focuses on simplicity and minimalism. Currently based on GTK+, a
1428 cross-platform widget toolkit, it provides an interface that focuses on three
1429 main components: a so-called view widget that represents the actual
1430 application, an input bar that is used to execute commands of the
1431 application and the status bar which provides the user with current
1432 information.")
1433 (license license:zlib)))
1434
1435 (define-public gtk-doc
1436 (package
1437 (name "gtk-doc")
1438 (version "1.28")
1439 (source (origin
1440 (method url-fetch)
1441 (uri (string-append "mirror://gnome/sources/" name "/"
1442 (version-major+minor version) "/"
1443 name "-" version ".tar.xz"))
1444 (sha256
1445 (base32
1446 "05apmwibkmn1icx05l8aw241lhymcx01zvk5i499cb150bijj7li"))))
1447 (build-system gnu-build-system)
1448 (arguments
1449 `(#:parallel-tests? #f
1450 #:phases
1451 (modify-phases %standard-phases
1452 (add-after 'unpack 'patch-gtk-doc-scan
1453 (lambda* (#:key inputs #:allow-other-keys)
1454 (substitute* "gtk-doc.xsl"
1455 (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
1456 (string-append (assoc-ref inputs "docbook-xsl")
1457 "/xml/xsl/docbook-xsl-"
1458 ,(package-version docbook-xsl)
1459 "/html/chunk.xsl"))
1460 (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml")
1461 (string-append (assoc-ref inputs "docbook-xsl")
1462 "/xml/xsl/docbook-xsl-"
1463 ,(package-version docbook-xsl)
1464 "/common/en.xml")))
1465 #t))
1466 (add-after 'patch-gtk-doc-scan 'patch-test-out
1467 (lambda _
1468 ;; sanity.sh counts the number of status lines. Since our
1469 ;; texlive regenerates the fonts every time and the font
1470 ;; generator metafont outputs a lot of extra lines, this
1471 ;; test would always fail. Disable it for now.
1472 (substitute* "tests/Makefile.in"
1473 (("empty.sh sanity.sh") "empty.sh"))
1474 #t))
1475 (add-before 'build 'set-HOME
1476 (lambda _
1477 ;; FIXME: dblatex with texlive-union does not find the built
1478 ;; metafonts, so it tries to generate them in HOME.
1479 (setenv "HOME" "/tmp")
1480 #t))
1481 (add-before 'configure 'fix-docbook
1482 (lambda* (#:key inputs #:allow-other-keys)
1483 (substitute* "configure"
1484 ;; The configure check is overzealous about making sure that
1485 ;; things are in place -- it uses the xmlcatalog tool to make
1486 ;; sure that docbook-xsl is available, but this tool can only
1487 ;; look in one catalog file, unlike the $XML_CATALOG_FILES
1488 ;; variable that Guix defines. Fool the test by using the
1489 ;; docbook-xsl catalog explicitly and get on with life.
1490 (("\"\\$XML_CATALOG_FILE\" \
1491 \"http://docbook.sourceforge.net/release/xsl/")
1492 (string-append (car (find-files (assoc-ref inputs "docbook-xsl")
1493 "^catalog.xml$"))
1494 " \"http://docbook.sourceforge.net/release/xsl/")))
1495 #t))
1496 (add-after 'install 'wrap-executables
1497 (lambda* (#:key outputs #:allow-other-keys)
1498 (let ((out (assoc-ref outputs "out")))
1499 (for-each (lambda (prog)
1500 (wrap-program prog
1501 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))))
1502 (find-files (string-append out "/bin")))
1503 #t))))
1504 #:configure-flags
1505 (list (string-append "--with-xml-catalog="
1506 (assoc-ref %build-inputs "docbook-xml")
1507 "/xml/dtd/docbook/catalog.xml"))))
1508 (native-inputs
1509 `(("pkg-config" ,pkg-config)
1510 ("itstool" ,itstool)
1511 ("libxml" ,libxml2)
1512 ("gettext" ,gettext-minimal)
1513 ("bc" ,bc)))
1514 (inputs
1515 `(("perl" ,perl)
1516 ("python" ,python)
1517 ("xsltproc" ,libxslt)
1518 ("dblatex" ,dblatex)
1519 ("docbook-xml" ,docbook-xml-4.3)
1520 ("docbook-xsl" ,docbook-xsl)
1521 ("source-highlight" ,source-highlight)
1522 ("glib" ,glib)
1523 ("python-six" ,python-six)))
1524 (home-page "https://www.gtk.org/gtk-doc/")
1525 (synopsis "Documentation generator from C source code")
1526 (description
1527 "GTK-Doc generates API documentation from comments added to C code. It is
1528 typically used to document the public API of GTK+ and GNOME libraries, but it
1529 can also be used to document application code.")
1530 (license license:gpl2+)))
1531
1532 (define-public gtk-engines
1533 (package
1534 (name "gtk-engines")
1535 (version "2.20.2")
1536 (source (origin
1537 (method url-fetch)
1538 (uri (string-append "mirror://gnome/sources/" name "/"
1539 (version-major+minor version) "/"
1540 name "-" version ".tar.bz2"))
1541 (sha256
1542 (base32
1543 "1db65pb0j0mijmswrvpgkdabilqd23x22d95hp5kwxvcramq1dhm"))))
1544 (build-system gnu-build-system)
1545 (arguments
1546 `(#:configure-flags
1547 `("--enable-animation")))
1548 (native-inputs
1549 `(("pkg-config" ,pkg-config)
1550 ("intltool" ,intltool)))
1551 (inputs
1552 ;; Don't propagate GTK+ to reduce "profile pollution".
1553 `(("gtk+" ,gtk+-2))) ; required by gtk-engines-2.pc
1554 (home-page "https://live.gnome.org/GnomeArt")
1555 (synopsis "Theming engines for GTK+ 2.x")
1556 (description
1557 "This package contains the standard GTK+ 2.x theming engines including
1558 Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,
1559 Redmond95 and ThinIce.")
1560 (license (list license:gpl2+ license:lgpl2.1+))))
1561
1562 (define-public murrine
1563 (package
1564 (name "murrine")
1565 (version "0.98.2")
1566 (source (origin
1567 (method url-fetch)
1568 (uri (string-append "mirror://gnome/sources/" name "/"
1569 (version-major+minor version) "/"
1570 name "-" version ".tar.xz"))
1571 (sha256
1572 (base32
1573 "129cs5bqw23i76h3nmc29c9mqkm9460iwc8vkl7hs4xr07h8mip9"))))
1574 (build-system gnu-build-system)
1575 (arguments
1576 `(#:configure-flags
1577 `("--enable-animation"
1578 "--enable-animationrtl")))
1579 (native-inputs
1580 `(("pkg-config" ,pkg-config)
1581 ("intltool" ,intltool)))
1582 (propagated-inputs
1583 `(("gtk+" ,gtk+-2)))
1584 (home-page "https://live.gnome.org/GnomeArt")
1585 (synopsis "Cairo-based theming engine for GTK+ 2.x")
1586 (description
1587 "Murrine is a cairo-based GTK+ theming engine. It is named after the
1588 glass artworks done by Venicians glass blowers.")
1589 (license license:gpl2+)))
1590
1591 (define-public gtkspell3
1592 (package
1593 (name "gtkspell3")
1594 (version "3.0.9")
1595 (source (origin
1596 (method url-fetch)
1597 (uri (string-append "mirror://sourceforge/gtkspell/"
1598 version "/" name "-" version ".tar.xz"))
1599 (sha256
1600 (base32
1601 "09jdicmpipmj4v84gnkqwbmj4lh8v0i6pn967rb9jx4zg2ia9x54"))))
1602 (build-system gnu-build-system)
1603 (native-inputs
1604 `(("intltool" ,intltool)
1605 ("pkg-config" ,pkg-config)
1606 ("vala" ,vala)))
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 "spread-sheet-widget-" 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 volumeicon
1710 (package
1711 (name "volumeicon")
1712 (version "0.5.1")
1713 (source
1714 (origin
1715 (method url-fetch)
1716 (uri (string-append "http://nullwise.com/files/volumeicon/volumeicon-"
1717 version ".tar.gz"))
1718 (sha256
1719 (base32 "182xl2w8syv6ky2h2bc9imc6ap8pzh0p7rp63hh8nw0xm38c3f14"))))
1720 (build-system gnu-build-system)
1721 (arguments
1722 `(#:configure-flags
1723 (list "--enable-notify"))) ; optional libnotify support
1724 (native-inputs
1725 `(("intltool" ,intltool)
1726 ("pkg-config" ,pkg-config)))
1727 (inputs
1728 `(("alsa-lib" ,alsa-lib)
1729 ("gtk+" ,gtk+)
1730 ("libnotify" ,libnotify)))
1731 (home-page "http://nullwise.com/volumeicon.html")
1732 (synopsis "System tray volume applet")
1733 (description
1734 "Volume Icon is a volume indicator and control applet for @acronym{the
1735 Advanced Linux Sound Architecture, ALSA}. It sits in the system tray,
1736 independent of your desktop environment, and supports global key bindings.")
1737 (license (list license:expat ; src/{bind.c,keybinder.h}
1738 license:isc ; src/alsa_volume_mapping.c
1739 license:gpl3)))) ; the rest & combined work
1740
1741 (define-public yad
1742 (package
1743 (name "yad")
1744 (version "5.0")
1745 (source
1746 (origin
1747 (method git-fetch)
1748 (uri (git-reference
1749 (url "https://github.com/v1cont/yad.git")
1750 (commit (string-append "v" version))))
1751 (file-name (git-file-name name version))
1752 (sha256
1753 (base32 "07rd61hvilsxxrj7lf8c9k0a8glj07s48m7ya8d45030r90g3lvc"))))
1754 (build-system glib-or-gtk-build-system)
1755 (arguments
1756 `(#:configure-flags
1757 ;; Passing --enable-foo will silently disable foo if prerequisite
1758 ;; inputs are missing, not abort the build as one might expect.
1759 ;; ‘--enable-html’ adds a huge webkitgtk dependency. It was never
1760 ;; present in the past and nobody complained.
1761 '("--enable-icon-browser"
1762 "--enable-spell") ; gspell checking support
1763 #:phases
1764 (modify-phases %standard-phases
1765 (add-after 'bootstrap 'intltoolize
1766 (lambda _
1767 (invoke "intltoolize" "--force" "--automake"))))))
1768 (inputs
1769 `(("gspell" ,gspell)
1770 ("gtk+" ,gtk+)))
1771 (native-inputs
1772 `(("autoconf" ,autoconf)
1773 ("automake" ,automake)
1774 ("intltool" ,intltool)
1775 ("pkg-config" ,pkg-config)))
1776 (home-page "https://sourceforge.net/projects/yad-dialog/")
1777 (synopsis "GTK+ dialog boxes for shell scripts")
1778 (description
1779 "This program allows you to display GTK+ dialog boxes from command line or
1780 shell scripts. Example of how to use @code{yad} can be consulted at
1781 @url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.")
1782 (license license:gpl3+)))
1783
1784 (define-public libdbusmenu
1785 (package
1786 (name "libdbusmenu")
1787 (version "16.04.0")
1788 (source
1789 (origin
1790 (method url-fetch)
1791 (uri (string-append "https://launchpad.net/libdbusmenu/"
1792 (version-major+minor version) "/" version
1793 "/+download/libdbusmenu-" version ".tar.gz"))
1794 (sha256
1795 (base32 "12l7z8dhl917iy9h02sxmpclnhkdjryn08r8i4sr8l3lrlm4mk5r"))))
1796 (build-system gnu-build-system)
1797 (arguments
1798 `(#:configure-flags
1799 '("--sysconfdir=/etc"
1800 "--localstatedir=/var"
1801 ;; The shebang of the generated test files should be patched before
1802 ;; enabling tests.
1803 "--disable-tests")
1804 #:make-flags
1805 `(,(string-append "typelibdir=" (assoc-ref %outputs "out")
1806 "/lib/girepository-1.0"))
1807 #:phases
1808 (modify-phases %standard-phases
1809 (add-before 'configure 'set-environment
1810 (lambda _
1811 (setenv "HAVE_VALGRIND_TRUE" "")
1812 (setenv "HAVE_VALGRIND_FALSE" "#")
1813 #t)))))
1814 (inputs
1815 `(("glib" ,glib)
1816 ("gtk+" ,gtk+)
1817 ("gtk+-2" ,gtk+-2)))
1818 (native-inputs
1819 `(("glib:bin" ,glib "bin")
1820 ("gnome-doc-utils" ,gnome-doc-utils)
1821 ("gobject-introspection" ,gobject-introspection)
1822 ("intltool" ,intltool)
1823 ("json-glib" ,json-glib)
1824 ("pkg-config" ,pkg-config)
1825 ("python" ,python-2)
1826 ("vala" ,vala)))
1827 (home-page "https://launchpad.net/libdbusmenu")
1828 (synopsis "Library for passing menus over DBus")
1829 (description "@code{libdbusmenu} passes a menu structure across DBus so
1830 that a program can create a menu simply without worrying about how it is
1831 displayed on the other side of the bus.")
1832
1833 ;; Dual-licensed under either LGPLv2.1 or LGPLv3.
1834 (license (list license:lgpl2.1 license:lgpl3))))