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