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