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