Merge branch 'master' into staging
[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, 2019 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.4")
168 (source (origin
169 (method url-fetch)
170 (uri (string-append "https://xkbcommon.org/download/libxkbcommon-"
171 version ".tar.xz"))
172 (sha256
173 (base32
174 "12vc91ydhphd5sddz15560r41l7k0i7mq6nma8kkbzdp6bwwzpb0"))))
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.97")
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 "08yimlp6jir1rs5ajgdx74xa5qdzcqahpdzdk0rmkmhh7vdcrl3p"))
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.9")
459 (source
460 (origin
461 (method git-fetch)
462 (uri
463 (git-reference
464 (url "https://github.com/resurrecting-open-source-projects/scrot.git")
465 (commit version)))
466 (sha256
467 (base32 "1dg0pnmk09p7zlbyxv7d40vf54amrv73y976ds5p7096x6lmlndy"))))
468 (build-system gnu-build-system)
469 (native-inputs
470 `(("autoconf" ,autoconf)
471 ("automake" ,automake)))
472 (inputs
473 `(("giblib" ,giblib)
474 ("libx11" ,libx11)))
475 (home-page "https://github.com/resurrecting-open-source-projects/scrot")
476 (synopsis "Command-line screen capture utility for X Window System")
477 (description
478 "Scrot allows to save a screenshot of a full screen, a window or a part
479 of the screen selected by mouse.")
480 ;; This license removes a clause about X Consortium from the original
481 ;; X11 license.
482 (license (license:x11-style "file://COPYING"
483 "See 'COPYING' in the distribution."))))
484
485 (define-public slop
486 (package
487 (name "slop")
488 (version "7.4")
489 (source (origin
490 (method git-fetch)
491 (uri (git-reference
492 (url "https://github.com/naelstrof/slop.git")
493 (commit (string-append "v" version))))
494 (file-name (git-file-name name version))
495 (sha256
496 (base32
497 "0fgd8a2dqkg64all0f96sca92sdss9r3pzmv5kck46b99z2325z6"))))
498 (build-system cmake-build-system)
499 (arguments
500 '(#:tests? #f)) ; no "check" target
501 (inputs
502 `(("glew" ,glew)
503 ("glm" ,glm)
504 ("icu4c" ,icu4c)
505 ("libxext" ,libxext)
506 ("libxrender" ,libxrender)
507 ("mesa" ,mesa)))
508 (home-page "https://github.com/naelstrof/slop")
509 (synopsis "Select a region and print its bounds to stdout")
510 (description
511 "slop (Select Operation) is a tool that queries for a selection from a
512 user and prints the region to stdout. It grabs the mouse and turns it into a
513 crosshair, lets the user click and drag to make a selection (or click on a
514 window) while drawing a pretty box around it, then finally prints the
515 selection's dimensions to stdout.")
516 (license license:gpl3+)))
517
518 (define-public maim
519 (package
520 (name "maim")
521 (version "5.5.2")
522 (source (origin
523 (method git-fetch)
524 (uri (git-reference
525 (url "https://github.com/naelstrof/maim.git")
526 (commit (string-append "v" version))))
527 (file-name (git-file-name name version))
528 (sha256
529 (base32
530 "14mfxdm39kc5jk8wysrzx05ag2g4sk9l24i8m5pzqn8j611150v3"))))
531 (build-system cmake-build-system)
532 (arguments
533 '(#:tests? #f)) ; no "check" target
534 (inputs
535 `(("glm" ,glm)
536 ("libjpeg" ,libjpeg-turbo)
537 ("libpng" ,libpng)
538 ("libxcomposite" ,libxcomposite)
539 ("libxfixes" ,libxfixes)
540 ("libxrandr" ,libxrandr)
541 ("mesa" ,mesa)
542 ("slop" ,slop)
543 ("zlib" ,zlib)))
544 (home-page "https://github.com/naelstrof/maim")
545 (synopsis "Screenshot utility for X Window System")
546 (description
547 "maim (Make Image) is a tool that takes screenshots of your desktop and
548 saves it in any format. Along with a full screen, it allows you to capture a
549 predefined region or a particular window. Also, it makes it possible to
550 include cursor in the resulting image.")
551 (license license:gpl3+)))
552
553 (define-public unclutter
554 (package
555 (name "unclutter")
556 (version "8")
557 (source (origin
558 (method url-fetch)
559 (uri (string-append
560 "http://ftp.x.org/contrib/utilities/unclutter-"
561 version ".tar.Z"))
562 (sha256
563 (base32
564 "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
565 (build-system gnu-build-system)
566 (arguments
567 '(#:tests? #f ; no check target
568 #:phases
569 (modify-phases %standard-phases
570 (delete 'configure)
571 (replace 'install
572 (lambda* (#:key inputs outputs #:allow-other-keys)
573 (let* ((out (assoc-ref outputs "out"))
574 (bin (string-append out "/bin"))
575 (man1 (string-append out "/share/man/man1")))
576 (mkdir-p bin)
577 (mkdir-p man1)
578 (invoke "make" "install" "install.man"
579 (string-append "BINDIR=" bin)
580 (string-append "MANDIR=" man1))))))))
581 (inputs `(("libx11" ,libx11)))
582 (home-page "http://ftp.x.org/contrib/utilities/")
583 (synopsis "Hide idle mouse cursor")
584 (description
585 "Unclutter is a program which runs permanently in the background of an
586 X11 session. It checks on the X11 pointer (cursor) position every few
587 seconds, and when it finds it has not moved (and no buttons are pressed
588 on the mouse, and the cursor is not in the root window) it creates a
589 small sub-window as a child of the window the cursor is in. The new
590 window installs a cursor of size 1x1 but a mask of all 0, i.e. an
591 invisible cursor. This allows you to see all the text in an xterm or
592 xedit, for example. The human factors crowd would agree it should make
593 things less distracting.")
594 (license license:public-domain)))
595
596 (define-public xautomation
597 (package
598 (name "xautomation")
599 (version "1.09")
600 (source
601 (origin
602 (method url-fetch)
603 (uri (string-append "https://www.hoopajoo.net/static/projects/"
604 "xautomation-" version ".tar.gz"))
605
606 (sha256
607 (base32
608 "03azv5wpg65h40ip2kk1kdh58vix4vy1r9bihgsq59jx2rhjr3zf"))))
609 (build-system gnu-build-system)
610 (inputs
611 `(("libpng" ,libpng)
612 ("libx11" ,libx11)
613 ("libxi" ,libxi)
614 ("libxtst" ,libxtst)))
615 (native-inputs
616 `(("xorgproto" ,xorgproto)))
617 (synopsis "Tools to automate tasks in X such as detecting on screen images")
618 (description
619 "Xautomation can control X from the command line for scripts, and
620 do visual scraping to find things on the screen. The control interface
621 allows mouse movement, clicking, button up/down, key up/down, etc, and
622 uses the XTest extension so you don't have the annoying problems that
623 xse has when apps ignore sent events. The visgrep program can find
624 images inside of images and reports the coordinates, allowing progams
625 to find buttons, etc, on the screen to click on.")
626 (home-page "https://www.hoopajoo.net/projects/xautomation.html")
627 (license license:gpl2+)))
628
629 (define-public xbanish
630 (package
631 (name "xbanish")
632 (version "1.6")
633 (home-page "https://github.com/jcs/xbanish")
634 (source (origin
635 (method git-fetch)
636 (uri (git-reference (url home-page)
637 (commit (string-append "v" version))))
638 (sha256
639 (base32
640 "0vp8ja68hpmqkl61zyjar3czhmny1hbm74m8f393incfz1ymr3i8"))))
641 (build-system gnu-build-system)
642 (arguments
643 `(#:tests? #f ;no tests
644 #:make-flags (list "CC=gcc"
645 (string-append "PREFIX=" (assoc-ref %outputs "out")))
646 #:phases (modify-phases %standard-phases
647 (delete 'configure))))
648 (inputs
649 `(("libx11" ,libx11)
650 ("libxfixes" ,libxfixes)
651 ("libxi" ,libxi)
652 ("libxt" ,libxt)))
653 (synopsis "Banish the mouse cursor")
654 (description
655 "@command{xbanish} hides the mouse cursor when you start typing, and
656 shows it again when the mouse cursor moves or a mouse button is pressed.")
657 (license license:bsd-3)))
658
659 (define-public xlockmore
660 (package
661 (name "xlockmore")
662 (version "5.56")
663 (source (origin
664 (method url-fetch)
665 (uri (list (string-append "http://sillycycle.com/xlock/"
666 name "-" version ".tar.xz")
667 ;; Previous releases are moved to a subdirectory.
668 (string-append "http://sillycycle.com/xlock/"
669 "recent-releases/"
670 name "-" version ".tar.xz")))
671 (sha256
672 (base32
673 "1dg1n79rnswhxqz36mxnl5lp8p37i9fbibnzzyrqknmvf2s8xpd0"))))
674 (build-system gnu-build-system)
675 (arguments
676 '(#:configure-flags (list (string-append "--enable-appdefaultdir="
677 (assoc-ref %outputs "out")
678 "/lib/X11/app-defaults"))
679 #:tests? #f)) ;no such thing as a test suite
680 (inputs
681 `(("libX11" ,libx11)
682 ("libXext" ,libxext)
683 ("libXt" ,libxt)
684 ("linux-pam" ,linux-pam)))
685 (home-page "http://sillycycle.com/xlockmore.html")
686 (synopsis "Screen locker for the X Window System")
687 (description
688 "XLockMore is a classic screen locker and screen saver for the
689 X Window System.")
690 (license (license:non-copyleft #f "See xlock.c.")
691 ))) ; + GPLv2 in modes/glx/biof.c.
692
693 (define-public xosd
694 (package
695 (name "xosd")
696 (version "2.2.14")
697 (source (origin
698 (method url-fetch)
699 (uri (string-append
700 "mirror://sourceforge/libxosd/libxosd/xosd-" version "/"
701 name "-" version ".tar.gz"))
702 (sha256
703 (base32
704 "025m7ha89q29swkc7s38knnbn8ysl24g2h5s7imfxflm91psj7sg"))))
705 (build-system gnu-build-system)
706 (arguments
707 '(#:configure-flags
708 (list (string-append "--mandir=" %output "/share/man"))))
709 (inputs
710 `(("libx11" ,libx11)
711 ("libxt" ,libxt)
712 ("libxext" ,libxext)
713 ("libxinerama" ,libxinerama)))
714 (home-page "https://sourceforge.net/projects/libxosd/")
715 (synopsis "X On Screen Display")
716 (description
717 "XOSD provides a C library and a simple utility (osd_cat) for displaying
718 transparent text on your screen.")
719 (license license:gpl2+)))
720
721 (define-public xbindkeys
722 (package
723 (name "xbindkeys")
724 (version "1.8.6")
725 (source (origin
726 (method url-fetch)
727 ;; Download from the savannah mirror list fails
728 (uri (string-append
729 "http://www.nongnu.org/xbindkeys/xbindkeys-"
730 version
731 ".tar.gz"))
732 (sha256
733 (base32
734 "060df6d8y727jp1inp7blp44cs8a7jig7vcm8ndsn6gw36z1h3bc"))))
735 (build-system gnu-build-system)
736 (inputs
737 `(("libx11" ,libx11)
738 ("guile" ,guile-2.0)))
739 (home-page "https://www.nongnu.org/xbindkeys/")
740 (synopsis "Associate a combination of keys with a shell command")
741 (description
742 "XBindKeys is a program that allows you to launch shell commands with
743 your keyboard or your mouse under the X Window System. It links commands to
744 keys or mouse buttons, using a configuration file. It's independent of the
745 window manager and can capture all keyboard keys (ex: Power, Wake...). It
746 optionally supports a Guile-based configuration file layout, which enables you
747 to access all XBindKeys internals, so you can have key combinations, double
748 clicks or timed double clicks take actions. Also all functions that work in
749 Guile will work for XBindKeys.")
750 (license license:gpl2+)))
751
752 (define-public sxhkd
753 (package
754 (name "sxhkd")
755 (version "0.5.9")
756 (source
757 (origin
758 (method git-fetch)
759 (uri (git-reference
760 (url "https://github.com/baskerville/sxhkd")
761 (commit version)))
762 (sha256
763 (base32
764 "0cw547x7vky55k3ksrmzmrra4zhslqcwq9xw0y4cmbvy4s1qf64v"))))
765 (build-system gnu-build-system)
766 (inputs
767 `(("asciidoc" ,asciidoc)
768 ("libxcb" ,libxcb)
769 ("xcb-util" ,xcb-util)
770 ("xcb-util-keysyms" ,xcb-util-keysyms)
771 ("xcb-util-wm" ,xcb-util-wm)))
772 (arguments
773 `(#:phases (modify-phases %standard-phases (delete 'configure))
774 #:tests? #f ; no check target
775 #:make-flags
776 (list "CC=gcc"
777 (string-append "PREFIX=" %output)
778 ;; Keep the documentation where the build system installs LICENSE.
779 (string-append "DOCPREFIX=" %output
780 "/share/doc/" ,name "-" ,version))))
781 (home-page "https://github.com/baskerville/sxhkd")
782 (synopsis "Simple X hotkey daemon")
783 (description "sxhkd is a simple X hotkey daemon with a powerful and
784 compact configuration syntax.")
785 (license license:bsd-2)))
786
787 (define-public rxvt-unicode
788 (package
789 (name "rxvt-unicode")
790 (version "9.22")
791 (source (origin
792 (method url-fetch)
793 (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/"
794 name "-" version ".tar.bz2"))
795 (patches (search-patches "rxvt-unicode-escape-sequences.patch"))
796 (sha256
797 (base32
798 "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"))))
799 (build-system gnu-build-system)
800 (arguments
801 ;; This sets the destination when installing the necessary terminal
802 ;; capability data, which are not provided by 'ncurses'. See
803 ;; https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html
804 `(#:make-flags (list (string-append "TERMINFO="
805 (assoc-ref %outputs "out")
806 "/share/terminfo"))
807 #:phases
808 (modify-phases %standard-phases
809 (add-after 'install 'install-desktop-urxvt
810 (lambda* (#:key outputs #:allow-other-keys)
811 (let* ((output (assoc-ref outputs "out"))
812 (desktop (string-append output "/share/applications")))
813 (mkdir-p desktop)
814 (with-output-to-file
815 (string-append desktop "/urxvt.desktop")
816 (lambda _
817 (format #t
818 "[Desktop Entry]~@
819 Name=rxvt-unicode~@
820 Comment=~@
821 Exec=~a/bin/urxvt~@
822 TryExec=~@*~a/bin/urxvt~@
823 Icon=~@
824 Type=Application~%"
825 output)))
826 #t)))
827 (add-after 'install 'install-desktop-urxvtc
828 (lambda* (#:key outputs #:allow-other-keys)
829 (let* ((output (assoc-ref outputs "out"))
830 (desktop (string-append output "/share/applications")))
831 (mkdir-p desktop)
832 (with-output-to-file
833 (string-append desktop "/urxvtc.desktop")
834 (lambda _
835 (format #t
836 "[Desktop Entry]~@
837 Name=rxvt-unicode (client)~@
838 Comment=Rxvt clone with XFT and unicode support~@
839 Exec=~a/bin/urxvtc~@
840 TryExec=~@*~a/bin/urxvtc~@
841 Icon=~@
842 Type=Application~%"
843 output)))
844 #t))))))
845 (inputs
846 `(("libXft" ,libxft)
847 ("libX11" ,libx11)))
848 (native-inputs
849 `(("ncurses" ,ncurses) ;trigger the installation of terminfo data
850 ("perl" ,perl)
851 ("pkg-config" ,pkg-config)))
852 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
853 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
854 (native-search-paths
855 (list (search-path-specification
856 (variable "TERMINFO_DIRS")
857 (files '("share/terminfo")))))
858 (home-page "http://software.schmorp.de/pkg/rxvt-unicode.html")
859 (synopsis "Rxvt clone with XFT and unicode support")
860 (description "Rxvt-unicode (urxvt) is a colour vt102 terminal emulator
861 intended as an xterm replacement for users who do not require features such as
862 Tektronix 4014 emulation and toolkit-style configurability. It supports
863 unicode, XFT and may be extended with Perl plugins. It also comes with a
864 client/daemon pair that lets you open any number of terminal windows from
865 within a single process.")
866 (license license:gpl3+)))
867
868 (define-public xcape
869 (package
870 (name "xcape")
871 (version "1.2")
872 (source (origin
873 (method git-fetch)
874 (uri (git-reference
875 (url "https://github.com/alols/xcape.git")
876 (commit (string-append "v" version))))
877 (file-name (git-file-name name version))
878 (sha256
879 (base32
880 "09a05cxgrip6nqy1qmwblamp2bhknqnqmxn7i2a1rgxa0nba95dm"))))
881 (build-system gnu-build-system)
882 (arguments
883 `(#:tests? #f ; no check target
884 ;; no configure script
885 #:phases (modify-phases %standard-phases (delete 'configure))
886 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
887 "MANDIR=/share/man/man1"
888 "CC=gcc")))
889 (inputs
890 `(("libxtst" ,libxtst)
891 ("libx11" ,libx11)))
892 (native-inputs
893 `(("pkg-config" ,pkg-config)))
894 (home-page "https://github.com/alols/xcape")
895 (synopsis "Use a modifier key in X.org as another key")
896 (description
897 "This utility for X.org allows to use modifier key as another key when
898 pressed and released on its own. The default behaviour is to generate the
899 Escape key when Left Control is pressed and released on its own.")
900 (license license:gpl3+)))
901
902 (define-public libwacom
903 (package
904 (name "libwacom")
905 (version "0.32")
906 (source (origin
907 (method url-fetch)
908 (uri (string-append
909 "https://github.com/linuxwacom/libwacom/releases/download/"
910 "libwacom-" version "/libwacom-" version ".tar.bz2"))
911 (sha256
912 (base32
913 "102kz0q7i0bjsnl6yy83vcj2rpir12rs2d4xr0wvhw84rs5sp7bb"))))
914 (build-system glib-or-gtk-build-system)
915 (native-inputs
916 `(("pkg-config" ,pkg-config)))
917 (inputs
918 `(("gtk+" ,gtk+)
919 ("libgudev" ,libgudev)
920 ("eudev" ,eudev)
921 ("libxml2" ,libxml2)))
922 (propagated-inputs
923 ;; libwacom includes header files that include GLib, and libinput uses
924 ;; those header files.
925 `(("glib" ,glib)))
926 (home-page "https://linuxwacom.github.io/")
927 (synopsis "Helper library for Wacom tablet settings")
928 (description
929 "Libwacom is a library to help implement Wacom tablet settings. It is
930 intended to be used by client-programs that need model identification. It is
931 already being used by the gnome-settings-daemon and the GNOME Control Center
932 Wacom tablet applet.")
933 (license license:x11)))
934
935 (define-public xf86-input-wacom
936 (package
937 (name "xf86-input-wacom")
938 (version "0.36.1")
939 (source
940 (origin
941 (method url-fetch)
942 (uri (string-append
943 "https://github.com/linuxwacom/xf86-input-wacom/releases/download/"
944 name "-" version "/" name "-" version ".tar.bz2"))
945 (sha256
946 (base32
947 "029y8varbricba2dzhzhy0ndd7lbfif411ca8c3wxzni9qmbj1ij"))))
948 (arguments
949 `(#:configure-flags
950 (list (string-append "--with-sdkdir="
951 (assoc-ref %outputs "out")
952 "/include/xorg")
953 (string-append "--with-xorg-conf-dir="
954 (assoc-ref %outputs "out")
955 "/share/X11/xorg.conf.d"))))
956 (build-system gnu-build-system)
957 (native-inputs
958 `(("pkg-config" ,pkg-config)))
959 (inputs
960 `(("xorg-server" ,xorg-server)
961 ("libxrandr" ,libxrandr)
962 ("libxinerama" ,libxinerama)
963 ("libxi" ,libxi)
964 ("eudev" ,eudev)))
965 (home-page "https://linuxwacom.github.io/")
966 (synopsis "Wacom input driver for X")
967 (description
968 "The xf86-input-wacom driver is the wacom-specific X11 input driver for
969 the X.Org X Server version 1.7 and later (X11R7.5 or later).")
970 (license license:x11)))
971
972 (define-public redshift
973 (package
974 (name "redshift")
975 (version "1.12")
976 (source
977 (origin
978 (method url-fetch)
979 (uri
980 (string-append "https://github.com/jonls/redshift/"
981 "releases/download/v" version
982 "/redshift-" version ".tar.xz"))
983 (sha256
984 (base32
985 "1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
986 (build-system gnu-build-system)
987 (native-inputs
988 `(("pkg-config" ,pkg-config)
989 ("intltool" ,intltool)))
990 (inputs
991 `(("libdrm" ,libdrm)
992 ("libx11" ,libx11)
993 ("libxcb" ,libxcb)
994 ("libxxf86vm" ,libxxf86vm)
995 ("glib" ,glib))) ; for Geoclue2 support
996 (home-page "https://github.com/jonls/redshift")
997 (synopsis "Adjust the color temperature of your screen")
998 (description
999 "Redshift adjusts the color temperature according to the position of the
1000 sun. A different color temperature is set during night and daytime. During
1001 twilight and early morning, the color temperature transitions smoothly from
1002 night to daytime temperature to allow your eyes to slowly adapt. At night the
1003 color temperature should be set to match the lamps in your room.")
1004 (license license:gpl3+)))
1005
1006 (define-public xscreensaver
1007 (package
1008 (name "xscreensaver")
1009 (version "5.42")
1010 (source
1011 (origin
1012 (method url-fetch)
1013 (uri
1014 (string-append "https://www.jwz.org/xscreensaver/xscreensaver-"
1015 version ".tar.gz"))
1016 (sha256
1017 (base32
1018 "1qfbsnj7201d03vf0b2lzxmlcq4kvkvzp48r5gcgsjr17c1sl7a4"))))
1019 (build-system gnu-build-system)
1020 (arguments
1021 `(#:tests? #f ; no check target
1022 #:phases
1023 (modify-phases %standard-phases
1024 (add-before 'configure 'adjust-gtk-resource-paths
1025 (lambda _
1026 (substitute* '("driver/Makefile.in" "po/Makefile.in.in")
1027 (("@GTK_DATADIR@") "@datadir@")
1028 (("@PO_DATADIR@") "@datadir@"))
1029 #t)))
1030 #:configure-flags '("--with-pam" "--with-proc-interrupts"
1031 "--without-readdisplay")
1032 ;; FIXME: Remove CFLAGS once our default compiler is GCC6 or later.
1033 #:make-flags (list "CFLAGS=-std=c99"
1034 (string-append "AD_DIR="
1035 (assoc-ref %outputs "out")
1036 "/usr/lib/X11/app-defaults"))))
1037 (native-inputs
1038 `(("pkg-config" ,pkg-config)
1039 ("intltool" ,intltool)))
1040 (inputs
1041 `(("libx11" ,libx11)
1042 ("libxext" ,libxext)
1043 ("libxi" ,libxi)
1044 ("libxt" ,libxt)
1045 ("libxft" ,libxft)
1046 ("libxmu" ,libxmu)
1047 ("libxpm" ,libxpm)
1048 ("libglade" ,libglade)
1049 ("libxml2" ,libxml2)
1050 ("libsm" ,libsm)
1051 ("libjpeg" ,libjpeg)
1052 ("linux-pam" ,linux-pam)
1053 ("pango" ,pango)
1054 ("gtk+" ,gtk+)
1055 ("perl" ,perl)
1056 ("cairo" ,cairo)
1057 ("bc" ,bc)
1058 ("libxrandr" ,libxrandr)
1059 ("glu" ,glu)
1060 ("glib" ,glib)))
1061 (home-page "https://www.jwz.org/xscreensaver/")
1062 (synopsis "Classic screen saver suite supporting screen locking")
1063 (description
1064 "xscreensaver is a popular screen saver collection with many entertaining
1065 demos. It also acts as a nice screen locker.")
1066 ;; xscreensaver doesn't have a single copyright file and instead relies on
1067 ;; source comment headers, though most files have the same lax
1068 ;; permissions. To reduce complexity, we're pointing at Debian's
1069 ;; breakdown of the copyright information.
1070 (license (license:non-copyleft
1071 (string-append
1072 "http://metadata.ftp-master.debian.org/changelogs/"
1073 "/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
1074
1075 (define-public xsel
1076 (package
1077 (name "xsel")
1078 (version "1.2.0")
1079 (source (origin
1080 (method url-fetch)
1081 (uri (string-append "http://www.vergenet.net/~conrad/software"
1082 "/xsel/download/xsel-" version ".tar.gz"))
1083 (sha256
1084 (base32
1085 "070lbcpw77j143jrbkh0y1v10ppn1jwmjf92800w7x42vh4cw9xr"))))
1086 (build-system gnu-build-system)
1087 (inputs
1088 `(("libxt" ,libxt)))
1089 (home-page "http://www.vergenet.net/~conrad/software/xsel/")
1090 (synopsis "Manipulate X selection")
1091 (description
1092 "XSel is a command-line program for getting and setting the contents of
1093 the X selection. Normally this is only accessible by manually highlighting
1094 information and pasting it with the middle mouse button.
1095
1096 XSel reads from standard input and writes to standard output by default,
1097 but can also follow a growing file, display contents, delete entries and more.")
1098 (license (license:x11-style "file://COPYING"
1099 "See COPYING in the distribution."))))
1100
1101 (define-public xdpyprobe
1102 (package
1103 (name "xdpyprobe")
1104 (version "0.1")
1105 (source (origin
1106 (method url-fetch)
1107 (uri (string-append "https://github.com/alezost/" name
1108 "/releases/download/v" version
1109 "/" name "-" version ".tar.gz"))
1110 (sha256
1111 (base32
1112 "1h09wd2qcg08rj5hcakvdh9q01hkrj8vxly94ax3ch2x06lm0zq8"))))
1113 (build-system gnu-build-system)
1114 (inputs
1115 `(("libx11" ,libx11)))
1116 (home-page "https://github.com/alezost/xdpyprobe")
1117 (synopsis "Probe X server for connectivity")
1118 (description
1119 "Xdpyprobe is a tiny C program whose only purpose is to probe a
1120 connectivity of the X server running on a particular @code{DISPLAY}.")
1121 (license license:gpl3+)))
1122
1123 (define-public rofi
1124 (package
1125 (name "rofi")
1126 (version "1.5.2")
1127 (source (origin
1128 (method url-fetch)
1129 (uri (string-append "https://github.com/DaveDavenport/rofi/"
1130 "releases/download/"
1131 version "/rofi-" version ".tar.xz"))
1132 (sha256
1133 (base32
1134 "17faa0rj8vqidrijwx9jrq0c29003n8v3izvc66yssfljgb8kcpj"))))
1135 (build-system gnu-build-system)
1136 (inputs
1137 `(("pango" ,pango)
1138 ("cairo" ,cairo)
1139 ("glib" ,glib)
1140 ("startup-notification" ,startup-notification)
1141 ("librsvg" ,librsvg)
1142 ("libxkbcommon" ,libxkbcommon)
1143 ("libxcb" ,libxcb)
1144 ("xcb-util" ,xcb-util)
1145 ("xcb-util-xrm" ,xcb-util-xrm)
1146 ("xcb-util-wm" ,xcb-util-wm)))
1147 (native-inputs
1148 `(("bison" ,bison)
1149 ("check" ,check)
1150 ("flex" ,flex)
1151 ("glib:bin" ,glib "bin")
1152 ("pkg-config" ,pkg-config)))
1153 (arguments
1154 `(#:parallel-tests? #f ; May fail in some circumstances.
1155 #:phases
1156 (modify-phases %standard-phases
1157 (add-before 'configure 'adjust-tests
1158 (lambda _
1159 (substitute* '("test/helper-expand.c")
1160 (("~root") "/root")
1161 (("~") "")
1162 (("g_get_home_dir \\(\\)") "\"/\""))
1163 #t)))))
1164 (home-page "https://github.com/DaveDavenport/rofi")
1165 (synopsis "Application launcher")
1166 (description "Rofi is a minimalist application launcher. It memorizes which
1167 applications you regularly use and also allows you to search for an application
1168 by name.")
1169 (license license:expat)))
1170
1171 (define-public tint2
1172 (package
1173 (name "tint2")
1174 (version "0.14.6")
1175 (source (origin
1176 (method url-fetch)
1177 (uri (string-append "https://gitlab.com/o9000/" name
1178 "/repository/archive.tar.gz?ref=" version))
1179 (file-name (string-append name "-" version ".tar.gz"))
1180 (sha256
1181 (base32
1182 "1kwzwxy4myagybm3rc7dgynfgp75742n348qibn1p2an9ggyivda"))))
1183 (build-system cmake-build-system)
1184 (arguments
1185 '(#:tests? #f ;no test target
1186 #:phases
1187 (modify-phases %standard-phases
1188 (add-after 'unpack 'fix-installation-prefix
1189 (lambda _
1190 (substitute* "CMakeLists.txt"
1191 (("/etc") "${CMAKE_INSTALL_PREFIX}/etc"))
1192 #t)))))
1193 (inputs
1194 `(("gtk+" ,gtk+-2)
1195 ("imlib2" ,imlib2)
1196 ("librsvg" ,librsvg)
1197 ("libxcomposite" ,libxcomposite)
1198 ("libxdamage" ,libxdamage)
1199 ("libxft" ,libxft)
1200 ("libxinerama" ,libxinerama)
1201 ("libxrandr" ,libxrandr)
1202 ("startup-notification" ,startup-notification)))
1203 (native-inputs
1204 `(("gettext" ,gettext-minimal)
1205 ("pkg-config" ,pkg-config)))
1206 (home-page "https://gitlab.com/o9000/tint2")
1207 (synopsis "Lightweight task bar")
1208 (description
1209 "Tint2 is a simple task bar made for modern X window managers. It was
1210 specifically made for Openbox but it should also work with other window
1211 managers (GNOME, KDE, XFCE etc.).
1212
1213 The taskbar includes transparency and color settings for the font, icons,
1214 border, and background. It also supports multihead setups, customized mouse
1215 actions, a built-in clock, a battery monitor and a system tray.")
1216 (license license:gpl2)))
1217
1218 (define-public dzen
1219 (let ((commit "488ab66019f475e35e067646621827c18a879ba1")
1220 (revision "1"))
1221 (package
1222 (name "dzen")
1223 (version (string-append "0.9.5-" ; Taken from `config.mk`.
1224 revision "." (string-take commit 7)))
1225 (source (origin
1226 (method git-fetch)
1227 (uri (git-reference
1228 (url "https://github.com/robm/dzen.git")
1229 (commit commit)))
1230 (file-name (string-append name "-" version))
1231 (sha256
1232 (base32
1233 "0y47d6ii87vf4a517gi4fh0yl06f8b085sra77immnsasbq9pxnw"))))
1234 (build-system gnu-build-system)
1235 (arguments
1236 `(#:tests? #f ; No test suite.
1237 #:make-flags ; Replacement for `config.mk`.
1238 (list
1239 (string-append "VERSION = " ,version)
1240 (string-append "PREFIX = " %output)
1241 "MANPREFIX = ${PREFIX}/share/man"
1242 "INCS = -I."
1243 "LIBS = -lc -lX11 -lXinerama -lXpm $(shell pkg-config --libs xft)"
1244 "CFLAGS = -Wall -Os ${INCS} -DVERSION=\\\"${VERSION}\\\"\
1245 -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT $(shell pkg-config --cflags xft)"
1246 "LDFLAGS = ${LIBS}"
1247 "CC = gcc"
1248 "LD = ${CC}")
1249 #:phases
1250 (modify-phases %standard-phases
1251 (delete 'configure) ; No configuration script.
1252 ;; Use own make-flags instead of `config.mk`.
1253 (add-before 'build 'dont-include-config-mk
1254 (lambda _
1255 (substitute* "Makefile" (("include config.mk") ""))
1256 #t)))))
1257 (inputs
1258 `(("libx11" ,libx11)
1259 ("libxft" ,libxft)
1260 ("libxpm" ,libxpm)
1261 ("libxinerama" ,libxinerama)))
1262 (native-inputs `(("pkg-config" ,pkg-config)))
1263 (synopsis "General purpose messaging, notification and menuing program for X11")
1264 (description "Dzen is a general purpose messaging, notification and menuing
1265 program for X11. It was designed to be fast, tiny and scriptable in any language.")
1266 (home-page "https://github.com/robm/dzen")
1267 (license license:expat))))
1268
1269 (define-public xcb-util-xrm
1270 (package
1271 (name "xcb-util-xrm")
1272 (version "1.3")
1273 (source (origin
1274 (method url-fetch)
1275 (uri (string-append
1276 "https://github.com/Airblader/xcb-util-xrm/releases"
1277 "/download/v" version "/xcb-util-xrm-" version ".tar.bz2"))
1278 (sha256
1279 (base32
1280 "118cj1ybw86pgw0l5whn9vbg5n5b0ijcpx295mwahzi004vz671h"))
1281 (modules '((guix build utils)))
1282 (snippet
1283 ;; Drop bundled m4.
1284 '(begin
1285 (delete-file-recursively "m4")
1286 #t))))
1287 (build-system gnu-build-system)
1288 (native-inputs
1289 `(("pkg-config" ,pkg-config)
1290 ("m4" ,m4)
1291 ("libx11" ,libx11))) ; for tests
1292 (inputs
1293 `(("libxcb" ,libxcb)
1294 ("xcb-util" ,xcb-util)))
1295 (home-page "https://github.com/Airblader/xcb-util-xrm")
1296 (synopsis "XCB utility functions for the X resource manager")
1297 (description
1298 "The XCB util module provides a number of libraries which sit on
1299 top of libxcb, the core X protocol library, and some of the extension
1300 libraries. These experimental libraries provide convenience functions
1301 and interfaces which make the raw X protocol more usable. Some of the
1302 libraries also provide client-side code which is not strictly part of
1303 the X protocol but which has traditionally been provided by Xlib.
1304
1305 XCB util-xrm module provides the following libraries:
1306
1307 - xrm: utility functions for the X resource manager.")
1308 (license license:x11)))
1309
1310 (define-public xcalib
1311 (package
1312 (name "xcalib")
1313 (version "0.10")
1314 (home-page "https://github.com/OpenICC/xcalib")
1315 (source (origin
1316 (method git-fetch)
1317 (uri (git-reference
1318 (url home-page)
1319 (commit version)))
1320 (sha256
1321 (base32
1322 "05fzdjmhiafgi2jf0k41i3nm0837a78sb6yv59cwc23nla8g0bhr"))
1323 (patches
1324 (list
1325 ;; Add missing documentation for the new --output option.
1326 ;; This upstream patch can be removed on the next update.
1327 (origin
1328 (method url-fetch)
1329 (uri (string-append
1330 home-page "/commit/"
1331 "ae03889b91fe984b18e925ad2b5e6f2f7354e058.patch"))
1332 (file-name "xcalib-update-man-page.patch")
1333 (sha256
1334 (base32
1335 "0f7b4d5484x4b9n1bwhqmar0kcaa029ffff7bp3xpr734n1qgqb6")))))))
1336 (build-system cmake-build-system)
1337 (arguments
1338 '(#:tests? #f)) ; no test suite
1339 (inputs `(("libx11" ,libx11)
1340 ("libxext" ,libxext)
1341 ("libxrandr" ,libxrandr)
1342 ("libxxf86vm" ,libxxf86vm)))
1343 (synopsis "Tiny monitor calibration loader for XFree86 (or X.org)")
1344 (description "xcalib is a tiny tool to load the content of vcgt-Tags in ICC
1345 profiles to the video card's gamma ramp. It does work with most video card
1346 drivers except the generic VESA driver. Alter brightness, contrast, RGB, and
1347 invert colors on a specific display/screen.")
1348 (license license:gpl2)))
1349
1350 (define-public nxbelld
1351 (package
1352 (name "nxbelld")
1353 (version "0.1.2")
1354 (source (origin
1355 (method git-fetch)
1356 (uri (git-reference
1357 (url "https://github.com/dusxmt/nxbelld.git")
1358 (commit version)))
1359 (sha256
1360 (base32
1361 "04qwhmjs51irinz5mjlxdb3dc6vr79dqmc5fkj80x1ll3ylh5n3z"))
1362 (file-name (git-file-name name version))))
1363 (build-system gnu-build-system)
1364 (arguments '(#:configure-flags `("--enable-sound"
1365 "--enable-wave"
1366 "--enable-alsa")))
1367 (native-inputs `(("autoconf" ,autoconf)
1368 ("automake" ,automake)
1369 ("pkg-config" ,pkg-config)
1370 ("perl" ,perl)))
1371 (inputs `(("libx11" ,libx11)
1372 ("alsa-lib" ,alsa-lib)))
1373 (synopsis "Daemon that performs an action every time the X11 bell is rung")
1374 (description "nxbelld is a tiny utility to aid people who either don't
1375 like the default PC speaker beep, or use a sound driver that doesn't have
1376 support for the PC speaker. The utility performs a given action every time
1377 the X bell is rung. The actions nxbelld can currently perform include running
1378 a specified program, emulating the PC speaker beep using the sound card (default),
1379 or playing a PCM encoded WAVE file.")
1380 (home-page "https://github.com/dusxmt/nxbelld")
1381 (license license:gpl3+)))
1382
1383 (define-public xautolock
1384 (package
1385 (name "xautolock")
1386 (version "2.2")
1387 (source (origin
1388 (method url-fetch)
1389 (uri (string-append "http://www.ibiblio.org/pub/linux/X11/screensavers/"
1390 name "-" version ".tgz"))
1391 (sha256
1392 (base32
1393 "18jd3k3pvlm5x1adyqw63z2b3f4ixh9mfvz9asvnskk3fm8jgw0i"))))
1394 (build-system gnu-build-system)
1395 (native-inputs
1396 `(("imake" ,imake)))
1397 (inputs
1398 `(("libx11" ,libx11)
1399 ("libxext" ,libxext)
1400 ("libxscrnsaver" ,libxscrnsaver)))
1401 (arguments
1402 `(#:tests? #f
1403 #:phases
1404 (modify-phases %standard-phases
1405 (replace 'configure
1406 (lambda* (#:key inputs outputs #:allow-other-keys)
1407 (let ((imake (assoc-ref inputs "imake"))
1408 (out (assoc-ref outputs "out")))
1409 ;; Generate Makefile
1410 (invoke "xmkmf")
1411 (substitute* "Makefile"
1412 ;; These imake variables somehow remain undefined
1413 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
1414 ;; Reset a few variable defaults that are set in imake templates
1415 ((imake) out)
1416 (("(MANPATH = )[[:graph:]]*" _ front)
1417 (string-append front out "/share/man")))
1418 ;; Old BSD-style 'union wait' is unneeded (defining
1419 ;; _USE_BSD did not seem to fix it)
1420 (substitute* "src/engine.c"
1421 (("union wait status") "int status = 0"))
1422 #t)))
1423 (add-after 'install 'install/man
1424 (lambda _
1425 (invoke "make" "install.man"))))))
1426 (home-page "http://ibiblio.org/pub/Linux/X11/screensavers/")
1427 (synopsis "Program launcher for idle X sessions")
1428 (description "Xautolock monitors input devices under the X Window
1429 System, and launches a program of your choice if there is no activity after
1430 a user-configurable period of time.")
1431 (license license:gpl2)))
1432
1433 (define-public screen-message
1434 (package
1435 (name "screen-message")
1436 (version "0.25")
1437 (source (origin
1438 (method url-fetch)
1439 (uri (string-append
1440 "https://www.joachim-breitner.de/archive/screen-message"
1441 "/screen-message-" version ".tar.gz"))
1442 (sha256
1443 (base32
1444 "1lw955qq5pq010lzmaf32ylj2iprgsri9ih4hx672c3f794ilab0"))))
1445 (build-system gnu-build-system)
1446 (inputs `(("gtk3" ,gtk+)
1447 ("gdk" ,gdk-pixbuf)
1448 ("pango" ,pango)))
1449 (native-inputs `(("pkg-config" ,pkg-config)))
1450 (arguments
1451 ;; The default configure puts the 'sm' binary in games/ instead of bin/ -
1452 ;; this fixes it:
1453 `(#:make-flags (list (string-append "execgamesdir=" %output "/bin"))))
1454 (synopsis "Print messages on your screen")
1455 (description "@code{screen-message} is a tool for displaying text on
1456 your screen. It will make the text as large as possible and display it
1457 with black color on a white background (colors are configurable on the
1458 commandline).")
1459 (home-page "https://www.joachim-breitner.de/projects#screen-message")
1460 (license license:gpl2+)))
1461
1462 (define-public xss-lock
1463 ;; xss-lock does not seem to be maintained any longer, but the last commits
1464 ;; fix important issues so we package them.
1465 (let ((version "0.3.0")
1466 (revision "1")
1467 (commit "1e158fb20108058dbd62bd51d8e8c003c0a48717"))
1468 (package
1469 (name "xss-lock")
1470 (version (git-version version revision commit))
1471 (source (origin
1472 (method git-fetch)
1473 (uri (git-reference
1474 (url "https://bitbucket.org/raymonad/xss-lock.git")
1475 (commit commit)))
1476 (file-name (git-file-name name version))
1477 (sha256
1478 (base32
1479 "10hx7k7ga8g08akwz8qrsvj8iqr5nd4siiva6sjx789jvf0sak7r"))))
1480 (build-system cmake-build-system)
1481 (inputs `(("glib" ,glib)
1482 ("xcb-util" ,xcb-util)))
1483 (native-inputs
1484 `(("python-docutils" ,python-docutils)
1485 ("pkg-config" ,pkg-config)))
1486 (arguments
1487 `(#:tests? #f))
1488 (synopsis "Use external screen locker on events")
1489 (description "@code{xss-lock} listens to X signals to fire up a
1490 user-defined screensaver. In effect this allows to automatically lock the
1491 screen when closing a laptop lid or after a period of user inactivity (as set
1492 with @code{xset s TIMEOUT}). The notifier command, if specified, is executed
1493 first. Additionally, xss-lock uses the inhibition logic to lock the screen
1494 before the system goes to sleep.")
1495 (home-page "https://bitbucket.org/raymonad/xss-lock")
1496 (license license:expat))))
1497
1498 (define-public python-pyperclip
1499 (package
1500 (name "python-pyperclip")
1501 (version "1.6.4")
1502 (source
1503 (origin
1504 (method url-fetch)
1505 (uri (pypi-uri "pyperclip" version))
1506 (sha256
1507 (base32
1508 "1p505c23ji06r28k1y67siihsbdzdf1brhlqpyv9ams4gk9863pp"))))
1509 (build-system python-build-system)
1510 (arguments
1511 '(#:tests? #f)) ; Not clear how to make tests pass.
1512 (inputs
1513 `(("xclip" ,xclip)
1514 ("xsel" ,xsel)))
1515 (home-page "https://github.com/asweigart/pyperclip")
1516 (synopsis "Python clipboard module")
1517 (description
1518 "Pyperclip is a clipboard module for Python, handling copy/pasting from
1519 the X11 clipboard")
1520 (license license:bsd-3)))
1521
1522 (define-public numlockx
1523 (package
1524 (name "numlockx")
1525 (version "1.2")
1526 (source (origin
1527 (method git-fetch)
1528 (uri (git-reference
1529 ;; It seems that upstream is gone.
1530 (url "https://github.com/rg3/numlockx")
1531 (commit version)))
1532 (file-name (git-file-name name version))
1533 (sha256
1534 (base32
1535 "1w49fayhwzn5rx0z1q2lrvm7z8jrd34lgb89p853a024bixc3cf2"))))
1536 (build-system gnu-build-system)
1537 (inputs
1538 `(("xorg-server" ,xorg-server)))
1539 (home-page "https://github.com/rg3/numlockx")
1540 (synopsis "Turns on the numlock key in X11")
1541 (description "@command{numlockx} is a tiny program that lets you turn on
1542 the numlock key in X11. It can be called from the user's initialization files
1543 to automatically turn it on on login.")
1544 (license license:expat)))
1545
1546 (define-public xrandr-invert-colors
1547 (package
1548 (name "xrandr-invert-colors")
1549 (version "0.01")
1550 (source (origin
1551 (method git-fetch)
1552 (uri (git-reference
1553 (url "https://github.com/zoltanp/xrandr-invert-colors.git")
1554 (commit (string-append "v" version))))
1555 (file-name (git-file-name name version))
1556 (sha256
1557 (base32
1558 "1br3x9vr6xm4ika06n8cfxx1b3wdchdqvyzjl4y1chmivrml8x9h"))))
1559 (build-system gnu-build-system)
1560 (arguments
1561 `(#:make-flags (list "CC=gcc")
1562 #:tests? #f ; there are none
1563 #:phases
1564 (modify-phases %standard-phases
1565 (delete 'configure)
1566 (replace 'install
1567 (lambda* (#:key outputs #:allow-other-keys)
1568 (let* ((out (assoc-ref outputs "out"))
1569 (bin (string-append out "/bin")))
1570 (install-file "xrandr-invert-colors.bin" bin)
1571 #t))))))
1572 (inputs
1573 `(("libxrandr" ,libxrandr)))
1574 (home-page "https://github.com/zoltanp/xrandr-invert-colors")
1575 (synopsis "Invert display colors")
1576 (description "This package provides a small utility for inverting the
1577 colors on all monitors attached to an XRandR-capable X11 display server.")
1578 (license license:gpl3+)))
1579
1580 (define-public sct
1581 (package
1582 (name "sct")
1583 (version "0.4")
1584 (source
1585 (origin
1586 (method url-fetch)
1587 (uri
1588 (string-append "https://www.umaxx.net/dl/sct-"
1589 version ".tar.gz"))
1590 (sha256
1591 (base32
1592 "0r57z9ki8pvxhawfxys0v5h85z2x211sqxki0xvk1bga88ryldlv"))))
1593 (build-system gnu-build-system)
1594 (arguments
1595 '(#:make-flags (list "CC=gcc")
1596 #:tests? #f ; No tests exist.
1597 #:phases
1598 (modify-phases %standard-phases
1599 (delete 'configure)
1600 (add-after 'unpack 'fix-sctd-paths
1601 (lambda* (#:key outputs inputs #:allow-other-keys)
1602 (let ((out (assoc-ref outputs "out"))
1603 (coreutils (assoc-ref inputs "coreutils"))
1604 (inetutils (assoc-ref inputs "inetutils"))
1605 (sed (assoc-ref inputs "sed")))
1606 (substitute* "sctd.sh"
1607 (("\\$\\(which sct\\)") (string-append out "/bin/sct"))
1608 (("date") (string-append coreutils "/bin/date"))
1609 (("printf") (string-append coreutils "/bin/printf"))
1610 (("sleep") (string-append coreutils "/bin/sleep"))
1611 (("logger") (string-append inetutils "/bin/logger"))
1612 (("sed") (string-append sed "/bin/sed"))))))
1613 (replace 'install
1614 (lambda* (#:key outputs #:allow-other-keys)
1615 (let ((out (assoc-ref outputs "out")))
1616 (install-file "sct" (string-append out "/bin"))
1617 (install-file "sctd.sh" (string-append out "/bin"))
1618 (install-file "sct.1" (string-append out "/man/man1"))
1619 (install-file "sctd.1" (string-append out "/man/man1"))
1620 (rename-file (string-append out "/bin/sctd.sh")
1621 (string-append out "/bin/sctd"))
1622 #t))))))
1623 (inputs
1624 `(("coreutils" ,coreutils) ; sctd uses "date", "printf" and "sleep"
1625 ("inetutils" ,inetutils) ; sctd uses "logger"
1626 ("libxrandr" ,libxrandr)
1627 ("sed" ,sed))) ; sctd uses "sed"
1628 (home-page "https://www.umaxx.net")
1629 (synopsis "Set the color temperature of the screen")
1630 (description "@code{sct} is a lightweight utility to set the color
1631 temperature of the screen.")
1632 (license (license:non-copyleft "file://sct.c")))) ; "OpenBSD" license
1633
1634 (define-public wl-clipboard
1635 (package
1636 (name "wl-clipboard")
1637 (version "1.0.0")
1638 (source
1639 (origin
1640 (method git-fetch)
1641 (uri (git-reference
1642 (url "https://github.com/bugaevc/wl-clipboard.git")
1643 (commit (string-append "v" version))))
1644 (file-name (git-file-name name version))
1645 (sha256
1646 (base32 "03h6ajcc30w6928bkd4h6xfj4iy2359ww6hdlybq8mr1zwmb2h0q"))))
1647 (build-system meson-build-system)
1648 (native-inputs
1649 `(("pkg-config" ,pkg-config)))
1650 (inputs
1651 `(("wayland" ,wayland)
1652 ("wayland-protocols" ,wayland-protocols)))
1653 (home-page "https://github.com/bugaevc/wl-clipboard")
1654 (synopsis "Command-line copy/paste utilities for Wayland")
1655 (description "Wl-clipboard is a set of command-line copy/paste utilities for
1656 Wayland.")
1657 (license license:gpl3+)))