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