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