gnu: maim: Update to 5.5.1.
[jackhill/guix/guix.git] / gnu / packages / xdisorg.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
4 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
5 ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
6 ;;; Copyright © 2013, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
7 ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
8 ;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
9 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
10 ;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
11 ;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
12 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
13 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
14 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
15 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
16 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
17 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
18 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
19 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
20 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
21 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
22 ;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
23 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
24 ;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
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 xdisorg)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix packages)
44 #:use-module (guix download)
45 #:use-module (guix git-download)
46 #:use-module (guix utils)
47 #:use-module (guix build-system cmake)
48 #:use-module (guix build-system gnu)
49 #:use-module (guix build-system glib-or-gtk)
50 #:use-module (guix build-system python)
51 #:use-module (gnu packages)
52 #:use-module (gnu packages documentation)
53 #:use-module (gnu packages algebra)
54 #:use-module (gnu packages autotools)
55 #:use-module (gnu packages check)
56 #:use-module (gnu packages compression)
57 #:use-module (gnu packages image)
58 #:use-module (gnu packages pkg-config)
59 #:use-module (gnu packages flex)
60 #:use-module (gnu packages gettext)
61 #:use-module (gnu packages gl)
62 #:use-module (gnu packages glib)
63 #:use-module (gnu packages gnome)
64 #:use-module (gnu packages icu4c)
65 #:use-module (gnu packages maths)
66 #:use-module (gnu packages m4)
67 #:use-module (gnu packages ncurses)
68 #:use-module (gnu packages perl)
69 #:use-module (gnu packages python)
70 #:use-module (gnu packages linux)
71 #:use-module (gnu packages gl)
72 #:use-module (gnu packages guile)
73 #:use-module (gnu packages xml)
74 #:use-module (gnu packages gtk)
75 #:use-module (gnu packages xorg)
76 #:use-module (gnu packages bison)
77 #:use-module (ice-9 match))
78
79 ;; packages outside the x.org system proper
80
81 (define-public arandr
82 (package
83 (name "arandr")
84 (version "0.1.9")
85 (source (origin
86 (method url-fetch)
87 (uri (string-append "http://christian.amsuess.com/tools/" name
88 "/files/" name "-" version ".tar.gz"))
89 (sha256
90 (base32
91 "1i3f1agixxbfy4kxikb2b241p7c2lg73cl9wqfvlwz3q6zf5faxv"))
92 (modules '((guix build utils)))
93 (snippet
94 ;; Do not record a timestamp and file name in gzipped man
95 ;; pages (this is equivalent to 'gzip --no-name'.)
96 '(substitute* "setup.py"
97 (("gzip\\.open\\(gzfile, 'w', 9\\)")
98 "gzip.GzipFile('', 'wb', 9, open(gzfile, 'wb'), 0.)")))))
99 (build-system python-build-system)
100 (arguments
101 `(#:python ,python-2 ;incompatible with python 3
102 #:phases
103 (modify-phases %standard-phases
104 (add-before 'build 'configure
105 (lambda* (#:key inputs #:allow-other-keys)
106 (substitute* "screenlayout/xrandr.py"
107 (("\"xrandr\"") (string-append "\"" (assoc-ref inputs "xrandr")
108 "/bin/xrandr\"")))
109 #t)))
110 #:tests? #f)) ;no tests
111 (inputs `(("pygtk" ,python2-pygtk)
112 ("xrandr" ,xrandr)))
113 (native-inputs `(("gettext" ,gettext-minimal)
114 ("python-docutils" ,python2-docutils)))
115 (home-page "https://christian.amsuess.com/tools/arandr/")
116 (synopsis "Another RandR graphical user interface")
117 ;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
118 (description "ARandR is designed to provide a simple visual front end for
119 the X11 resize-and-rotate (RandR) extension. Relative monitor positions are
120 shown graphically and can be changed in a drag-and-drop way. Configurations
121 are saved as executable shell scripts which can be loaded without using this
122 program.")
123 (license license:gpl3+)))
124
125 (define-public xclip
126 (package
127 (name "xclip")
128 (version "0.13")
129 (source
130 (origin
131 (method url-fetch)
132 (uri (string-append "https://github.com/astrand/xclip"
133 "/archive/" version ".tar.gz"))
134 (file-name (string-append name "-" version ".tar.gz"))
135 (sha256
136 (base32
137 "0n7pczk9vv30zf8qfln8ba3hnif9yfdxg0m84djac469wc28hnya"))))
138 (build-system gnu-build-system)
139 (arguments
140 '(#:tests? #f ; There is no test suite
141 #:phases
142 (modify-phases %standard-phases
143 ;; Since version 0.13, bootstrapped releases are no longer available.
144 (add-after 'unpack 'bootstrap
145 (lambda _ (zero? (system* "autoreconf" "-v")))))))
146 (native-inputs
147 `(("autoconf" ,autoconf)
148 ("automake" ,automake)))
149 (inputs `(("libxmu" ,libxmu)
150 ("libxt" ,libxt)))
151 (home-page "https://github.com/astrand/xclip")
152 (synopsis "Command line interface to X11 clipboard")
153 (description "Xclip is a command line interface to the X11 clipboard. It
154 can also be used for copying files, as an alternative to sftp/scp, thus
155 avoiding password prompts when X11 forwarding has already been setup.")
156 (license license:gpl2+)))
157
158 (define-public libxkbcommon
159 (package
160 (name "libxkbcommon")
161 (version "0.8.0")
162 (source (origin
163 (method url-fetch)
164 (uri (string-append "https://xkbcommon.org/download/" name "-"
165 version ".tar.xz"))
166 (sha256
167 (base32
168 "0vgy84vfbig5bqznr137h5arjidnfwrxrdli0pxyn2jfn1fjcag8"))))
169 (build-system gnu-build-system)
170 (inputs
171 `(("libx11" ,libx11)
172 ("libxcb" ,libxcb)
173 ("xkeyboard-config" ,xkeyboard-config)))
174 (native-inputs
175 `(("bison" ,bison)
176 ("pkg-config" ,pkg-config)))
177 (arguments
178 `(#:configure-flags
179 (list (string-append "--with-xkb-config-root="
180 (assoc-ref %build-inputs "xkeyboard-config")
181 "/share/X11/xkb")
182 (string-append "--with-x-locale-root="
183 (assoc-ref %build-inputs "libx11")
184 "/share/X11/locale"))))
185 (home-page "https://xkbcommon.org/")
186 (synopsis "Library to handle keyboard descriptions")
187 (description "Xkbcommon is a library to handle keyboard descriptions,
188 including loading them from disk, parsing them and handling their
189 state. It is mainly meant for client toolkits, window systems, and other
190 system applications; currently that includes Wayland, kmscon, GTK+, Qt,
191 Clutter, and more. Despite the name, it is not currently used by anything
192 X11 (yet).")
193 (license (license:x11-style "file://COPYING"
194 "See 'COPYING' in the distribution."))))
195
196 (define-public libfakekey
197 (package
198 (name "libfakekey")
199 (version "0.1")
200 (source
201 (origin
202 (method url-fetch)
203 (uri (string-append "https://downloads.yoctoproject.org/releases"
204 "/matchbox/libfakekey/" version "/libfakekey-"
205 version ".tar.bz2"))
206 (sha256
207 (base32
208 "1501l0bflcrhqbf12n7a7cqilvr0w4xawxw0vw75p2940nkl4464"))))
209 (build-system gnu-build-system)
210 (arguments
211 `(#:make-flags (list "AM_LDFLAGS=-lX11")))
212 (native-inputs
213 `(("pkg-config" ,pkg-config)))
214 (inputs
215 `(("libxtst" ,libxtst)
216 ("libx11" ,libx11)))
217 (home-page "https://www.yoctoproject.org/tools-resources/projects/matchbox")
218 (synopsis "X virtual keyboard library")
219 (description
220 "Libfakekey is a virtual keyboard library for X.")
221 (license license:gpl2)))
222
223 (define-public xdotool
224 (package
225 (name "xdotool")
226 (version "3.20150503.1")
227 (source
228 (origin
229 (method url-fetch)
230 (uri (string-append
231 "https://github.com/jordansissel/xdotool/releases/download/v"
232 version "/xdotool-" version ".tar.gz"))
233 (sha256
234 (base32
235 "1lcngsw33fy9my21rdiz1gs474bfdqcfxjrnfggbx4aypn1nhcp8"))
236 (patches (search-patches "xdotool-fix-makefile.patch"))))
237 (build-system gnu-build-system)
238 (arguments
239 '(#:tests? #f ; Test suite requires a lot of black magic
240 #:phases
241 (modify-phases %standard-phases
242 (replace 'configure
243 (lambda* (#:key outputs #:allow-other-keys #:rest args)
244 (setenv "PREFIX" (assoc-ref outputs "out"))
245 (setenv "LDFLAGS"
246 (string-append "-Wl,-rpath="
247 (assoc-ref %outputs "out") "/lib"))
248 (setenv "CC" "gcc"))))))
249 (native-inputs `(("perl" ,perl))) ; for pod2man
250 (inputs `(("libx11" ,libx11)
251 ("libxext" ,libxext)
252 ("libxi" ,libxi)
253 ("libxinerama" ,libxinerama)
254 ("libxtst" ,libxtst)
255 ("libxkbcommon" ,libxkbcommon)))
256 (home-page "http://www.semicomplete.com/projects/xdotool")
257 (synopsis "Fake keyboard/mouse input, window management, and more")
258 (description "Xdotool lets you simulate keyboard input and mouse activity,
259 move and resize windows, etc. It does this using X11's XTEST extension and
260 other Xlib functions. Additionally, you can search for windows and move,
261 resize, hide, and modify window properties like the title. If your window
262 manager supports it, you can use xdotool to switch desktops, move windows
263 between desktops, and change the number of desktops.")
264 (license license:bsd-3)))
265
266 (define-public xeyes
267 (package
268 (name "xeyes")
269 (version "1.0.1")
270 (source
271 (origin
272 (method url-fetch)
273 (uri (string-append
274 "http://xeyes.sourcearchive.com/downloads/1.0.1/xeyes_"
275 version
276 ".orig.tar.gz"))
277 (sha256
278 (base32
279 "04c3md570j67g55h3bix1qbngcslnq91skli51k3g1avki88zkm9"))))
280 (build-system gnu-build-system)
281 (inputs
282 `(("libxext" ,libxext)
283 ("libxmu" ,libxmu)
284 ("libxt" ,libxt)))
285 (native-inputs
286 `(("pkg-config" ,pkg-config)))
287 (home-page "http://xeyes.sourcearchive.com/")
288 (synopsis "Follow-the-mouse X demo")
289 (description "Xeyes is a demo program for x.org. It shows eyes
290 following the mouse.")
291 (license license:x11)))
292
293
294 (define-public pixman
295 (package
296 (name "pixman")
297 (version "0.34.0")
298 (source (origin
299 (method url-fetch)
300 (uri (string-append
301 "http://cairographics.org/releases/pixman-"
302 version ".tar.gz"))
303 (sha256
304 (base32
305 "13m842m9ffac3m9r0b4lvwjhwzg3w4353djkjpf00s0wnm4v5di1"))
306 (patches (search-patches "pixman-CVE-2016-5296.patch"))))
307 (build-system gnu-build-system)
308 (inputs
309 `(("libpng" ,libpng)
310 ("zlib" ,zlib)))
311 (native-inputs
312 `(("pkg-config" ,pkg-config)))
313 (home-page "http://www.pixman.org/")
314 (synopsis "Low-level pixel manipulation library")
315 (description "Pixman is a low-level software library for pixel
316 manipulation, providing features such as image compositing and trapezoid
317 rasterisation.")
318 (license license:x11)))
319
320 (define-public libdrm
321 (package
322 (name "libdrm")
323 (version "2.4.91")
324 (source
325 (origin
326 (method url-fetch)
327 (uri (string-append
328 "https://dri.freedesktop.org/libdrm/libdrm-"
329 version
330 ".tar.bz2"))
331 (sha256
332 (base32
333 "0068dn47c478vm1lyyhy02gilrpsma0xmcblhvs0dzqyrk80wjk3"))
334 (patches (search-patches "libdrm-symbol-check.patch"))))
335 (build-system gnu-build-system)
336 (arguments
337 `(#:configure-flags
338 '(,@(match (%current-system)
339 ("armhf-linux"
340 '("--enable-exynos-experimental-api"
341 "--enable-omap-experimental-api"
342 ;; XXX: This fails a symbol check on a build machine:
343 ;; <https://hydra.gnu.org/build/2270314/nixlog/4/raw>
344 ;; TODO: Update the list of symbols.
345 ;;"--enable-etnaviv-experimental-api"
346 "--enable-tegra-experimental-api"
347 "--enable-freedreno-kgsl"))
348 ("aarch64-linux"
349 '("--enable-tegra-experimental-api"
350 "--enable-freedreno-kgsl"))
351 (_ '())))))
352 (inputs
353 `(("libpciaccess" ,libpciaccess)))
354 (native-inputs
355 `(("pkg-config" ,pkg-config)))
356 (home-page "https://dri.freedesktop.org/wiki/")
357 (synopsis "Direct rendering userspace library")
358 (description "The Direct Rendering Infrastructure, also known as the DRI,
359 is a framework for allowing direct access to graphics hardware under the
360 X Window System in a safe and efficient manner. It includes changes to the
361 X server, to several client libraries, and to the kernel (DRM, Direct
362 Rendering Manager). The most important use for the DRI is to create fast
363 OpenGL implementations providing hardware acceleration for Mesa.
364 Several 3D accelerated drivers have been written to the DRI specification,
365 including drivers for chipsets produced by 3DFX, AMD (formerly ATI), Intel
366 and Matrox.")
367 (license license:x11)))
368
369
370 (define-public mtdev
371 (package
372 (name "mtdev")
373 (version "1.1.5")
374 (source
375 (origin
376 (method url-fetch)
377 (uri (string-append
378 "http://bitmath.org/code/mtdev/mtdev-"
379 version ".tar.bz2"))
380 (sha256
381 (base32
382 "0zxs7shzgbalkvlaiibi25bd902rbmkv9n1lww6q8j3ri9qdaxv6"))))
383 (build-system gnu-build-system)
384 (home-page "http://bitmath.org/code/mtdev/")
385 (synopsis "Multitouch protocol translation library")
386 (description "Mtdev is a stand-alone library which transforms all
387 variants of kernel MT events to the slotted type B protocol. The events
388 put into mtdev may be from any MT device, specifically type A without
389 contact tracking, type A with contact tracking, or type B with contact
390 tracking.")
391 (license license:x11)))
392
393 (define-public startup-notification
394 (package
395 (name "startup-notification")
396 (version "0.12")
397 (source
398 (origin
399 (method url-fetch)
400 (uri (string-append "https://www.freedesktop.org/software/" name
401 "/releases/" name "-" version ".tar.gz"))
402 (sha256
403 (base32
404 "0jmyryrpqb35y9hd5sgxqy2z0r1snw7d3ljw0jak0n0cjdz1yf9w"))))
405 (build-system gnu-build-system)
406 (native-inputs `(("pkg-config" ,pkg-config)))
407 (inputs
408 `(("libx11" ,libx11)
409 ("xcb-util" ,xcb-util)))
410 (home-page "https://www.freedesktop.org/wiki/Software/startup-notification/")
411 (synopsis "Application startup notification and feedback library")
412 (description
413 "Startup-notification contains a reference implementation of the startup
414 notification protocol. The reference implementation is mostly under an X Window
415 System style license, and has no special dependencies.")
416 ;; Most of the code is provided under x11 license.
417 (license license:lgpl2.0+)))
418
419 (define-public wmctrl
420 (package
421 (name "wmctrl")
422 (version "1.07")
423 (source (origin
424 (method url-fetch)
425 (uri (string-append
426 "https://sites.google.com/site/tstyblo/wmctrl/wmctrl-"
427 version ".tar.gz"))
428 (sha256
429 (base32
430 "1afclc57b9017a73mfs9w7lbdvdipmf9q0xdk116f61gnvyix2np"))
431 (patches (search-patches "wmctrl-64-fix.patch"))))
432 (build-system gnu-build-system)
433 (arguments
434 '(#:configure-flags
435 (list (string-append "--mandir="
436 (assoc-ref %outputs "out")
437 "/share/man"))))
438 (native-inputs
439 `(("pkg-config" ,pkg-config)))
440 (inputs
441 `(("libx11" ,libx11)
442 ("libxmu" ,libxmu)
443 ("glib" ,glib)))
444 (home-page "http://tomas.styblo.name/wmctrl/")
445 (synopsis "Command-line tool to control X window managers")
446 (description
447 "Wmctrl allows to interact with an X window manager that is compatible
448 with the EWMH/NetWM specification. It can query the window manager for
449 information, and request for certain window management actions (resize and
450 move windows, switch between desktops, etc.).")
451 (license license:gpl2+)))
452
453 (define-public scrot
454 (package
455 (name "scrot")
456 (version "0.8")
457 (source (origin
458 (method url-fetch)
459 (uri (list (string-append
460 "http://linuxbrit.co.uk/downloads/scrot-"
461 version ".tar.gz")
462 (string-append
463 "https://fossies.org/linux/privat/old/scrot-"
464 version ".tar.gz")))
465 (sha256
466 (base32
467 "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
468 (build-system gnu-build-system)
469 (arguments
470 ;; By default, man and doc are put in PREFIX/{man,doc} instead of
471 ;; PREFIX/share/{man,doc}.
472 '(#:configure-flags
473 (list (string-append "--mandir="
474 (assoc-ref %outputs "out")
475 "/share/man"))
476 #:phases
477 (modify-phases %standard-phases
478 (replace 'install
479 (lambda* (#:key inputs outputs #:allow-other-keys)
480 (let* ((out (assoc-ref outputs "out"))
481 (doc (string-append out "/share/doc/scrot")))
482 (mkdir-p doc)
483 (zero?
484 (system* "make" "install"
485 (string-append "docsdir=" doc)))))))))
486 (inputs
487 `(("libx11" ,libx11)
488 ("giblib" ,giblib)))
489 (home-page "http://linuxbrit.co.uk/software/")
490 (synopsis "Command-line screen capture utility for X Window System")
491 (description
492 "Scrot allows to save a screenshot of a full screen, a window or a part
493 of the screen selected by mouse.")
494 ;; This license removes a clause about X Consortium from the original
495 ;; X11 license.
496 (license (license:x11-style "file://COPYING"
497 "See 'COPYING' in the distribution."))))
498
499 (define-public slop
500 (package
501 (name "slop")
502 (version "7.4")
503 (source (origin
504 (method url-fetch)
505 (uri (string-append
506 "https://github.com/naelstrof/slop/archive/v"
507 version ".tar.gz"))
508 (file-name (string-append name "-" version ".tar.gz"))
509 (sha256
510 (base32
511 "1kpdrikgpjb4fpxalb6pjcih5njv1w9cnrjj5612ywdv1q5mjs48"))))
512 (build-system cmake-build-system)
513 (arguments
514 '(#:tests? #f)) ; no "check" target
515 (inputs
516 `(("glew" ,glew)
517 ("glm" ,glm)
518 ("icu4c" ,icu4c)
519 ("libxext" ,libxext)
520 ("libxrender" ,libxrender)
521 ("mesa" ,mesa)))
522 (home-page "https://github.com/naelstrof/slop")
523 (synopsis "Select a region and print its bounds to stdout")
524 (description
525 "slop (Select Operation) is a tool that queries for a selection from a
526 user and prints the region to stdout. It grabs the mouse and turns it into a
527 crosshair, lets the user click and drag to make a selection (or click on a
528 window) while drawing a pretty box around it, then finally prints the
529 selection's dimensions to stdout.")
530 (license license:gpl3+)))
531
532 (define-public maim
533 (package
534 (name "maim")
535 (version "5.5.1")
536 (source (origin
537 (method url-fetch)
538 (uri (string-append
539 "https://github.com/naelstrof/maim/archive/v"
540 version ".tar.gz"))
541 (file-name (string-append name "-" version ".tar.gz"))
542 (sha256
543 (base32
544 "1dvw0axnr9hhjg6zdcq9lwvaq0x7vrzlz00p8n3hj25qzsi4z5as"))))
545 (build-system cmake-build-system)
546 (arguments
547 '(#:tests? #f)) ; no "check" target
548 (inputs
549 `(("glm" ,glm)
550 ("libjpeg" ,libjpeg-turbo)
551 ("libpng" ,libpng)
552 ("libxcomposite" ,libxcomposite)
553 ("libxfixes" ,libxfixes)
554 ("libxrandr" ,libxrandr)
555 ("mesa" ,mesa)
556 ("slop" ,slop)
557 ("zlib" ,zlib)))
558 (home-page "https://github.com/naelstrof/maim")
559 (synopsis "Screenshot utility for X Window System")
560 (description
561 "maim (Make Image) is a tool that takes screenshots of your desktop and
562 saves it in any format. Along with a full screen, it allows you to capture a
563 predefined region or a particular window. Also, it makes it possible to
564 include cursor in the resulting image.")
565 (license license:gpl3+)))
566
567 (define-public unclutter
568 (package
569 (name "unclutter")
570 (version "8")
571 (source (origin
572 (method url-fetch)
573 (uri (string-append
574 "http://ftp.x.org/contrib/utilities/unclutter-"
575 version ".tar.Z"))
576 (sha256
577 (base32
578 "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
579 (build-system gnu-build-system)
580 (arguments
581 '(#:tests? #f ; no check target
582 #:phases
583 (modify-phases %standard-phases
584 (delete 'configure)
585 (replace 'install
586 (lambda* (#:key inputs outputs #:allow-other-keys)
587 (let* ((out (assoc-ref outputs "out"))
588 (bin (string-append out "/bin"))
589 (man1 (string-append out "/share/man/man1")))
590 (mkdir-p bin)
591 (mkdir-p man1)
592 (zero?
593 (system* "make" "install" "install.man"
594 (string-append "BINDIR=" bin)
595 (string-append "MANDIR=" man1)))))))))
596 (inputs `(("libx11" ,libx11)))
597 (home-page "http://ftp.x.org/contrib/utilities/")
598 (synopsis "Hide idle mouse cursor")
599 (description
600 "Unclutter is a program which runs permanently in the background of an
601 X11 session. It checks on the X11 pointer (cursor) position every few
602 seconds, and when it finds it has not moved (and no buttons are pressed
603 on the mouse, and the cursor is not in the root window) it creates a
604 small sub-window as a child of the window the cursor is in. The new
605 window installs a cursor of size 1x1 but a mask of all 0, i.e. an
606 invisible cursor. This allows you to see all the text in an xterm or
607 xedit, for example. The human factors crowd would agree it should make
608 things less distracting.")
609 (license license:public-domain)))
610
611 (define-public xautomation
612 (package
613 (name "xautomation")
614 (version "1.09")
615 (source
616 (origin
617 (method url-fetch)
618 (uri (string-append "https://www.hoopajoo.net/static/projects/"
619 "xautomation-" version ".tar.gz"))
620
621 (sha256
622 (base32
623 "03azv5wpg65h40ip2kk1kdh58vix4vy1r9bihgsq59jx2rhjr3zf"))))
624 (build-system gnu-build-system)
625 (inputs
626 `(("libpng" ,libpng)
627 ("libx11" ,libx11)
628 ("libxi" ,libxi)
629 ("libxtst" ,libxtst)))
630 (native-inputs
631 `(("inputproto" ,inputproto)
632 ("xextproto" ,xextproto)
633 ("xproto" ,xproto)))
634 (synopsis "Tools to automate tasks in X such as detecting on screen images")
635 (description
636 "Xautomation can control X from the command line for scripts, and
637 do visual scraping to find things on the screen. The control interface
638 allows mouse movement, clicking, button up/down, key up/down, etc, and
639 uses the XTest extension so you don't have the annoying problems that
640 xse has when apps ignore sent events. The visgrep program can find
641 images inside of images and reports the coordinates, allowing progams
642 to find buttons, etc, on the screen to click on.")
643 (home-page "https://www.hoopajoo.net/projects/xautomation.html")
644 (license license:gpl2+)))
645
646 (define-public xlockmore
647 (package
648 (name "xlockmore")
649 (version "5.55")
650 (source (origin
651 (method url-fetch)
652 (uri (list (string-append "http://sillycycle.com/xlock/"
653 name "-" version ".tar.xz")
654 ;; Previous releases are moved to a subdirectory.
655 (string-append "http://sillycycle.com/xlock/"
656 "recent-releases/"
657 name "-" version ".tar.xz")))
658 (sha256
659 (base32
660 "1y3f76rq2nd10fgi2rx81aj6pijglmm661vjsxi05hpg35dzmwfl"))))
661 (build-system gnu-build-system)
662 (arguments
663 '(#:configure-flags (list (string-append "--enable-appdefaultdir="
664 (assoc-ref %outputs "out")
665 "/lib/X11/app-defaults"))
666 #:tests? #f)) ;no such thing as a test suite
667 (inputs
668 `(("libX11" ,libx11)
669 ("libXext" ,libxext)
670 ("libXt" ,libxt)
671 ("linux-pam" ,linux-pam)))
672 (home-page "http://sillycycle.com/xlockmore.html")
673 (synopsis "Screen locker for the X Window System")
674 (description
675 "XLockMore is a classic screen locker and screen saver for the
676 X Window System.")
677 (license (license:non-copyleft #f "See xlock.c.")
678 ))) ; + GPLv2 in modes/glx/biof.c.
679
680 (define-public xosd
681 (package
682 (name "xosd")
683 (version "2.2.14")
684 (source (origin
685 (method url-fetch)
686 (uri (string-append
687 "mirror://sourceforge/libxosd/libxosd/xosd-" version "/"
688 name "-" version ".tar.gz"))
689 (sha256
690 (base32
691 "025m7ha89q29swkc7s38knnbn8ysl24g2h5s7imfxflm91psj7sg"))))
692 (build-system gnu-build-system)
693 (arguments
694 '(#:configure-flags
695 (list (string-append "--mandir=" %output "/share/man"))))
696 (inputs
697 `(("libx11" ,libx11)
698 ("libxt" ,libxt)
699 ("libxext" ,libxext)
700 ("libxinerama" ,libxinerama)))
701 (home-page "https://sourceforge.net/projects/libxosd/")
702 (synopsis "X On Screen Display")
703 (description
704 "XOSD provides a C library and a simple utility (osd_cat) for displaying
705 transparent text on your screen.")
706 (license license:gpl2+)))
707
708 (define-public xbindkeys
709 (package
710 (name "xbindkeys")
711 (version "1.8.6")
712 (source (origin
713 (method url-fetch)
714 ;; Download from the savannah mirror list fails
715 (uri (string-append
716 "http://www.nongnu.org/xbindkeys/xbindkeys-"
717 version
718 ".tar.gz"))
719 (sha256
720 (base32
721 "060df6d8y727jp1inp7blp44cs8a7jig7vcm8ndsn6gw36z1h3bc"))))
722 (build-system gnu-build-system)
723 (inputs
724 `(("libx11" ,libx11)
725 ("guile" ,guile-2.0)))
726 (home-page "https://www.nongnu.org/xbindkeys/")
727 (synopsis "Associate a combination of keys with a shell command")
728 (description
729 "XBindKeys is a program that allows you to launch shell commands with
730 your keyboard or your mouse under the X Window System. It links commands to
731 keys or mouse buttons, using a configuration file. It's independent of the
732 window manager and can capture all keyboard keys (ex: Power, Wake...). It
733 optionally supports a Guile-based configuration file layout, which enables you
734 to access all XBindKeys internals, so you can have key combinations, double
735 clicks or timed double clicks take actions. Also all functions that work in
736 Guile will work for XBindKeys.")
737 (license license:gpl2+)))
738
739 (define-public sxhkd
740 (package
741 (name "sxhkd")
742 (version "0.5.6")
743 (source
744 (origin
745 (file-name (string-append name "-" version ".tar.gz"))
746 (method url-fetch)
747 (uri (string-append
748 "https://github.com/baskerville/sxhkd/archive/"
749 version ".tar.gz"))
750 (sha256
751 (base32
752 "15grmzpxz5fqlbfg2slj7gb7r6nzkvjmflmbkqx7mlby9pm6wdkj"))))
753 (build-system gnu-build-system)
754 (inputs
755 `(("asciidoc" ,asciidoc)
756 ("libxcb" ,libxcb)
757 ("xcb-util" ,xcb-util)
758 ("xcb-util-keysyms" ,xcb-util-keysyms)
759 ("xcb-util-wm" ,xcb-util-wm)))
760 (arguments
761 '(#:phases (modify-phases %standard-phases (delete 'configure))
762 #:tests? #f ; no check target
763 #:make-flags (list "CC=gcc"
764 (string-append "PREFIX=" %output))))
765 (home-page "https://github.com/baskerville/sxhkd")
766 (synopsis "Simple X hotkey daemon")
767 (description "sxhkd is a simple X hotkey daemon with a powerful and
768 compact configuration syntax.")
769 (license license:bsd-2)))
770
771 (define-public rxvt-unicode
772 (package
773 (name "rxvt-unicode")
774 (version "9.22")
775 (source (origin
776 (method url-fetch)
777 (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/"
778 name "-" version ".tar.bz2"))
779 (patches (search-patches "rxvt-unicode-escape-sequences.patch"))
780 (sha256
781 (base32
782 "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"))))
783 (build-system gnu-build-system)
784 (arguments
785 ;; This sets the destination when installing the necessary terminal
786 ;; capability data, which are not provided by 'ncurses'. See
787 ;; https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html
788 `(#:make-flags (list (string-append "TERMINFO="
789 (assoc-ref %outputs "out")
790 "/share/terminfo"))
791 #:phases
792 (modify-phases %standard-phases
793 (add-after 'install 'install-desktop-urxvt
794 (lambda* (#:key outputs #:allow-other-keys)
795 (let* ((output (assoc-ref outputs "out"))
796 (desktop (string-append output "/share/applications")))
797 (mkdir-p desktop)
798 (with-output-to-file
799 (string-append desktop "/urxvt.desktop")
800 (lambda _
801 (format #t
802 "[Desktop Entry]~@
803 Name=rxvt-unicode~@
804 Comment=~@
805 Exec=~a/bin/urxvt~@
806 TryExec=~@*~a/bin/urxvt~@
807 Icon=~@
808 Type=Application~%"
809 output)))
810 #t)))
811 (add-after 'install 'install-desktop-urxvtc
812 (lambda* (#:key outputs #:allow-other-keys)
813 (let* ((output (assoc-ref outputs "out"))
814 (desktop (string-append output "/share/applications")))
815 (mkdir-p desktop)
816 (with-output-to-file
817 (string-append desktop "/urxvtc.desktop")
818 (lambda _
819 (format #t
820 "[Desktop Entry]~@
821 Name=rxvt-unicode (client)~@
822 Comment=Rxvt clone with XFT and unicode support~@
823 Exec=~a/bin/urxvtc~@
824 TryExec=~@*~a/bin/urxvtc~@
825 Icon=~@
826 Type=Application~%"
827 output)))
828 #t))))))
829 (inputs
830 `(("libXft" ,libxft)
831 ("libX11" ,libx11)))
832 (native-inputs
833 `(("ncurses" ,ncurses) ;trigger the installation of terminfo data
834 ("perl" ,perl)
835 ("pkg-config" ,pkg-config)))
836 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
837 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
838 (native-search-paths
839 (list (search-path-specification
840 (variable "TERMINFO_DIRS")
841 (files '("share/terminfo")))))
842 (home-page "http://software.schmorp.de/pkg/rxvt-unicode.html")
843 (synopsis "Rxvt clone with XFT and unicode support")
844 (description "Rxvt-unicode (urxvt) is a colour vt102 terminal emulator
845 intended as an xterm replacement for users who do not require features such as
846 Tektronix 4014 emulation and toolkit-style configurability. It supports
847 unicode, XFT and may be extended with Perl plugins. It also comes with a
848 client/daemon pair that lets you open any number of terminal windows from
849 within a single process.")
850 (license license:gpl3+)))
851
852 (define-public xcape
853 (package
854 (name "xcape")
855 (version "1.2")
856 (source
857 (origin
858 (method url-fetch)
859 (uri (string-append "https://github.com/alols/" name
860 "/archive/v" version ".tar.gz"))
861 (file-name (string-append name "-" version ".tar.gz"))
862 (sha256
863 (base32
864 "0898zc3vwxia00h9kfknpf7jygxgwggrx8v5mxc31w4lzn2dhzm2"))))
865 (build-system gnu-build-system)
866 (arguments
867 `(#:tests? #f ; no check target
868 ;; no configure script
869 #:phases (modify-phases %standard-phases (delete 'configure))
870 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
871 "MANDIR=/share/man/man1"
872 "CC=gcc")))
873 (inputs
874 `(("libxtst" ,libxtst)
875 ("libx11" ,libx11)))
876 (native-inputs
877 `(("pkg-config" ,pkg-config)))
878 (home-page "https://github.com/alols/xcape")
879 (synopsis "Use a modifier key in X.org as another key")
880 (description
881 "This utility for X.org allows to use modifier key as another key when
882 pressed and released on its own. The default behaviour is to generate the
883 Escape key when Left Control is pressed and released on its own.")
884 (license license:gpl3+)))
885
886 (define-public libwacom
887 (package
888 (name "libwacom")
889 (version "0.29")
890 (source (origin
891 (method url-fetch)
892 (uri (string-append "mirror://sourceforge/linuxwacom/libwacom/"
893 name "-" version ".tar.bz2"))
894 (sha256
895 (base32
896 "1diklgcjhmvcxi9p1ifp6wcnyr6k7z9jhrlzfhzjqd6zipk01slw"))))
897 (build-system glib-or-gtk-build-system)
898 (native-inputs
899 `(("pkg-config" ,pkg-config)))
900 (inputs
901 `(("gtk+" ,gtk+)
902 ("libgudev" ,libgudev)
903 ("eudev" ,eudev)
904 ("libxml2" ,libxml2)))
905 (propagated-inputs
906 ;; libwacom includes header files that include GLib, and libinput uses
907 ;; those header files.
908 `(("glib" ,glib)))
909 (home-page "http://linuxwacom.sourceforge.net/")
910 (synopsis "Helper library for Wacom tablet settings")
911 (description
912 "Libwacom is a library to help implement Wacom tablet settings. It is
913 intended to be used by client-programs that need model identification. It is
914 already being used by the gnome-settings-daemon and the GNOME Control Center
915 Wacom tablet applet.")
916 (license license:x11)))
917
918 (define-public xf86-input-wacom
919 (package
920 (name "xf86-input-wacom")
921 (version "0.36.0")
922 (source (origin
923 (method url-fetch)
924 (uri (string-append
925 "mirror://sourceforge/linuxwacom/xf86-input-wacom/"
926 name "-" version ".tar.bz2"))
927 (sha256
928 (base32
929 "1xi39hl8ddgj9m7m2k2ll2r3wh0k0aq45fvrsv43651bhz9cbrza"))))
930 (arguments
931 `(#:configure-flags
932 (list (string-append "--with-sdkdir="
933 (assoc-ref %outputs "out")
934 "/include/xorg")
935 (string-append "--with-xorg-conf-dir="
936 (assoc-ref %outputs "out")
937 "/share/X11/xorg.conf.d"))))
938 (build-system gnu-build-system)
939 (native-inputs
940 `(("pkg-config" ,pkg-config)))
941 (inputs
942 `(("xorg-server" ,xorg-server)
943 ("libxrandr" ,libxrandr)
944 ("libxinerama" ,libxinerama)
945 ("libxi" ,libxi)
946 ("eudev" ,eudev)))
947 (home-page "http://linuxwacom.sourceforge.net/")
948 (synopsis "Wacom input driver for X")
949 (description
950 "The xf86-input-wacom driver is the wacom-specific X11 input driver for
951 the X.Org X Server version 1.7 and later (X11R7.5 or later).")
952 (license license:x11)))
953
954 (define-public redshift
955 (package
956 (name "redshift")
957 (version "1.11")
958 (source
959 (origin
960 (method url-fetch)
961 (uri
962 (string-append "https://github.com/jonls/redshift/"
963 "releases/download/v" version
964 "/redshift-" version ".tar.xz"))
965 (sha256
966 (base32
967 "0ngkwj7rg8nfk806w0sg443w6wjr91xdc0zisqfm5h2i77wm1qqh"))))
968 (build-system gnu-build-system)
969 (native-inputs
970 `(("pkg-config" ,pkg-config)
971 ("intltool" ,intltool)))
972 (inputs
973 `(("libdrm" ,libdrm)
974 ("libx11" ,libx11)
975 ("libxcb" ,libxcb)
976 ("libxxf86vm" ,libxxf86vm)
977 ("glib" ,glib))) ;for Geoclue2 support
978 (home-page "https://github.com/jonls/redshift")
979 (synopsis "Adjust the color temperature of your screen")
980 (description
981 "Redshift adjusts the color temperature according to the position of the
982 sun. A different color temperature is set during night and daytime. During
983 twilight and early morning, the color temperature transitions smoothly from
984 night to daytime temperature to allow your eyes to slowly adapt. At night the
985 color temperature should be set to match the lamps in your room.")
986 (license license:gpl3+)))
987
988 (define-public xscreensaver
989 (package
990 (name "xscreensaver")
991 (version "5.39")
992 (source
993 (origin
994 (method url-fetch)
995 (uri
996 (string-append "https://www.jwz.org/xscreensaver/xscreensaver-"
997 version ".tar.gz"))
998 (sha256
999 (base32
1000 "09i47h4hdgwxyqgrsnshl4l5dv5mrsp37h705cc22lwby601ikj8"))))
1001 (build-system gnu-build-system)
1002 (arguments
1003 `(#:tests? #f ; no check target
1004 #:phases
1005 (modify-phases %standard-phases
1006 (add-before 'configure 'adjust-gtk-resource-paths
1007 (lambda _
1008 (substitute* '("driver/Makefile.in" "po/Makefile.in.in")
1009 (("@GTK_DATADIR@") "@datadir@")
1010 (("@PO_DATADIR@") "@datadir@")))))
1011 #:configure-flags '("--with-pam" "--with-proc-interrupts"
1012 "--without-readdisplay")
1013 #:make-flags (list (string-append "AD_DIR="
1014 (assoc-ref %outputs "out")
1015 "/usr/lib/X11/app-defaults"))))
1016 (native-inputs
1017 `(("pkg-config" ,pkg-config)
1018 ("intltool" ,intltool)))
1019 (inputs
1020 `(("libx11" ,libx11)
1021 ("libxext" ,libxext)
1022 ("libxi" ,libxi)
1023 ("libxt" ,libxt)
1024 ("libxft" ,libxft)
1025 ("libxmu" ,libxmu)
1026 ("libxpm" ,libxpm)
1027 ("libglade" ,libglade)
1028 ("libxml2" ,libxml2)
1029 ("libsm" ,libsm)
1030 ("libjpeg" ,libjpeg)
1031 ("linux-pam" ,linux-pam)
1032 ("pango" ,pango)
1033 ("gtk+" ,gtk+)
1034 ("perl" ,perl)
1035 ("cairo" ,cairo)
1036 ("bc" ,bc)
1037 ("libxrandr" ,libxrandr)
1038 ("glu" ,glu)
1039 ("glib" ,glib)))
1040 (home-page "https://www.jwz.org/xscreensaver/")
1041 (synopsis "Classic screen saver suite supporting screen locking")
1042 (description
1043 "xscreensaver is a popular screen saver collection with many entertaining
1044 demos. It also acts as a nice screen locker.")
1045 ;; xscreensaver doesn't have a single copyright file and instead relies on
1046 ;; source comment headers, though most files have the same lax
1047 ;; permissions. To reduce complexity, we're pointing at Debian's
1048 ;; breakdown of the copyright information.
1049 (license (license:non-copyleft
1050 (string-append
1051 "http://metadata.ftp-master.debian.org/changelogs/"
1052 "/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
1053
1054 (define-public xsel
1055 (package
1056 (name "xsel")
1057 (version "1.2.0")
1058 (source (origin
1059 (method url-fetch)
1060 (uri (string-append "http://www.vergenet.net/~conrad/software"
1061 "/xsel/download/xsel-" version ".tar.gz"))
1062 (sha256
1063 (base32
1064 "070lbcpw77j143jrbkh0y1v10ppn1jwmjf92800w7x42vh4cw9xr"))))
1065 (build-system gnu-build-system)
1066 (inputs
1067 `(("libxt" ,libxt)))
1068 (home-page "http://www.vergenet.net/~conrad/software/xsel/")
1069 (synopsis "Manipulate X selection")
1070 (description
1071 "XSel is a command-line program for getting and setting the contents of
1072 the X selection. Normally this is only accessible by manually highlighting
1073 information and pasting it with the middle mouse button.
1074
1075 XSel reads from standard input and writes to standard output by default,
1076 but can also follow a growing file, display contents, delete entries and more.")
1077 (license (license:x11-style "file://COPYING"
1078 "See COPYING in the distribution."))))
1079
1080 (define-public xdpyprobe
1081 (package
1082 (name "xdpyprobe")
1083 (version "0.1")
1084 (source (origin
1085 (method url-fetch)
1086 (uri (string-append "https://github.com/alezost/" name
1087 "/releases/download/v" version
1088 "/" name "-" version ".tar.gz"))
1089 (sha256
1090 (base32
1091 "1h09wd2qcg08rj5hcakvdh9q01hkrj8vxly94ax3ch2x06lm0zq8"))))
1092 (build-system gnu-build-system)
1093 (inputs
1094 `(("libx11" ,libx11)))
1095 (home-page "https://github.com/alezost/xdpyprobe")
1096 (synopsis "Probe X server for connectivity")
1097 (description
1098 "Xdpyprobe is a tiny C program whose only purpose is to probe a
1099 connectivity of the X server running on a particular @code{DISPLAY}.")
1100 (license license:gpl3+)))
1101
1102 (define-public rofi
1103 (package
1104 (name "rofi")
1105 (version "1.5.1")
1106 (source (origin
1107 (method url-fetch)
1108 (uri (string-append "https://github.com/DaveDavenport/rofi/"
1109 "releases/download/"
1110 version "/rofi-" version ".tar.xz"))
1111 (sha256
1112 (base32
1113 "0wx118banbwfqdwc5y44fkp3hxg97gj3vma16528slhy408hkg7i"))))
1114 (build-system gnu-build-system)
1115 (inputs
1116 `(("pango" ,pango)
1117 ("cairo" ,cairo)
1118 ("glib" ,glib)
1119 ("startup-notification" ,startup-notification)
1120 ("librsvg" ,librsvg)
1121 ("libxkbcommon" ,libxkbcommon)
1122 ("libxcb" ,libxcb)
1123 ("xcb-util" ,xcb-util)
1124 ("xcb-util-xrm" ,xcb-util-xrm)
1125 ("xcb-util-wm" ,xcb-util-wm)))
1126 (native-inputs
1127 `(("bison" ,bison)
1128 ("check" ,check)
1129 ("flex" ,flex)
1130 ("glib:bin" ,glib "bin")
1131 ("pkg-config" ,pkg-config)))
1132 (arguments
1133 `(#:parallel-tests? #f ; May fail in some circumstances.
1134 #:phases
1135 (modify-phases %standard-phases
1136 (add-before 'configure 'adjust-tests
1137 (lambda _
1138 (substitute* '("test/helper-expand.c")
1139 (("~root") "/root")
1140 (("~") "")
1141 (("g_get_home_dir \\(\\)") "\"/\""))
1142 #t)))))
1143 (home-page "https://github.com/DaveDavenport/rofi")
1144 (synopsis "Application launcher")
1145 (description "Rofi is a minimalist application launcher. It memorizes which
1146 applications you regularly use and also allows you to search for an application
1147 by name.")
1148 (license license:expat)))
1149
1150 (define-public tint2
1151 (package
1152 (name "tint2")
1153 (version "0.14.6")
1154 (source (origin
1155 (method url-fetch)
1156 (uri (string-append "https://gitlab.com/o9000/" name
1157 "/repository/archive.tar.gz?ref=" version))
1158 (file-name (string-append name "-" version ".tar.gz"))
1159 (sha256
1160 (base32
1161 "1kwzwxy4myagybm3rc7dgynfgp75742n348qibn1p2an9ggyivda"))))
1162 (build-system cmake-build-system)
1163 (arguments
1164 '(#:tests? #f ;no test target
1165 #:phases
1166 (modify-phases %standard-phases
1167 (add-after 'unpack 'fix-installation-prefix
1168 (lambda _
1169 (substitute* "CMakeLists.txt"
1170 (("/etc") "${CMAKE_INSTALL_PREFIX}/etc")))))))
1171 (inputs
1172 `(("gtk+" ,gtk+-2)
1173 ("imlib2" ,imlib2)
1174 ("librsvg" ,librsvg)
1175 ("libxcomposite" ,libxcomposite)
1176 ("libxdamage" ,libxdamage)
1177 ("libxft" ,libxft)
1178 ("libxinerama" ,libxinerama)
1179 ("libxrandr" ,libxrandr)
1180 ("startup-notification" ,startup-notification)))
1181 (native-inputs
1182 `(("gettext" ,gettext-minimal)
1183 ("pkg-config" ,pkg-config)))
1184 (home-page "https://gitlab.com/o9000/tint2")
1185 (synopsis "Lightweight task bar")
1186 (description
1187 "Tint2 is a simple task bar made for modern X window managers. It was
1188 specifically made for Openbox but it should also work with other window
1189 managers (GNOME, KDE, XFCE etc.).
1190
1191 The taskbar includes transparency and color settings for the font, icons,
1192 border, and background. It also supports multihead setups, customized mouse
1193 actions, a built-in clock, a battery monitor and a system tray.")
1194 (license license:gpl2)))
1195
1196 (define-public dzen
1197 (let ((commit "488ab66019f475e35e067646621827c18a879ba1")
1198 (revision "1"))
1199 (package
1200 (name "dzen")
1201 (version (string-append "0.9.5-" ; Taken from `config.mk`.
1202 revision "." (string-take commit 7)))
1203 (source (origin
1204 (method git-fetch)
1205 (uri (git-reference
1206 (url "https://github.com/robm/dzen.git")
1207 (commit commit)))
1208 (file-name (string-append name "-" version))
1209 (sha256
1210 (base32
1211 "0y47d6ii87vf4a517gi4fh0yl06f8b085sra77immnsasbq9pxnw"))))
1212 (build-system gnu-build-system)
1213 (arguments
1214 `(#:tests? #f ; No test suite.
1215 #:make-flags ; Replacement for `config.mk`.
1216 (list
1217 (string-append "VERSION = " ,version)
1218 (string-append "PREFIX = " %output)
1219 "MANPREFIX = ${PREFIX}/share/man"
1220 "INCS = -I."
1221 "LIBS = -lc -lX11 -lXinerama -lXpm $(shell pkg-config --libs xft)"
1222 "CFLAGS = -Wall -Os ${INCS} -DVERSION=\\\"${VERSION}\\\"\
1223 -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT $(shell pkg-config --cflags xft)"
1224 "LDFLAGS = ${LIBS}"
1225 "CC = gcc"
1226 "LD = ${CC}")
1227 #:phases
1228 (modify-phases %standard-phases
1229 (delete 'configure) ; No configuration script.
1230 ;; Use own make-flags instead of `config.mk`.
1231 (add-before 'build 'dont-include-config-mk
1232 (lambda _
1233 (substitute* "Makefile" (("include config.mk") ""))
1234 #t)))))
1235 (inputs
1236 `(("libx11" ,libx11)
1237 ("libxft" ,libxft)
1238 ("libxpm" ,libxpm)
1239 ("libxinerama" ,libxinerama)))
1240 (native-inputs `(("pkg-config" ,pkg-config)))
1241 (synopsis "General purpose messaging, notification and menuing program for X11")
1242 (description "Dzen is a general purpose messaging, notification and menuing
1243 program for X11. It was designed to be fast, tiny and scriptable in any language.")
1244 (home-page "https://github.com/robm/dzen")
1245 (license license:expat))))
1246
1247 (define-public xcb-util-xrm
1248 (package
1249 (name "xcb-util-xrm")
1250 (version "1.3")
1251 (source (origin
1252 (method url-fetch)
1253 (uri (string-append
1254 "https://github.com/Airblader/xcb-util-xrm/releases"
1255 "/download/v" version "/xcb-util-xrm-" version ".tar.bz2"))
1256 (sha256
1257 (base32
1258 "118cj1ybw86pgw0l5whn9vbg5n5b0ijcpx295mwahzi004vz671h"))
1259 (modules '((guix build utils)))
1260 (snippet
1261 ;; Drop bundled m4.
1262 '(delete-file-recursively "m4"))))
1263 (build-system gnu-build-system)
1264 (native-inputs
1265 `(("pkg-config" ,pkg-config)
1266 ("m4" ,m4)
1267 ("libx11" ,libx11))) ; for tests
1268 (inputs
1269 `(("libxcb" ,libxcb)
1270 ("xcb-util" ,xcb-util)))
1271 (home-page "https://github.com/Airblader/xcb-util-xrm")
1272 (synopsis "XCB utility functions for the X resource manager")
1273 (description
1274 "The XCB util module provides a number of libraries which sit on
1275 top of libxcb, the core X protocol library, and some of the extension
1276 libraries. These experimental libraries provide convenience functions
1277 and interfaces which make the raw X protocol more usable. Some of the
1278 libraries also provide client-side code which is not strictly part of
1279 the X protocol but which has traditionally been provided by Xlib.
1280
1281 XCB util-xrm module provides the following libraries:
1282
1283 - xrm: utility functions for the X resource manager.")
1284 (license license:x11)))
1285
1286 (define-public xcalib
1287 (package
1288 (name "xcalib")
1289 (version "0.8")
1290 (source (origin
1291 (method url-fetch)
1292 (uri (string-append "mirror://sourceforge/xcalib/xcalib/" version
1293 "/xcalib-source-" version ".tar.gz"))
1294 (sha256
1295 (base32
1296 "1rh6xb51c5xz926dnn82a2fn643g0sr4a8z66rn6yi7523kjw4ca"))))
1297 (build-system gnu-build-system)
1298 (arguments
1299 '(#:make-flags '("CC=gcc")
1300 #:tests? #f ; No test suite
1301 #:phases (modify-phases %standard-phases
1302 (delete 'configure)
1303 (replace 'install
1304 (lambda* (#:key outputs #:allow-other-keys)
1305 (let* ((out (assoc-ref outputs "out"))
1306 (bin (string-append out "/bin")))
1307 (install-file "xcalib" bin))))
1308 (add-after 'install 'install-doc
1309 (lambda* (#:key outputs #:allow-other-keys)
1310 (let ((doc (string-append(assoc-ref outputs "out")
1311 "/share/doc/xcalib")))
1312 (install-file "README" doc)
1313 ;; Avoid unspecified return value.
1314 #t))))))
1315 (inputs `(("libx11" ,libx11)
1316 ("libxext" ,libxext)
1317 ("libxxf86vm" ,libxxf86vm)))
1318 (synopsis "Tiny monitor calibration loader for XFree86 (or X.org)")
1319 (description "xcalib is a tiny tool to load the content of vcgt-Tags in ICC
1320 profiles to the video card's gamma ramp. It does work with most video card
1321 drivers except the generic VESA driver. Alter brightness, contrast, RGB, and
1322 invert colors on a specific display/screen.")
1323 (home-page "http://xcalib.sourceforge.net/")
1324 (license license:gpl2)))
1325
1326 (define-public nxbelld
1327 (package
1328 (name "nxbelld")
1329 (version "0.1.2")
1330 (source (origin
1331 (method git-fetch)
1332 (uri (git-reference
1333 (url "https://github.com/dusxmt/nxbelld.git")
1334 (commit version)))
1335 (sha256
1336 (base32
1337 "04qwhmjs51irinz5mjlxdb3dc6vr79dqmc5fkj80x1ll3ylh5n3z"))
1338 (file-name (git-file-name name version))))
1339 (build-system gnu-build-system)
1340 (arguments '(#:configure-flags `("--enable-sound"
1341 "--enable-wave"
1342 "--enable-alsa")
1343 #:phases (modify-phases %standard-phases
1344 (add-before 'configure 'autoreconf
1345 (lambda _
1346 (zero? (system* "autoreconf" "-vfi")))))))
1347 (native-inputs `(("autoconf" ,autoconf)
1348 ("automake" ,automake)
1349 ("pkg-config" ,pkg-config)
1350 ("perl" ,perl)))
1351 (inputs `(("libx11" ,libx11)
1352 ("alsa-lib" ,alsa-lib)))
1353 (synopsis "Daemon that performs an action every time the X11 bell is rung")
1354 (description "nxbelld is a tiny utility to aid people who either don't
1355 like the default PC speaker beep, or use a sound driver that doesn't have
1356 support for the PC speaker. The utility performs a given action every time
1357 the X bell is rung. The actions nxbelld can currently perform include running
1358 a specified program, emulating the PC speaker beep using the sound card (default),
1359 or playing a PCM encoded WAVE file.")
1360 (home-page "https://github.com/dusxmt/nxbelld")
1361 (license license:gpl3+)))
1362
1363 (define-public xautolock
1364 (package
1365 (name "xautolock")
1366 (version "2.2")
1367 (source (origin
1368 (method url-fetch)
1369 (uri (string-append "http://www.ibiblio.org/pub/linux/X11/screensavers/"
1370 name "-" version ".tgz"))
1371 (sha256
1372 (base32
1373 "18jd3k3pvlm5x1adyqw63z2b3f4ixh9mfvz9asvnskk3fm8jgw0i"))))
1374 (build-system gnu-build-system)
1375 (native-inputs
1376 `(("imake" ,imake)))
1377 (inputs
1378 `(("libx11" ,libx11)
1379 ("libxext" ,libxext)
1380 ("libxscrnsaver" ,libxscrnsaver)))
1381 (arguments
1382 `(#:tests? #f
1383 #:phases
1384 (modify-phases %standard-phases
1385 (replace 'configure
1386 (lambda* (#:key inputs outputs #:allow-other-keys)
1387 (let ((imake (assoc-ref inputs "imake"))
1388 (out (assoc-ref outputs "out")))
1389 ;; Generate Makefile
1390 (invoke "xmkmf")
1391 (substitute* "Makefile"
1392 ;; These imake variables somehow remain undefined
1393 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
1394 ;; Reset a few variable defaults that are set in imake templates
1395 ((imake) out)
1396 (("(MANPATH = )[[:graph:]]*" _ front)
1397 (string-append front out "/share/man")))
1398 ;; Old BSD-style 'union wait' is unneeded (defining
1399 ;; _USE_BSD did not seem to fix it)
1400 (substitute* "src/engine.c"
1401 (("union wait status") "int status = 0"))
1402 #t)))
1403 (add-after 'install 'install/man
1404 (lambda _
1405 (zero? (system* "make" "install.man")))))))
1406 (home-page "http://ibiblio.org/pub/Linux/X11/screensavers/")
1407 (synopsis "Program launcher for idle X sessions")
1408 (description "Xautolock monitors input devices under the X Window
1409 System, and launches a program of your choice if there is no activity after
1410 a user-configurable period of time.")
1411 (license license:gpl2)))
1412
1413 (define-public screen-message
1414 (package
1415 (name "screen-message")
1416 (version "0.25")
1417 (source (origin
1418 (method url-fetch)
1419 (uri (string-append
1420 "https://www.joachim-breitner.de/archive/screen-message"
1421 "/screen-message-" version ".tar.gz"))
1422 (sha256
1423 (base32
1424 "1lw955qq5pq010lzmaf32ylj2iprgsri9ih4hx672c3f794ilab0"))))
1425 (build-system gnu-build-system)
1426 (inputs `(("gtk3" ,gtk+)
1427 ("gdk" ,gdk-pixbuf)
1428 ("pango" ,pango)))
1429 (native-inputs `(("pkg-config" ,pkg-config)))
1430 (arguments
1431 ;; The default configure puts the 'sm' binary in games/ instead of bin/ -
1432 ;; this fixes it:
1433 `(#:make-flags (list (string-append "execgamesdir=" %output "/bin"))))
1434 (synopsis "Print messages on your screen")
1435 (description "@code{screen-message} is a tool for displaying text on
1436 your screen. It will make the text as large as possible and display it
1437 with black color on a white background (colors are configurable on the
1438 commandline).")
1439 (home-page "https://www.joachim-breitner.de/projects#screen-message")
1440 (license license:gpl2+)))