gnu: catch-framework2: Update to 2.13.0.
[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, 2020 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, 2020 Marius Bakke <mbakke@fastmail.com>
18 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
19 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
20 ;;; Copyright © 2017 Nikita <nikita@n0.is>
21 ;;; Copyright © 2017, 2018, 2019, 2020 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, 2020 Josh Holland <josh@inv.alid.pw>
31 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
32 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
33 ;;; Copyright © 2020 David Wilson <david@daviwil.com>
34 ;;; Copyright © 2020 Ivan Vilata i Balaguer <ivan@selidor.net>
35 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
36 ;;; Copyright © 2020 Damien Cassou <damien@cassou.me>
37 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
38 ;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
39 ;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
40 ;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
41 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
42 ;;;
43 ;;; This file is part of GNU Guix.
44 ;;;
45 ;;; GNU Guix is free software; you can redistribute it and/or modify it
46 ;;; under the terms of the GNU General Public License as published by
47 ;;; the Free Software Foundation; either version 3 of the License, or (at
48 ;;; your option) any later version.
49 ;;;
50 ;;; GNU Guix is distributed in the hope that it will be useful, but
51 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
52 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53 ;;; GNU General Public License for more details.
54 ;;;
55 ;;; You should have received a copy of the GNU General Public License
56 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
57
58 (define-module (gnu packages xdisorg)
59 #:use-module ((guix licenses) #:prefix license:)
60 #:use-module (guix packages)
61 #:use-module (guix download)
62 #:use-module (guix git-download)
63 #:use-module (guix hg-download)
64 #:use-module (guix utils)
65 #:use-module (guix build-system cmake)
66 #:use-module (guix build-system gnu)
67 #:use-module (guix build-system glib-or-gtk)
68 #:use-module (guix build-system meson)
69 #:use-module (guix build-system python)
70 #:use-module (guix build-system scons)
71 #:use-module (gnu packages)
72 #:use-module (gnu packages documentation)
73 #:use-module (gnu packages admin)
74 #:use-module (gnu packages base)
75 #:use-module (gnu packages algebra)
76 #:use-module (gnu packages autotools)
77 #:use-module (gnu packages check)
78 #:use-module (gnu packages compression)
79 #:use-module (gnu packages image)
80 #:use-module (gnu packages pkg-config)
81 #:use-module (gnu packages flex)
82 #:use-module (gnu packages freedesktop)
83 #:use-module (gnu packages gawk)
84 #:use-module (gnu packages gettext)
85 #:use-module (gnu packages gl)
86 #:use-module (gnu packages glib)
87 #:use-module (gnu packages gnome)
88 #:use-module (gnu packages haskell-xyz)
89 #:use-module (gnu packages icu4c)
90 #:use-module (gnu packages man)
91 #:use-module (gnu packages maths)
92 #:use-module (gnu packages m4)
93 #:use-module (gnu packages ncurses)
94 #:use-module (gnu packages perl)
95 #:use-module (gnu packages python)
96 #:use-module (gnu packages python-xyz)
97 #:use-module (gnu packages linux)
98 #:use-module (gnu packages gl)
99 #:use-module (gnu packages guile)
100 #:use-module (gnu packages xml)
101 #:use-module (gnu packages gtk)
102 #:use-module (gnu packages qt)
103 #:use-module (gnu packages xorg)
104 #:use-module (gnu packages fontutils)
105 #:use-module (gnu packages bison)
106 #:use-module (ice-9 match))
107
108 ;; packages outside the x.org system proper
109
110 (define-public arandr
111 (package
112 (name "arandr")
113 (version "0.1.10")
114 (source (origin
115 (method url-fetch)
116 (uri (string-append "https://christian.amsuess.com/tools/arandr"
117 "/files/arandr-" version ".tar.gz"))
118 (sha256
119 (base32
120 "135q0llvm077jil2fr92ssw3p095m4r8jfj0lc5rr3m71n4srj6v"))
121 (modules '((guix build utils)))
122 (snippet
123 '(begin
124 ;; Do not record a timestamp and file name in gzipped man
125 ;; pages (this is equivalent to 'gzip --no-name'.)
126 (substitute* "setup.py"
127 (("gzip\\.open\\(gzfile, 'w', 9\\)")
128 "gzip.GzipFile('', 'wb', 9, open(gzfile, 'wb'), 0.)"))
129 #t))))
130 (build-system python-build-system)
131 (arguments
132 `(#:phases
133 (modify-phases %standard-phases
134 (add-before 'build 'configure
135 (lambda* (#:key inputs #:allow-other-keys)
136 (substitute* "screenlayout/xrandr.py"
137 (("\"xrandr\"") (string-append "\"" (assoc-ref inputs "xrandr")
138 "/bin/xrandr\"")))
139 #t))
140 (add-after 'install 'wrap-gi-typelib
141 (lambda* (#:key inputs outputs #:allow-other-keys)
142 (let ((out (assoc-ref outputs "out"))
143 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
144 (wrap-program (string-append out "/bin/arandr")
145 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
146 #t)))
147 #:tests? #f)) ;no tests
148 (inputs `(("gtk+" ,gtk+)
149 ("pycairo" ,python-pycairo)
150 ("pygobject" ,python-pygobject)
151 ("xrandr" ,xrandr)))
152 (native-inputs `(("gettext" ,gettext-minimal)
153 ("python-docutils" ,python-docutils)))
154 (home-page "https://christian.amsuess.com/tools/arandr/")
155 (synopsis "Another RandR graphical user interface")
156 ;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
157 (description "ARandR is designed to provide a simple visual front end for
158 the X11 resize-and-rotate (RandR) extension. Relative monitor positions are
159 shown graphically and can be changed in a drag-and-drop way. Configurations
160 are saved as executable shell scripts which can be loaded without using this
161 program.")
162 (license license:gpl3+)))
163
164 (define-public autorandr
165 (package
166 (name "autorandr")
167 (version "1.10.1")
168 (home-page "https://github.com/phillipberndt/autorandr")
169 (source
170 (origin
171 (method git-fetch)
172 (uri (git-reference
173 (url home-page)
174 (commit version)))
175 (file-name (git-file-name name version))
176 (sha256
177 (base32 "0msw9b1hdy3gbq9w5d04mfizhyirz1c648x84mlcbzl8salm7vpg"))))
178 (build-system python-build-system)
179 (native-inputs
180 `(("pkg-config" ,pkg-config)))
181 (inputs
182 `(("xrandr" ,xrandr)
183 ("libxcb" ,libxcb)))
184 (arguments
185 `(#:phases
186 (modify-phases %standard-phases
187 (add-before 'build 'configure
188 (lambda* (#:key inputs outputs #:allow-other-keys)
189 (let ((xrandr (string-append (assoc-ref inputs "xrandr")
190 "/bin/xrandr")))
191 (substitute* "contrib/etc/xdg/autostart/autorandr.desktop"
192 (("/usr") (assoc-ref outputs "out")))
193 (substitute* "autorandr.py"
194 (("popen\\(\"xrandr") (string-append "popen(\"" xrandr))
195 (("\\[\"xrandr") (string-append "[\"" xrandr)))
196 (substitute* "contrib/autorandr_launcher/autorandr_launcher.c"
197 (("/usr/bin/autorandr")
198 (string-append (assoc-ref outputs "out") "/bin/autorandr")))
199 (setenv "CC" "gcc"))
200 #t))
201 (add-after 'install 'install-contrib
202 (lambda* (#:key outputs #:allow-other-keys)
203 (invoke "make"
204 (string-append "DESTDIR=" (assoc-ref outputs "out"))
205 "PREFIX="
206 "BASH_COMPLETIONS_DIR=etc/bash_completion.d"
207 "install"
208 "TARGETS=autorandr launcher manpage bash_completion"))))))
209 (synopsis "Auto-detect connected displays and load appropriate setup")
210 (description "Autorandr wraps around xrandr to help with X11
211 multi-screen configuration management. It allows the user to create profiles
212 for various multi-screen setups. Autorandr automatically detects the profiles
213 that can be activated based on the connected hardware. Hook scripts can be
214 used to further tweak the behaviour of the different profiles.")
215 (license license:gpl3+)))
216
217 (define-public bemenu
218 (package
219 (name "bemenu")
220 (version "0.4.1")
221 (source
222 (origin
223 (method git-fetch)
224 (uri (git-reference
225 (url "https://github.com/Cloudef/bemenu")
226 (commit version)))
227 (file-name (git-file-name name version))
228 (sha256
229 (base32 "1fjcs9d3533ay3nz79cx3c0lmy2chgragr2lhsy0xl2ckr0iins0"))))
230 (build-system gnu-build-system)
231 (arguments
232 '(#:tests? #f
233 #:make-flags (list "CC=gcc"
234 "CFLAGS=-O2 -fPIC"
235 (string-append "LDFLAGS=-Wl,-rpath="
236 (assoc-ref %outputs "out") "/lib")
237 (string-append "PREFIX=" (assoc-ref %outputs "out")))
238 #:phases
239 (modify-phases %standard-phases
240 (delete 'configure))))
241 (inputs
242 `(("cairo" ,cairo)
243 ("libx11" ,libx11)
244 ("libxkbcomon" ,libxkbcommon)
245 ("libxinerama" ,libxinerama)
246 ("ncurses" ,ncurses)
247 ("pango" ,pango)
248 ("wayland" ,wayland)
249 ("wayland-protocols" ,wayland-protocols)))
250 (native-inputs
251 `(("doxygen" ,doxygen)
252 ("pkg-config" ,pkg-config)))
253 (home-page "https://github.com/Cloudef/bemenu")
254 (synopsis "Dynamic menu library and client program inspired by dmenu")
255 (description
256 "bemenu is a dynamic menu which allows the user to flexibly select from a
257 list of options (usually programs to launch). It renders the menu graphically
258 with X11 or Wayland, or in a text terminal with ncurses.")
259 (license (list license:gpl3+ ; client program[s] and other sources
260 license:lgpl3+)))) ; library and bindings
261
262 (define-public copyq
263 (package
264 (name "copyq")
265 (version "3.9.3")
266 (source (origin
267 (method git-fetch)
268 (uri (git-reference
269 (url "https://github.com/hluk/CopyQ")
270 (commit (string-append "v" version))))
271 (file-name (git-file-name name version))
272 (sha256
273 (base32
274 "0wlwq9xg8rzsbj0b29z358k4mbrqy04iraa8x0p26pa95yskgcma"))))
275 (build-system cmake-build-system)
276 (arguments
277 `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
278 #:tests? #f)) ; Test suite is a rather manual process.
279 (inputs
280 `(("qtbase" ,qtbase)
281 ("qtscript" ,qtscript)
282 ("qtsvg" ,qtsvg)
283 ("qtx11extras" ,qtx11extras)))
284 (synopsis "Clipboard manager with advanced features")
285 (description "CopyQ is clipboard manager with editing and scripting
286 features. CopyQ monitors system clipboard and saves its content in customized
287 tabs. Saved clipboard can be later copied and pasted directly into any
288 application.")
289 (home-page "https://hluk.github.io/CopyQ/")
290 (license license:gpl3+)))
291
292 (define-public xclip
293 (package
294 (name "xclip")
295 (version "0.13")
296 (source
297 (origin
298 (method git-fetch)
299 (uri (git-reference
300 (url "https://github.com/astrand/xclip")
301 (commit version)))
302 (file-name (git-file-name name version))
303 (sha256
304 (base32
305 "0q0hmvcjlv8arhh1pzhja2wglyj6n7z209jnpnzd281kqqv4czcs"))))
306 (build-system gnu-build-system)
307 (arguments
308 '(#:tests? #f)) ;there is no test suite
309 (native-inputs
310 `(("autoconf" ,autoconf)
311 ("automake" ,automake)))
312 (inputs `(("libxmu" ,libxmu)
313 ("libxt" ,libxt)))
314 (home-page "https://github.com/astrand/xclip")
315 (synopsis "Command line interface to X11 clipboard")
316 (description "Xclip is a command line interface to the X11 clipboard. It
317 can also be used for copying files, as an alternative to sftp/scp, thus
318 avoiding password prompts when X11 forwarding has already been setup.")
319 (license license:gpl2+)))
320
321 (define-public libxkbcommon
322 (package
323 (name "libxkbcommon")
324 (version "0.10.0")
325 (source (origin
326 (method url-fetch)
327 (uri (string-append "https://xkbcommon.org/download/libxkbcommon-"
328 version ".tar.xz"))
329 (sha256
330 (base32
331 "1wmnl0hngn6vrqrya4r8hvimlkr4jag39yjprls4gyrqvh667hsp"))))
332 (build-system meson-build-system)
333 (inputs
334 `(("libx11" ,libx11)
335 ("libxcb" ,libxcb)
336 ("wayland" ,wayland)
337 ("wayland-protocols" ,wayland-protocols)
338 ("xkeyboard-config" ,xkeyboard-config)))
339 (native-inputs
340 `(("bison" ,bison)
341 ("doxygen" ,doxygen)
342 ("pkg-config" ,pkg-config)))
343 (arguments
344 `(#:configure-flags
345 (list (string-append "-Dxkb-config-root="
346 (assoc-ref %build-inputs "xkeyboard-config")
347 "/share/X11/xkb")
348 (string-append "-Dx-locale-root="
349 (assoc-ref %build-inputs "libx11")
350 "/share/X11/locale"))))
351 (home-page "https://xkbcommon.org/")
352 (synopsis "Library to handle keyboard descriptions")
353 (description "Xkbcommon is a library to handle keyboard descriptions,
354 including loading them from disk, parsing them and handling their
355 state. It is mainly meant for client toolkits, window systems, and other
356 system applications; currently that includes Wayland, kmscon, GTK+, Qt,
357 Clutter, and more. Despite the name, it is not currently used by anything
358 X11 (yet).")
359 (license (license:x11-style "file://COPYING"
360 "See 'COPYING' in the distribution."))))
361
362 (define-public libfakekey
363 (package
364 (name "libfakekey")
365 (version "0.3")
366 (source
367 (origin
368 (method git-fetch)
369 (uri (git-reference
370 (url "https://git.yoctoproject.org/git/libfakekey")
371 (commit version)))
372 (file-name (git-file-name name version))
373 (sha256
374 (base32 "1jw1d4wc1ysiijirc7apnz3sryrxbl9akgb92mh06dvfkz2nblj0"))))
375 (build-system gnu-build-system)
376 (arguments
377 `(#:make-flags (list "AM_LDFLAGS=-lX11")
378 #:phases
379 (modify-phases %standard-phases
380 (replace 'bootstrap
381 ;; ./autogen.sh calls ./configure before shebangs have been patched.
382 (lambda _
383 (invoke "autoreconf" "-vfi"))))))
384 (native-inputs
385 `(("pkg-config" ,pkg-config)
386
387 ;; For bootstrapping from git.
388 ("autoconf" ,autoconf)
389 ("automake" ,automake)
390 ("libtool" ,libtool)))
391 (inputs
392 `(("libxtst" ,libxtst)
393 ("libx11" ,libx11)))
394 (home-page "https://www.yoctoproject.org/tools-resources/projects/matchbox")
395 (synopsis "X virtual keyboard library")
396 (description
397 "Libfakekey is a virtual keyboard library for X.")
398 (license license:gpl2)))
399
400 (define-public xdotool
401 (package
402 (name "xdotool")
403 (version "3.20160805.1")
404 (source
405 (origin
406 (method url-fetch)
407 (uri (string-append
408 "https://github.com/jordansissel/xdotool/releases/download/v"
409 version "/xdotool-" version ".tar.gz"))
410 (sha256
411 (base32
412 "1a6c1zr86zb53352yxv104l76l8x21gfl2bgw6h21iphxpv5zgim"))))
413 (build-system gnu-build-system)
414 (arguments
415 '(#:tests? #f ; Test suite requires a lot of black magic
416 #:phases
417 (modify-phases %standard-phases
418 (replace 'configure
419 (lambda* (#:key outputs #:allow-other-keys #:rest args)
420 (let ((out (assoc-ref outputs "out")))
421 (mkdir-p (string-append out "/lib"))
422 (setenv "PREFIX" out)
423 (setenv "LDFLAGS" (string-append "-Wl,-rpath=" out "/lib"))
424 (setenv "CC" "gcc")
425 #t))))))
426 (native-inputs `(("perl" ,perl))) ; for pod2man
427 (inputs `(("libx11" ,libx11)
428 ("libxext" ,libxext)
429 ("libxi" ,libxi)
430 ("libxinerama" ,libxinerama)
431 ("libxtst" ,libxtst)
432 ("libxkbcommon" ,libxkbcommon)))
433 (home-page "https://www.semicomplete.com/projects/xdotool/")
434 (synopsis "Fake keyboard/mouse input, window management, and more")
435 (description "Xdotool lets you simulate keyboard input and mouse activity,
436 move and resize windows, etc. It does this using X11's XTEST extension and
437 other Xlib functions. Additionally, you can search for windows and move,
438 resize, hide, and modify window properties like the title. If your window
439 manager supports it, you can use xdotool to switch desktops, move windows
440 between desktops, and change the number of desktops.")
441 (license license:bsd-3)))
442
443 (define-public xeyes
444 (package
445 (name "xeyes")
446 (version "1.1.2")
447 (source
448 (origin
449 (method url-fetch)
450 (uri (string-append "https://www.x.org/releases/individual/app/"
451 name "-" version ".tar.bz2"))
452 (sha256
453 (base32 "0lq5j7fryx1wn998jq6h3icz1h6pqrsbs3adskjzjyhn5l6yrg2p"))))
454 (build-system gnu-build-system)
455 (inputs
456 `(("libxext" ,libxext)
457 ("libxmu" ,libxmu)
458 ("libxrender" ,libxrender)
459 ("libxt" ,libxt)))
460 (native-inputs
461 `(("pkg-config" ,pkg-config)))
462 (home-page "https://www.x.org/") ; no dedicated Xeyes page exists
463 (synopsis "Follow-the-mouse X demo")
464 (description "Xeyes is a demo program for x.org. It shows eyes
465 following the mouse.")
466 (license license:x11)))
467
468
469 (define-public pixman
470 (package
471 (name "pixman")
472 (version "0.38.4")
473 (source (origin
474 (method url-fetch)
475 (uri (string-append
476 "https://www.cairographics.org/releases/pixman-"
477 version ".tar.gz"))
478 (sha256
479 (base32
480 "1ryxzdf048x7wsx4dlvrr1p00gzwfs7lybnhgc7ygbj0dvyxcrns"))
481 (patches (search-patches "pixman-CVE-2016-5296.patch"))))
482 (build-system gnu-build-system)
483 (arguments
484 '(#:configure-flags '("--disable-static")))
485 (inputs
486 `(("libpng" ,libpng)
487 ("zlib" ,zlib)))
488 (native-inputs
489 `(("pkg-config" ,pkg-config)))
490 (home-page "http://www.pixman.org/")
491 (synopsis "Low-level pixel manipulation library")
492 (description "Pixman is a low-level software library for pixel
493 manipulation, providing features such as image compositing and trapezoid
494 rasterisation.")
495 (license license:x11)))
496
497 (define-public libdrm
498 (package
499 (name "libdrm")
500 (version "2.4.101")
501 (source (origin
502 (method url-fetch)
503 (uri (string-append
504 "https://dri.freedesktop.org/libdrm/libdrm-"
505 version ".tar.xz"))
506 (sha256
507 (base32
508 "19vqbhqljhln0lrpnv3s7y3lkhsdcp76dl8bhqj3cis9ism1pwyx"))
509 (patches (search-patches "libdrm-realpath-virtio.patch"))))
510 (build-system meson-build-system)
511 (arguments
512 `(#:configure-flags
513 '(,@(match (%current-system)
514 ((or "armhf-linux" "aarch64-linux")
515 '("-Dexynos=true"
516 "-Domap=true"
517 "-Detnaviv=true"
518 "-Dtegra=true"
519 "-Dfreedreno-kgsl=true"))
520 (_ '())))
521
522 #:phases (modify-phases %standard-phases
523 (replace 'check
524 (lambda _
525 (invoke "meson" "test" "--timeout-multiplier" "5"))))))
526 (inputs
527 `(("libpciaccess" ,libpciaccess)))
528 (native-inputs
529 `(("pkg-config" ,pkg-config)))
530 (home-page "https://dri.freedesktop.org/wiki/")
531 (synopsis "Direct rendering userspace library")
532 (description "The Direct Rendering Infrastructure, also known as the DRI,
533 is a framework for allowing direct access to graphics hardware under the
534 X Window System in a safe and efficient manner. It includes changes to the
535 X server, to several client libraries, and to the kernel (DRM, Direct
536 Rendering Manager). The most important use for the DRI is to create fast
537 OpenGL implementations providing hardware acceleration for Mesa.
538 Several 3D accelerated drivers have been written to the DRI specification,
539 including drivers for chipsets produced by 3DFX, AMD (formerly ATI), Intel
540 and Matrox.")
541 (license license:x11)))
542
543
544 (define-public mtdev
545 (package
546 (name "mtdev")
547 (version "1.1.6")
548 (source
549 (origin
550 (method url-fetch)
551 (uri (string-append
552 "http://bitmath.org/code/mtdev/mtdev-"
553 version ".tar.bz2"))
554 (sha256
555 (base32
556 "1q700h9dqcm3zl6c3gj0qxxjcx6ibw2c51wjijydhwdcm26v5mqm"))))
557 (build-system gnu-build-system)
558 (arguments '(#:configure-flags '("--disable-static")))
559 (home-page "http://bitmath.org/code/mtdev/")
560 (synopsis "Multitouch protocol translation library")
561 (description "Mtdev is a stand-alone library which transforms all
562 variants of kernel MT events to the slotted type B protocol. The events
563 put into mtdev may be from any MT device, specifically type A without
564 contact tracking, type A with contact tracking, or type B with contact
565 tracking.")
566 (license license:x11)))
567
568 (define-public startup-notification
569 (package
570 (name "startup-notification")
571 (version "0.12")
572 (source
573 (origin
574 (method url-fetch)
575 (uri (string-append "https://www.freedesktop.org/software/" name
576 "/releases/" name "-" version ".tar.gz"))
577 (sha256
578 (base32
579 "0jmyryrpqb35y9hd5sgxqy2z0r1snw7d3ljw0jak0n0cjdz1yf9w"))))
580 (build-system gnu-build-system)
581 (native-inputs `(("pkg-config" ,pkg-config)))
582 (inputs
583 `(("libx11" ,libx11)
584 ("xcb-util" ,xcb-util)))
585 (home-page "https://www.freedesktop.org/wiki/Software/startup-notification/")
586 (synopsis "Application startup notification and feedback library")
587 (description
588 "Startup-notification contains a reference implementation of the startup
589 notification protocol. The reference implementation is mostly under an X Window
590 System style license, and has no special dependencies.")
591 ;; Most of the code is provided under x11 license.
592 (license license:lgpl2.0+)))
593
594 (define-public wmctrl
595 (package
596 (name "wmctrl")
597 (version "1.07")
598 (source (origin
599 (method url-fetch)
600 (uri (string-append
601 "https://sites.google.com/site/tstyblo/wmctrl/wmctrl-"
602 version ".tar.gz"))
603 (sha256
604 (base32
605 "1afclc57b9017a73mfs9w7lbdvdipmf9q0xdk116f61gnvyix2np"))
606 (patches (search-patches "wmctrl-64-fix.patch"))))
607 (build-system gnu-build-system)
608 (arguments
609 '(#:configure-flags
610 (list (string-append "--mandir="
611 (assoc-ref %outputs "out")
612 "/share/man"))))
613 (native-inputs
614 `(("pkg-config" ,pkg-config)))
615 (inputs
616 `(("libx11" ,libx11)
617 ("libxmu" ,libxmu)
618 ("glib" ,glib)))
619 (home-page "http://tomas.styblo.name/wmctrl/")
620 (synopsis "Command-line tool to control X window managers")
621 (description
622 "Wmctrl interacts with an X window manager that is compatible
623 with the EWMH/NetWM specification. It can query the window manager for
624 information, and request for certain window management actions (resize and
625 move windows, switch between desktops, etc.).")
626 (license license:gpl2+)))
627
628 (define-public scrot
629 (package
630 (name "scrot")
631 (version "1.4")
632 (source
633 (origin
634 (method git-fetch)
635 (uri
636 (git-reference
637 (url "https://github.com/resurrecting-open-source-projects/scrot")
638 (commit version)))
639 (file-name (git-file-name name version))
640 (sha256
641 (base32
642 "12xq6glg70icwsvbnfw9gm4dahlbnrc7b6adpd0mpf89h4sj2gds"))))
643 (build-system gnu-build-system)
644 (native-inputs
645 `(("autoconf" ,autoconf)
646 ("autoconf-archive" ,autoconf-archive)
647 ("automake" ,automake)))
648 (inputs
649 `(("giblib" ,giblib)
650 ("libx11" ,libx11)
651 ("libXcursor" ,libxcursor)
652 ("libxcomposite" ,libxcomposite)
653 ("libXfixes" ,libxfixes)))
654 (home-page "https://github.com/resurrecting-open-source-projects/scrot")
655 (synopsis "Command-line screen capture utility for X Window System")
656 (description
657 "Scrot saves a screenshot of a full screen, a window or a part
658 of the screen selected by mouse.")
659 ;; This license removes a clause about X Consortium from the original
660 ;; X11 license.
661 (license (license:x11-style "file://COPYING"
662 "See 'COPYING' in the distribution."))))
663
664 (define-public slop
665 (package
666 (name "slop")
667 (version "7.5")
668 (source (origin
669 (method git-fetch)
670 (uri (git-reference
671 (url "https://github.com/naelstrof/slop")
672 (commit (string-append "v" version))))
673 (file-name (git-file-name name version))
674 (sha256
675 (base32
676 "1k8xxb4rj2fylr4vj16yvsf73cyywliz9cy78pl4ibmi03jhg837"))))
677 (build-system cmake-build-system)
678 (arguments
679 '(#:tests? #f)) ; no "check" target
680 (inputs
681 `(("glew" ,glew)
682 ("glm" ,glm)
683 ("icu4c" ,icu4c)
684 ("libxext" ,libxext)
685 ("libxrender" ,libxrender)
686 ("mesa" ,mesa)))
687 (home-page "https://github.com/naelstrof/slop")
688 (synopsis "Select a region and print its bounds to stdout")
689 (description
690 "slop (Select Operation) is a tool that queries for a selection from a
691 user and prints the region to stdout. It grabs the mouse and turns it into a
692 crosshair, lets the user click and drag to make a selection (or click on a
693 window) while drawing a pretty box around it, then finally prints the
694 selection's dimensions to stdout.")
695 (license license:gpl3+)))
696
697 (define-public maim
698 (package
699 (name "maim")
700 (version "5.6.3")
701 (source (origin
702 (method git-fetch)
703 (uri (git-reference
704 (url "https://github.com/naelstrof/maim")
705 (commit (string-append "v" version))))
706 (file-name (git-file-name name version))
707 (sha256
708 (base32
709 "181mjjrjb9fs1ficcv9miqbk94v95j1yli7fjp2dj514g7nj9l3x"))))
710 (build-system cmake-build-system)
711 (arguments
712 '(#:tests? #f)) ; no "check" target
713 (inputs
714 `(("glm" ,glm)
715 ("libjpeg" ,libjpeg-turbo)
716 ("libpng" ,libpng)
717 ("libxcomposite" ,libxcomposite)
718 ("libxfixes" ,libxfixes)
719 ("libxrandr" ,libxrandr)
720 ("mesa" ,mesa)
721 ("slop" ,slop)
722 ("zlib" ,zlib)))
723 (home-page "https://github.com/naelstrof/maim")
724 (synopsis "Screenshot utility for X Window System")
725 (description
726 "maim (Make Image) is a tool that takes screenshots of your desktop and
727 saves it in any format. Along with a full screen, it allows you to capture a
728 predefined region or a particular window. Also, it makes it possible to
729 include cursor in the resulting image.")
730 (license license:gpl3+)))
731
732 (define-public unclutter
733 (package
734 (name "unclutter")
735 (version "8")
736 (source (origin
737 (method url-fetch)
738 (uri (string-append
739 "http://ftp.x.org/contrib/utilities/unclutter-"
740 version ".tar.Z"))
741 (sha256
742 (base32
743 "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
744 (build-system gnu-build-system)
745 (arguments
746 '(#:tests? #f ; no check target
747 #:phases
748 (modify-phases %standard-phases
749 (delete 'configure)
750 (replace 'install
751 (lambda* (#:key inputs outputs #:allow-other-keys)
752 (let* ((out (assoc-ref outputs "out"))
753 (bin (string-append out "/bin"))
754 (man1 (string-append out "/share/man/man1")))
755 (mkdir-p bin)
756 (mkdir-p man1)
757 (invoke "make" "install" "install.man"
758 (string-append "BINDIR=" bin)
759 (string-append "MANDIR=" man1))))))))
760 (inputs `(("libx11" ,libx11)))
761 (home-page "http://ftp.x.org/contrib/utilities/")
762 (synopsis "Hide idle mouse cursor")
763 (description
764 "Unclutter is a program which runs permanently in the background of an
765 X11 session. It checks on the X11 pointer (cursor) position every few
766 seconds, and when it finds it has not moved (and no buttons are pressed
767 on the mouse, and the cursor is not in the root window) it creates a
768 small sub-window as a child of the window the cursor is in. The new
769 window installs a cursor of size 1x1 but a mask of all 0, i.e. an
770 invisible cursor. This allows you to see all the text in an xterm or
771 xedit, for example. The human factors crowd would agree it should make
772 things less distracting.")
773 (license license:public-domain)))
774
775 (define-public xautomation
776 (package
777 (name "xautomation")
778 (version "1.09")
779 (source
780 (origin
781 (method url-fetch)
782 (uri (string-append "https://www.hoopajoo.net/static/projects/"
783 "xautomation-" version ".tar.gz"))
784
785 (sha256
786 (base32
787 "03azv5wpg65h40ip2kk1kdh58vix4vy1r9bihgsq59jx2rhjr3zf"))))
788 (build-system gnu-build-system)
789 (inputs
790 `(("libpng" ,libpng)
791 ("libx11" ,libx11)
792 ("libxi" ,libxi)
793 ("libxtst" ,libxtst)))
794 (native-inputs
795 `(("xorgproto" ,xorgproto)))
796 (synopsis "Tools to automate tasks in X such as detecting on screen images")
797 (description
798 "Xautomation can control X from the command line for scripts, and
799 do visual scraping to find things on the screen. The control interface
800 allows mouse movement, clicking, button up/down, key up/down, etc, and
801 uses the XTest extension so you don't have the annoying problems that
802 xse has when apps ignore sent events. The visgrep program can find
803 images inside of images and reports the coordinates, allowing programs
804 to find buttons, etc, on the screen to click on.")
805 (home-page "https://www.hoopajoo.net/projects/xautomation.html")
806 (license license:gpl2+)))
807
808 (define-public xbanish
809 (package
810 (name "xbanish")
811 (version "1.7")
812 (home-page "https://github.com/jcs/xbanish")
813 (source (origin
814 (method git-fetch)
815 (uri (git-reference (url home-page)
816 (commit (string-append "v" version))))
817 (file-name (git-file-name name version))
818 (sha256
819 (base32
820 "0ic5f7zgc32p5g1wxas9y5h8dhik0pvsa8wmn6skdry56gw9vg9q"))))
821 (build-system gnu-build-system)
822 (arguments
823 `(#:tests? #f ; no tests
824 #:make-flags (list "CC=gcc"
825 (string-append "PREFIX=" (assoc-ref %outputs "out")))
826 #:phases (modify-phases %standard-phases
827 (delete 'configure)))) ; no configure script
828 (inputs
829 `(("libx11" ,libx11)
830 ("libxfixes" ,libxfixes)
831 ("libxi" ,libxi)
832 ("libxt" ,libxt)))
833 (synopsis "Banish the mouse cursor")
834 (description
835 "@command{xbanish} hides the mouse cursor when you start typing, and
836 shows it again when the mouse cursor moves or a mouse button is pressed.")
837 (license license:bsd-3)))
838
839 (define-public xlockmore
840 (package
841 (name "xlockmore")
842 (version "5.62")
843 (source (origin
844 (method url-fetch)
845 (uri (list (string-append "http://sillycycle.com/xlock/"
846 "xlockmore-" version ".tar.xz")
847 ;; Previous releases are moved to a subdirectory.
848 (string-append "http://sillycycle.com/xlock/"
849 "recent-releases/"
850 "xlockmore-" version ".tar.xz")))
851 (sha256
852 (base32
853 "0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi"))))
854 (build-system gnu-build-system)
855 (arguments
856 '(#:configure-flags (list (string-append "--enable-appdefaultdir="
857 (assoc-ref %outputs "out")
858 "/lib/X11/app-defaults"))
859 #:tests? #f)) ;no such thing as a test suite
860 (inputs
861 `(("libX11" ,libx11)
862 ("libXext" ,libxext)
863 ("libXt" ,libxt)
864 ("linux-pam" ,linux-pam)))
865 (home-page "https://sillycycle.com/xlockmore.html")
866 (synopsis "Screen locker for the X Window System")
867 (description
868 "XLockMore is a classic screen locker and screen saver for the
869 X Window System.")
870 (license (license:non-copyleft #f "See xlock.c.")
871 ))) ; + GPLv2 in modes/glx/biof.c.
872
873 (define-public xosd
874 (package
875 (name "xosd")
876 (version "2.2.14")
877 (source (origin
878 (method url-fetch)
879 (uri (string-append
880 "mirror://sourceforge/libxosd/libxosd/xosd-" version "/"
881 name "-" version ".tar.gz"))
882 (sha256
883 (base32
884 "025m7ha89q29swkc7s38knnbn8ysl24g2h5s7imfxflm91psj7sg"))))
885 (build-system gnu-build-system)
886 (arguments
887 '(#:configure-flags
888 (list (string-append "--mandir=" %output "/share/man"))))
889 (inputs
890 `(("libx11" ,libx11)
891 ("libxt" ,libxt)
892 ("libxext" ,libxext)
893 ("libxinerama" ,libxinerama)))
894 (home-page "https://sourceforge.net/projects/libxosd/")
895 (synopsis "X On Screen Display")
896 (description
897 "XOSD provides a C library and a simple utility (osd_cat) for displaying
898 transparent text on your screen.")
899 (license license:gpl2+)))
900
901 (define-public xbindkeys
902 (package
903 (name "xbindkeys")
904 (version "1.8.7")
905 (source (origin
906 (method url-fetch)
907 ;; Download from the savannah mirror list fails
908 (uri (string-append
909 "http://www.nongnu.org/xbindkeys/xbindkeys-"
910 version
911 ".tar.gz"))
912 (sha256
913 (base32
914 "1wl2vc5alisiwyk8m07y1ryq8w3ll9ym83j27g4apm4ixjl8d6x2"))))
915 (build-system gnu-build-system)
916 (native-inputs
917 `(("pkg-config" ,pkg-config)))
918 (inputs
919 `(("libx11" ,libx11)
920 ("guile" ,guile-2.2)))
921 (home-page "https://www.nongnu.org/xbindkeys/")
922 (synopsis "Associate a combination of keys with a shell command")
923 (description
924 "XBindKeys is a program that allows you to launch shell commands with
925 your keyboard or your mouse under the X Window System. It links commands to
926 keys or mouse buttons, using a configuration file. It's independent of the
927 window manager and can capture all keyboard keys (ex: Power, Wake...). It
928 optionally supports a Guile-based configuration file layout, which enables you
929 to access all XBindKeys internals, so you can have key combinations, double
930 clicks or timed double clicks take actions. Also all functions that work in
931 Guile will work for XBindKeys.")
932 (license license:gpl2+)))
933
934 (define-public sxhkd
935 (package
936 (name "sxhkd")
937 (version "0.6.1")
938 (source
939 (origin
940 (method git-fetch)
941 (uri (git-reference
942 (url "https://github.com/baskerville/sxhkd")
943 (commit version)))
944 (file-name (git-file-name name version))
945 (sha256
946 (base32 "0j7bl2l06r0arrjzpz7al9j6cwzc730knbsijp7ixzz96pq7xa2h"))))
947 (build-system gnu-build-system)
948 (inputs
949 `(("asciidoc" ,asciidoc)
950 ("libxcb" ,libxcb)
951 ("xcb-util" ,xcb-util)
952 ("xcb-util-keysyms" ,xcb-util-keysyms)
953 ("xcb-util-wm" ,xcb-util-wm)))
954 (arguments
955 `(#:phases (modify-phases %standard-phases (delete 'configure))
956 #:tests? #f ; no check target
957 #:make-flags
958 (list "CC=gcc"
959 (string-append "PREFIX=" %output)
960 ;; Keep the documentation where the build system installs LICENSE.
961 (string-append "DOCPREFIX=" %output
962 "/share/doc/" ,name "-" ,version))))
963 (home-page "https://github.com/baskerville/sxhkd")
964 (synopsis "Simple X hotkey daemon")
965 (description "sxhkd is a simple X hotkey daemon with a powerful and
966 compact configuration syntax.")
967 (license license:bsd-2)))
968
969 (define-public rxvt-unicode
970 (package
971 (name "rxvt-unicode")
972 (version "9.22")
973 (source (origin
974 (method url-fetch)
975 (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/"
976 name "-" version ".tar.bz2"))
977 (patches (search-patches "rxvt-unicode-escape-sequences.patch"))
978 (sha256
979 (base32
980 "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"))))
981 (build-system gnu-build-system)
982 (arguments
983 ;; This sets the destination when installing the necessary terminal
984 ;; capability data, which are not provided by 'ncurses'. See
985 ;; https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html
986 `(#:make-flags (list (string-append "TERMINFO="
987 (assoc-ref %outputs "out")
988 "/share/terminfo"))
989 #:phases
990 (modify-phases %standard-phases
991 (add-after 'install 'install-desktop-urxvt
992 (lambda* (#:key outputs #:allow-other-keys)
993 (let* ((output (assoc-ref outputs "out"))
994 (desktop (string-append output "/share/applications")))
995 (mkdir-p desktop)
996 (with-output-to-file
997 (string-append desktop "/urxvt.desktop")
998 (lambda _
999 (format #t
1000 "[Desktop Entry]~@
1001 Name=rxvt-unicode~@
1002 Comment=~@
1003 Exec=~a/bin/urxvt~@
1004 TryExec=~@*~a/bin/urxvt~@
1005 Icon=~@
1006 Type=Application~%"
1007 output)))
1008 #t)))
1009 (add-after 'install 'install-desktop-urxvtc
1010 (lambda* (#:key outputs #:allow-other-keys)
1011 (let* ((output (assoc-ref outputs "out"))
1012 (desktop (string-append output "/share/applications")))
1013 (mkdir-p desktop)
1014 (with-output-to-file
1015 (string-append desktop "/urxvtc.desktop")
1016 (lambda _
1017 (format #t
1018 "[Desktop Entry]~@
1019 Name=rxvt-unicode (client)~@
1020 Comment=Rxvt clone with XFT and unicode support~@
1021 Exec=~a/bin/urxvtc~@
1022 TryExec=~@*~a/bin/urxvtc~@
1023 Icon=~@
1024 Type=Application~%"
1025 output)))
1026 #t))))))
1027 (inputs
1028 `(("libXft" ,libxft)
1029 ("libX11" ,libx11)))
1030 (native-inputs
1031 `(("ncurses" ,ncurses) ;trigger the installation of terminfo data
1032 ("perl" ,perl)
1033 ("pkg-config" ,pkg-config)))
1034 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
1035 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
1036 (native-search-paths
1037 (list (search-path-specification
1038 (variable "TERMINFO_DIRS")
1039 (files '("share/terminfo")))))
1040 (home-page "http://software.schmorp.de/pkg/rxvt-unicode.html")
1041 (synopsis "Rxvt clone with XFT and unicode support")
1042 (description "Rxvt-unicode (urxvt) is a colour vt102 terminal emulator
1043 intended as an xterm replacement for users who do not require features such as
1044 Tektronix 4014 emulation and toolkit-style configurability. It supports
1045 unicode, XFT and may be extended with Perl plugins. It also comes with a
1046 client/daemon pair that lets you open any number of terminal windows from
1047 within a single process.")
1048 (license license:gpl3+)))
1049
1050 (define-public xcape
1051 (package
1052 (name "xcape")
1053 (version "1.2")
1054 (source (origin
1055 (method git-fetch)
1056 (uri (git-reference
1057 (url "https://github.com/alols/xcape")
1058 (commit (string-append "v" version))))
1059 (file-name (git-file-name name version))
1060 (sha256
1061 (base32
1062 "09a05cxgrip6nqy1qmwblamp2bhknqnqmxn7i2a1rgxa0nba95dm"))))
1063 (build-system gnu-build-system)
1064 (arguments
1065 `(#:tests? #f ; no check target
1066 ;; no configure script
1067 #:phases (modify-phases %standard-phases (delete 'configure))
1068 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1069 "MANDIR=/share/man/man1"
1070 "CC=gcc")))
1071 (inputs
1072 `(("libxtst" ,libxtst)
1073 ("libx11" ,libx11)))
1074 (native-inputs
1075 `(("pkg-config" ,pkg-config)))
1076 (home-page "https://github.com/alols/xcape")
1077 (synopsis "Use a modifier key in X.org as another key")
1078 (description
1079 "This utility for X.org uses a modifier key as another key when
1080 pressed and released on its own. The default behaviour is to generate the
1081 Escape key when Left Control is pressed and released on its own.")
1082 (license license:gpl3+)))
1083
1084 (define-public libwacom
1085 (package
1086 (name "libwacom")
1087 (version "1.4")
1088 (source (origin
1089 (method url-fetch)
1090 (uri (string-append
1091 "https://github.com/linuxwacom/libwacom/releases/download/"
1092 "libwacom-" version "/libwacom-" version ".tar.bz2"))
1093 (sha256
1094 (base32
1095 "1rk661cymmahak9rw0wcssnfszbngq74vp7zc2cwyg6yrjbif1lh"))))
1096 (build-system glib-or-gtk-build-system)
1097 (arguments
1098 `(#:configure-flags '("--disable-static")))
1099 (native-inputs
1100 `(("pkg-config" ,pkg-config)))
1101 (inputs
1102 `(("gtk+" ,gtk+)
1103 ("libgudev" ,libgudev)
1104 ("eudev" ,eudev)
1105 ("libxml2" ,libxml2)))
1106 (propagated-inputs
1107 ;; libwacom includes header files that include GLib, and libinput uses
1108 ;; those header files.
1109 `(("glib" ,glib)))
1110 (home-page "https://linuxwacom.github.io/")
1111 (synopsis "Helper library for Wacom tablet settings")
1112 (description
1113 "Libwacom is a library to help implement Wacom tablet settings. It is
1114 intended to be used by client-programs that need model identification. It is
1115 already being used by the gnome-settings-daemon and the GNOME Control Center
1116 Wacom tablet applet.")
1117 (license license:x11)))
1118
1119 (define-public xf86-input-wacom
1120 (package
1121 (name "xf86-input-wacom")
1122 (version "0.39.0")
1123 (source
1124 (origin
1125 (method url-fetch)
1126 (uri (string-append
1127 "https://github.com/linuxwacom/xf86-input-wacom/releases/download/"
1128 "xf86-input-wacom-" version "/"
1129 "xf86-input-wacom-" version ".tar.bz2"))
1130 (sha256
1131 (base32 "11qk58az6qwii774ga45h5yqzipwn56f0d74kdbajqdv45p85gqj"))))
1132 (arguments
1133 `(#:configure-flags
1134 (list (string-append "--with-sdkdir="
1135 (assoc-ref %outputs "out")
1136 "/include/xorg")
1137 (string-append "--with-xorg-conf-dir="
1138 (assoc-ref %outputs "out")
1139 "/share/X11/xorg.conf.d"))))
1140 (build-system gnu-build-system)
1141 (native-inputs
1142 `(("pkg-config" ,pkg-config)))
1143 (inputs
1144 `(("xorg-server" ,xorg-server)
1145 ("libxrandr" ,libxrandr)
1146 ("libxinerama" ,libxinerama)
1147 ("libxi" ,libxi)
1148 ("eudev" ,eudev)))
1149 (home-page "https://linuxwacom.github.io/")
1150 (synopsis "Wacom input driver for X")
1151 (description
1152 "The xf86-input-wacom driver is the wacom-specific X11 input driver for
1153 the X.Org X Server version 1.7 and later (X11R7.5 or later).")
1154 (license license:x11)))
1155
1156 (define-public redshift
1157 (package
1158 (name "redshift")
1159 (version "1.12")
1160 (source
1161 (origin
1162 (method url-fetch)
1163 (uri
1164 (string-append "https://github.com/jonls/redshift/"
1165 "releases/download/v" version
1166 "/redshift-" version ".tar.xz"))
1167 (sha256
1168 (base32
1169 "1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
1170 (build-system gnu-build-system)
1171 (arguments
1172 `(#:imported-modules (,@%gnu-build-system-modules
1173 (guix build python-build-system))
1174 #:phases
1175 (modify-phases %standard-phases
1176 (add-after 'install 'split-outputs
1177 (lambda* (#:key outputs #:allow-other-keys)
1178 (let ((out (assoc-ref outputs "out"))
1179 (gtk (assoc-ref outputs "gtk"))
1180 (desktop-file "/share/applications/redshift-gtk.desktop"))
1181 (mkdir-p (string-append gtk "/bin"))
1182 (link (string-append out "/bin/redshift-gtk")
1183 (string-append gtk "/bin/redshift-gtk"))
1184 (delete-file (string-append out "/bin/redshift-gtk"))
1185 (copy-recursively (string-append out "/lib")
1186 (string-append gtk "/lib"))
1187 (delete-file-recursively (string-append out "/lib"))
1188 (mkdir-p (string-append gtk "/share/applications"))
1189 (link (string-append out desktop-file)
1190 (string-append gtk desktop-file))
1191 (delete-file (string-append out desktop-file))
1192 (with-directory-excursion (string-append out "/share")
1193 (for-each (lambda (dir)
1194 (copy-recursively
1195 (string-append out "/share/" dir)
1196 (string-append gtk "/share/" dir))
1197 (delete-file-recursively dir))
1198 '("appdata" "icons")))
1199 #t)))
1200 (add-after 'split-outputs 'wrap
1201 (lambda* (#:key inputs outputs #:allow-other-keys)
1202 (let* ((gtk (assoc-ref outputs "gtk"))
1203 (python-version
1204 (@ (guix build python-build-system) python-version))
1205 (python (assoc-ref inputs "python"))
1206 (sitedir (string-append gtk "/lib/python"
1207 (python-version python)
1208 "/site-packages")))
1209 (wrap-program (string-append gtk "/bin/redshift-gtk")
1210 `("PYTHONPATH" ":" prefix
1211 (,(string-append sitedir ":" (getenv "PYTHONPATH"))))
1212 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
1213 #t))))))
1214 (outputs '("out" "gtk"))
1215 (native-inputs
1216 `(("pkg-config" ,pkg-config)
1217 ("intltool" ,intltool)))
1218 (inputs
1219 `(("libdrm" ,libdrm)
1220 ("libx11" ,libx11)
1221 ("libxcb" ,libxcb)
1222 ("libxxf86vm" ,libxxf86vm)
1223 ("glib" ,glib) ;for Geoclue2 support
1224
1225 ;; To build the GTK3 GUI, we need these.
1226 ("gtk+" ,gtk+)
1227 ("python" ,python)
1228 ("python-pygobject" ,python-pygobject)
1229 ("python-pyxdg" ,python-pyxdg)))
1230 (home-page "https://github.com/jonls/redshift")
1231 (synopsis "Adjust the color temperature of your screen")
1232 (description
1233 "Redshift adjusts the color temperature according to the position of the
1234 sun. A different color temperature is set during night and daytime. During
1235 twilight and early morning, the color temperature transitions smoothly from
1236 night to daytime temperature to allow your eyes to slowly adapt. At night the
1237 color temperature should be set to match the lamps in your room.")
1238 (license license:gpl3+)))
1239
1240 (define-public redshift-wayland
1241 (let ((commit "7da875d34854a6a34612d5ce4bd8718c32bec804")
1242 (revision "1"))
1243 (package
1244 (name "redshift-wayland")
1245 (version (string-append "1.12-"
1246 revision "." (string-take commit 7)))
1247 (source (origin
1248 (method git-fetch)
1249 (uri (git-reference
1250 (url "https://github.com/minus7/redshift")
1251 (commit commit)))
1252 (file-name (string-append name "-" version))
1253 (sha256
1254 (base32
1255 "0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"))))
1256 (build-system gnu-build-system)
1257 (arguments
1258 '(#:phases (modify-phases %standard-phases
1259 (add-after 'install 'create-desktop-file
1260 (lambda* (#:key outputs #:allow-other-keys)
1261 ;; For the GeoClue provider to work, a .desktop file
1262 ;; needs to be provided. A template is available,
1263 ;; but it only gets installed when the GUI is enabled.
1264 ;; Install it manually for this Wayland variant.
1265 (let* ((out (assoc-ref outputs "out"))
1266 (desktop-file
1267 (string-append
1268 out "/share/applications/redshift.desktop")))
1269 (mkdir-p (dirname desktop-file))
1270 (copy-file "data/applications/redshift.desktop.in"
1271 desktop-file)
1272 (substitute* desktop-file
1273 (("^_") ""))
1274 #t))))))
1275 (native-inputs
1276 `(("autoconf" ,autoconf)
1277 ("automake" ,automake)
1278 ("libtool" ,libtool)
1279 ("pkg-config" ,pkg-config)
1280 ("intltool" ,intltool)))
1281 (inputs
1282 `(("libdrm" ,libdrm)
1283 ("libx11" ,libx11)
1284 ("libxcb" ,libxcb)
1285 ("libxxf86vm" ,libxxf86vm)
1286 ("glib" ,glib) ; for Geoclue2 support
1287 ("wayland" ,wayland)))
1288 (home-page "https://github.com/minus7/redshift")
1289 (synopsis "Adjust the color temperature of your screen (with Wayland support)")
1290 (description
1291 "Redshift adjusts the color temperature according to the position of the
1292 sun. A different color temperature is set during night and daytime. During
1293 twilight and early morning, the color temperature transitions smoothly from
1294 night to daytime temperature to allow your eyes to slowly adapt. At night the
1295 color temperature should be set to match the lamps in your room.
1296
1297 This is a fork with added support for Wayland using the wlr-gamma-control
1298 protocol.")
1299 (license license:gpl3+))))
1300
1301 (define-public xscreensaver
1302 (package
1303 (name "xscreensaver")
1304 (version "5.44")
1305 (source
1306 (origin
1307 (method url-fetch)
1308 (uri
1309 (string-append "https://www.jwz.org/xscreensaver/xscreensaver-"
1310 version ".tar.gz"))
1311 (sha256
1312 (base32 "15bv05vpfjwsrqbazrjmm382jd7vvw0mp6y9vasn6wvxzjf0in3k"))))
1313 (build-system gnu-build-system)
1314 (arguments
1315 `(#:tests? #f ; no check target
1316 #:phases
1317 (modify-phases %standard-phases
1318 (add-before 'configure 'adjust-gtk-resource-paths
1319 (lambda _
1320 (substitute* '("driver/Makefile.in" "po/Makefile.in.in")
1321 (("@GTK_DATADIR@") "@datadir@")
1322 (("@PO_DATADIR@") "@datadir@"))
1323 #t)))
1324 #:configure-flags '("--with-pam" "--with-proc-interrupts"
1325 "--without-readdisplay")
1326 #:make-flags (list (string-append "AD_DIR="
1327 (assoc-ref %outputs "out")
1328 "/lib/X11/app-defaults"))))
1329 (native-inputs
1330 `(("pkg-config" ,pkg-config)
1331 ("intltool" ,intltool)))
1332 (inputs
1333 `(("libx11" ,libx11)
1334 ("libxext" ,libxext)
1335 ("libxi" ,libxi)
1336 ("libxt" ,libxt)
1337 ("libxft" ,libxft)
1338 ("libxmu" ,libxmu)
1339 ("libxpm" ,libxpm)
1340 ("libglade" ,libglade)
1341 ("libxml2" ,libxml2)
1342 ("libsm" ,libsm)
1343 ("libjpeg" ,libjpeg-turbo)
1344 ("linux-pam" ,linux-pam)
1345 ("pango" ,pango)
1346 ("gtk+" ,gtk+)
1347 ("perl" ,perl)
1348 ("cairo" ,cairo)
1349 ("bc" ,bc)
1350 ("libxrandr" ,libxrandr)
1351 ("glu" ,glu)
1352 ("glib" ,glib)))
1353 (home-page "https://www.jwz.org/xscreensaver/")
1354 (synopsis "Classic screen saver suite supporting screen locking")
1355 (description
1356 "xscreensaver is a popular screen saver collection with many entertaining
1357 demos. It also acts as a nice screen locker.")
1358 ;; xscreensaver doesn't have a single copyright file and instead relies on
1359 ;; source comment headers, though most files have the same lax
1360 ;; permissions. To reduce complexity, we're pointing at Debian's
1361 ;; breakdown of the copyright information.
1362 (license (license:non-copyleft
1363 (string-append
1364 "http://metadata.ftp-master.debian.org/changelogs/"
1365 "/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
1366
1367 (define-public xssproxy
1368 (package
1369 (name "xssproxy")
1370 (version "1.0.0")
1371 (source (origin
1372 (method git-fetch)
1373 (uri (git-reference
1374 (url "https://github.com/timakro/xssproxy")
1375 (commit (string-append "v" version))))
1376 (file-name (string-append name "-" version "-checkout"))
1377 (sha256
1378 (base32
1379 "0c83wmipnsdnbihc5niyczs7jrkss2s8n6iwwjdia7hkjzbd0hl7"))))
1380 (build-system gnu-build-system)
1381 (arguments `(#:make-flags `("bindir=/bin"
1382 "man1dir=/share/man/man1"
1383 ,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
1384 "CC=gcc")
1385 #:phases (modify-phases %standard-phases
1386 (delete 'configure)
1387 (delete 'check))))
1388 (native-inputs
1389 `(("pkg-config" ,pkg-config)))
1390 (inputs
1391 `(("glib" ,glib)
1392 ("libx11" ,libx11)
1393 ("libxext" ,libxext)
1394 ("libxscrnsaver" ,libxscrnsaver)
1395 ("dbus" ,dbus)))
1396 (synopsis "Forward freedesktop.org Idle Inhibition Service calls to Xss")
1397 (description "xssproxy implements the @code{org.freedesktop.ScreenSaver}
1398 D-Bus interface described in the Idle Inhibition Service Draft by the
1399 freedesktop.org developers. The inhibition of the screensaver is then
1400 controlled using the XScreenSaverSuspend function from the Xss (X11 Screen
1401 Saver extension) library.")
1402 (home-page "https://github.com/timakro/xssproxy")
1403 (license license:gpl3+)))
1404
1405 (define-public xsel
1406 (package
1407 (name "xsel")
1408 (version "1.2.0")
1409 (source (origin
1410 (method url-fetch)
1411 (uri (string-append "http://www.vergenet.net/~conrad/software"
1412 "/xsel/download/xsel-" version ".tar.gz"))
1413 (sha256
1414 (base32
1415 "070lbcpw77j143jrbkh0y1v10ppn1jwmjf92800w7x42vh4cw9xr"))))
1416 (build-system gnu-build-system)
1417 (inputs
1418 `(("libxt" ,libxt)))
1419 (home-page "http://www.vergenet.net/~conrad/software/xsel/")
1420 (synopsis "Manipulate X selection")
1421 (description
1422 "XSel is a command-line program for getting and setting the contents of
1423 the X selection. Normally this is only accessible by manually highlighting
1424 information and pasting it with the middle mouse button.
1425
1426 XSel reads from standard input and writes to standard output by default,
1427 but can also follow a growing file, display contents, delete entries and more.")
1428 (license (license:x11-style "file://COPYING"
1429 "See COPYING in the distribution."))))
1430
1431 (define-public xdpyprobe
1432 (package
1433 (name "xdpyprobe")
1434 (version "0.1")
1435 (source (origin
1436 (method url-fetch)
1437 (uri (string-append "https://github.com/alezost/" name
1438 "/releases/download/v" version
1439 "/" name "-" version ".tar.gz"))
1440 (sha256
1441 (base32
1442 "1h09wd2qcg08rj5hcakvdh9q01hkrj8vxly94ax3ch2x06lm0zq8"))))
1443 (build-system gnu-build-system)
1444 (inputs
1445 `(("libx11" ,libx11)))
1446 (home-page "https://github.com/alezost/xdpyprobe")
1447 (synopsis "Probe X server for connectivity")
1448 (description
1449 "Xdpyprobe is a tiny C program whose only purpose is to probe a
1450 connectivity of the X server running on a particular @code{DISPLAY}.")
1451 (license license:gpl3+)))
1452
1453 (define-public rofi
1454 (package
1455 (name "rofi")
1456 (version "1.5.4")
1457 (source (origin
1458 (method url-fetch)
1459 (uri (string-append "https://github.com/DaveDavenport/rofi/"
1460 "releases/download/"
1461 version "/rofi-" version ".tar.xz"))
1462 (sha256
1463 (base32
1464 "1nslmyqyzhfr4hxd4llqkkkb8ap8apkdna32rllvar7r576059ci"))))
1465 (build-system gnu-build-system)
1466 (inputs
1467 `(("pango" ,pango)
1468 ("cairo" ,cairo)
1469 ("glib" ,glib)
1470 ("startup-notification" ,startup-notification)
1471 ("librsvg" ,librsvg)
1472 ("libxkbcommon" ,libxkbcommon)
1473 ("libxcb" ,libxcb)
1474 ("xcb-util" ,xcb-util)
1475 ("xcb-util-xrm" ,xcb-util-xrm)
1476 ("xcb-util-wm" ,xcb-util-wm)))
1477 (native-inputs
1478 `(("bison" ,bison)
1479 ("check" ,check)
1480 ("flex" ,flex)
1481 ("glib:bin" ,glib "bin")
1482 ("pkg-config" ,pkg-config)))
1483 (arguments
1484 `(#:parallel-tests? #f ; fails in some circumstances
1485 #:phases
1486 (modify-phases %standard-phases
1487 (add-before 'configure 'adjust-tests
1488 (lambda _
1489 (substitute* '("test/helper-expand.c")
1490 (("~root") "/root")
1491 (("~") "")
1492 (("g_get_home_dir \\(\\)") "\"/\""))
1493 #t)))))
1494 (home-page "https://github.com/DaveDavenport/rofi")
1495 (synopsis "Application launcher")
1496 (description "Rofi is a minimalist application launcher. It memorizes which
1497 applications you regularly use and also allows you to search for an application
1498 by name.")
1499 (license license:expat)))
1500
1501 (define-public tint2
1502 (package
1503 (name "tint2")
1504 (version "0.14.6")
1505 (source (origin
1506 (method url-fetch)
1507 (uri (string-append "https://gitlab.com/o9000/" name
1508 "/repository/archive.tar.gz?ref=" version))
1509 (file-name (string-append name "-" version ".tar.gz"))
1510 (sha256
1511 (base32
1512 "1kwzwxy4myagybm3rc7dgynfgp75742n348qibn1p2an9ggyivda"))))
1513 (build-system cmake-build-system)
1514 (arguments
1515 '(#:tests? #f ;no test target
1516 #:phases
1517 (modify-phases %standard-phases
1518 (add-after 'unpack 'fix-installation-prefix
1519 (lambda _
1520 (substitute* "CMakeLists.txt"
1521 (("/etc") "${CMAKE_INSTALL_PREFIX}/etc"))
1522 #t)))))
1523 (inputs
1524 `(("gtk+" ,gtk+-2)
1525 ("imlib2" ,imlib2)
1526 ("librsvg" ,librsvg)
1527 ("libxcomposite" ,libxcomposite)
1528 ("libxdamage" ,libxdamage)
1529 ("libxft" ,libxft)
1530 ("libxinerama" ,libxinerama)
1531 ("libxrandr" ,libxrandr)
1532 ("startup-notification" ,startup-notification)))
1533 (native-inputs
1534 `(("gettext" ,gettext-minimal)
1535 ("pkg-config" ,pkg-config)))
1536 (home-page "https://gitlab.com/o9000/tint2")
1537 (synopsis "Lightweight task bar")
1538 (description
1539 "Tint2 is a simple task bar made for modern X window managers. It was
1540 specifically made for Openbox but it should also work with other window
1541 managers (GNOME, KDE, XFCE etc.).
1542
1543 The taskbar includes transparency and color settings for the font, icons,
1544 border, and background. It also supports multihead setups, customized mouse
1545 actions, a built-in clock, a battery monitor and a system tray.")
1546 (license license:gpl2)))
1547
1548 (define-public dzen
1549 (let ((commit "488ab66019f475e35e067646621827c18a879ba1")
1550 (revision "1"))
1551 (package
1552 (name "dzen")
1553 (version (string-append "0.9.5-" ; Taken from `config.mk`.
1554 revision "." (string-take commit 7)))
1555 (source (origin
1556 (method git-fetch)
1557 (uri (git-reference
1558 (url "https://github.com/robm/dzen")
1559 (commit commit)))
1560 (file-name (string-append name "-" version))
1561 (sha256
1562 (base32
1563 "0y47d6ii87vf4a517gi4fh0yl06f8b085sra77immnsasbq9pxnw"))))
1564 (build-system gnu-build-system)
1565 (arguments
1566 `(#:tests? #f ; No test suite.
1567 #:make-flags ; Replacement for `config.mk`.
1568 (list
1569 (string-append "VERSION = " ,version)
1570 (string-append "PREFIX = " %output)
1571 "MANPREFIX = ${PREFIX}/share/man"
1572 "INCS = -I."
1573 "LIBS = -lc -lX11 -lXinerama -lXpm $(shell pkg-config --libs xft)"
1574 "CFLAGS = -Wall -Os ${INCS} -DVERSION=\\\"${VERSION}\\\"\
1575 -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT $(shell pkg-config --cflags xft)"
1576 "LDFLAGS = ${LIBS}"
1577 "CC = gcc"
1578 "LD = ${CC}")
1579 #:phases
1580 (modify-phases %standard-phases
1581 (delete 'configure) ; No configuration script.
1582 ;; Use own make-flags instead of `config.mk`.
1583 (add-before 'build 'dont-include-config-mk
1584 (lambda _
1585 (substitute* "Makefile" (("include config.mk") ""))
1586 #t)))))
1587 (inputs
1588 `(("libx11" ,libx11)
1589 ("libxft" ,libxft)
1590 ("libxpm" ,libxpm)
1591 ("libxinerama" ,libxinerama)))
1592 (native-inputs `(("pkg-config" ,pkg-config)))
1593 (synopsis "General purpose messaging, notification and menuing program for X11")
1594 (description "Dzen is a general purpose messaging, notification and menuing
1595 program for X11. It was designed to be fast, tiny and scriptable in any language.")
1596 (home-page "https://github.com/robm/dzen")
1597 (license license:expat))))
1598
1599 (define-public xftwidth
1600 (package
1601 (name "xftwidth")
1602 (version "20170402")
1603 (source
1604 (origin
1605 (method git-fetch)
1606 (uri (git-reference
1607 (url "http://github.com/vixus0/xftwidth")
1608 (commit "35ff963908d41a8a6a7101c434c88255728025ee")))
1609 (sha256
1610 (base32
1611 "1jwl25785li24kbp0m1wxfwk4dgxkliynn03nsj813cjr34kq16h"))
1612 (file-name (string-append name "-" version "-checkout"))))
1613 (build-system gnu-build-system)
1614 (inputs `(("freetype" ,freetype)
1615 ("libx11" ,libx11)
1616 ("fontconfig" ,fontconfig)
1617 ("libxft" ,libxft)))
1618 (native-inputs
1619 `(("pkg-config" ,pkg-config)))
1620 (arguments
1621 '(#:phases
1622 (modify-phases %standard-phases
1623 (add-after 'unpack 'fix-makefile ; /usr/bin doesn't show up in PATH
1624 (lambda _ (substitute* "Makefile" (("usr/") "")) #t))
1625 (delete 'check) ; no check included in Makefile
1626 (delete 'configure))
1627 #:make-flags
1628 (let ((out (assoc-ref %outputs "out")))
1629 (list (string-append "DESTDIR=" out)))))
1630 (home-page "https://github.com/vixus0/xftwidth")
1631 (synopsis "Calculator for determining pixel widths of displayed text using Xft fonts")
1632 (description "xftwidth is a small C program for calculating the pixel
1633 widths of displayed text using Xft fonts. It is especially useful in scripts
1634 for displaying text in graphical panels, menus, popups, and notification
1635 windows generated using dzen. These scripts are often used in conjunction with
1636 minimalistic tiling window managers such as herbstluftwm and bspwm.")
1637 (license license:expat)))
1638
1639 (define-public xcb-util-xrm
1640 (package
1641 (name "xcb-util-xrm")
1642 (version "1.3")
1643 (source (origin
1644 (method url-fetch)
1645 (uri (string-append
1646 "https://github.com/Airblader/xcb-util-xrm/releases"
1647 "/download/v" version "/xcb-util-xrm-" version ".tar.bz2"))
1648 (sha256
1649 (base32
1650 "118cj1ybw86pgw0l5whn9vbg5n5b0ijcpx295mwahzi004vz671h"))
1651 (modules '((guix build utils)))
1652 (snippet
1653 ;; Drop bundled m4.
1654 '(begin
1655 (delete-file-recursively "m4")
1656 #t))))
1657 (build-system gnu-build-system)
1658 (native-inputs
1659 `(("pkg-config" ,pkg-config)
1660 ("m4" ,m4)
1661 ("libx11" ,libx11))) ; for tests
1662 (inputs
1663 `(("libxcb" ,libxcb)
1664 ("xcb-util" ,xcb-util)))
1665 (home-page "https://github.com/Airblader/xcb-util-xrm")
1666 (synopsis "XCB utility functions for the X resource manager")
1667 (description
1668 "The XCB util module provides a number of libraries which sit on
1669 top of libxcb, the core X protocol library, and some of the extension
1670 libraries. These experimental libraries provide convenience functions
1671 and interfaces which make the raw X protocol more usable. Some of the
1672 libraries also provide client-side code which is not strictly part of
1673 the X protocol but which has traditionally been provided by Xlib.
1674
1675 XCB util-xrm module provides the following libraries:
1676
1677 - xrm: utility functions for the X resource manager.")
1678 (license license:x11)))
1679
1680 (define-public xcalib
1681 (package
1682 (name "xcalib")
1683 (version "0.10")
1684 (home-page "https://github.com/OpenICC/xcalib")
1685 (source (origin
1686 (method git-fetch)
1687 (uri (git-reference
1688 (url home-page)
1689 (commit version)))
1690 (file-name (git-file-name name version))
1691 (sha256
1692 (base32
1693 "05fzdjmhiafgi2jf0k41i3nm0837a78sb6yv59cwc23nla8g0bhr"))
1694 (patches
1695 (list
1696 ;; Add missing documentation for the new --output option.
1697 ;; This upstream patch can be removed on the next update.
1698 (origin
1699 (method url-fetch)
1700 (uri (string-append
1701 home-page "/commit/"
1702 "ae03889b91fe984b18e925ad2b5e6f2f7354e058.patch"))
1703 (file-name "xcalib-update-man-page.patch")
1704 (sha256
1705 (base32
1706 "0f7b4d5484x4b9n1bwhqmar0kcaa029ffff7bp3xpr734n1qgqb6")))))))
1707 (build-system cmake-build-system)
1708 (arguments
1709 '(#:tests? #f)) ; no test suite
1710 (inputs `(("libx11" ,libx11)
1711 ("libxext" ,libxext)
1712 ("libxrandr" ,libxrandr)
1713 ("libxxf86vm" ,libxxf86vm)))
1714 (synopsis "Tiny monitor calibration loader for XFree86 (or X.org)")
1715 (description "xcalib is a tiny tool to load the content of vcgt-Tags in ICC
1716 profiles to the video card's gamma ramp. It does work with most video card
1717 drivers except the generic VESA driver. Alter brightness, contrast, RGB, and
1718 invert colors on a specific display/screen.")
1719 (license license:gpl2)))
1720
1721 (define-public nxbelld
1722 (package
1723 (name "nxbelld")
1724 (version "0.1.2")
1725 (source (origin
1726 (method git-fetch)
1727 (uri (git-reference
1728 (url "https://github.com/dusxmt/nxbelld")
1729 (commit version)))
1730 (sha256
1731 (base32
1732 "04qwhmjs51irinz5mjlxdb3dc6vr79dqmc5fkj80x1ll3ylh5n3z"))
1733 (file-name (git-file-name name version))))
1734 (build-system gnu-build-system)
1735 (arguments '(#:configure-flags `("--enable-sound"
1736 "--enable-wave"
1737 "--enable-alsa")))
1738 (native-inputs `(("autoconf" ,autoconf)
1739 ("automake" ,automake)
1740 ("pkg-config" ,pkg-config)
1741 ("perl" ,perl)))
1742 (inputs `(("libx11" ,libx11)
1743 ("alsa-lib" ,alsa-lib)))
1744 (synopsis "Daemon that performs an action every time the X11 bell is rung")
1745 (description "nxbelld is a tiny utility to aid people who either don't
1746 like the default PC speaker beep, or use a sound driver that doesn't have
1747 support for the PC speaker. The utility performs a given action every time
1748 the X bell is rung. The actions nxbelld can currently perform include running
1749 a specified program, emulating the PC speaker beep using the sound card (default),
1750 or playing a PCM encoded WAVE file.")
1751 (home-page "https://github.com/dusxmt/nxbelld")
1752 (license license:gpl3+)))
1753
1754 (define-public xautolock
1755 (package
1756 (name "xautolock")
1757 (version "2.2")
1758 (source (origin
1759 (method url-fetch)
1760 (uri (string-append "https://www.ibiblio.org/pub/linux/X11/"
1761 "screensavers/xautolock-" version ".tgz"))
1762 (sha256
1763 (base32
1764 "18jd3k3pvlm5x1adyqw63z2b3f4ixh9mfvz9asvnskk3fm8jgw0i"))))
1765 (build-system gnu-build-system)
1766 (native-inputs
1767 `(("imake" ,imake)))
1768 (inputs
1769 `(("libx11" ,libx11)
1770 ("libxext" ,libxext)
1771 ("libxscrnsaver" ,libxscrnsaver)))
1772 (arguments
1773 `(#:tests? #f
1774 #:phases
1775 (modify-phases %standard-phases
1776 (replace 'configure
1777 (lambda* (#:key inputs outputs #:allow-other-keys)
1778 (let ((imake (assoc-ref inputs "imake"))
1779 (out (assoc-ref outputs "out")))
1780 ;; Generate Makefile
1781 (invoke "xmkmf")
1782 (substitute* "Makefile"
1783 ;; These imake variables somehow remain undefined
1784 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
1785 ;; Reset a few variable defaults that are set in imake templates
1786 ((imake) out)
1787 (("(MANPATH = )[[:graph:]]*" _ front)
1788 (string-append front out "/share/man")))
1789 ;; Old BSD-style 'union wait' is unneeded (defining
1790 ;; _USE_BSD did not seem to fix it)
1791 (substitute* "src/engine.c"
1792 (("union wait status") "int status = 0"))
1793 #t)))
1794 (add-after 'install 'install/man
1795 (lambda _
1796 (invoke "make" "install.man"))))))
1797 (home-page "https://ibiblio.org/pub/Linux/X11/screensavers/")
1798 (synopsis "Program launcher for idle X sessions")
1799 (description "Xautolock monitors input devices under the X Window
1800 System, and launches a program of your choice if there is no activity after
1801 a user-configurable period of time.")
1802 (license license:gpl2)))
1803
1804 (define-public screen-message
1805 (package
1806 (name "screen-message")
1807 (version "0.25")
1808 (source (origin
1809 (method url-fetch)
1810 (uri (string-append
1811 "https://www.joachim-breitner.de/archive/screen-message"
1812 "/screen-message-" version ".tar.gz"))
1813 (sha256
1814 (base32
1815 "1lw955qq5pq010lzmaf32ylj2iprgsri9ih4hx672c3f794ilab0"))))
1816 (build-system gnu-build-system)
1817 (inputs `(("gtk3" ,gtk+)
1818 ("gdk" ,gdk-pixbuf)
1819 ("pango" ,pango)))
1820 (native-inputs `(("pkg-config" ,pkg-config)))
1821 (arguments
1822 ;; The default configure puts the 'sm' binary in games/ instead of bin/ -
1823 ;; this fixes it:
1824 `(#:make-flags (list (string-append "execgamesdir=" %output "/bin"))))
1825 (synopsis "Print messages on your screen")
1826 (description "@code{screen-message} is a tool for displaying text on
1827 your screen. It will make the text as large as possible and display it
1828 with black color on a white background (colors are configurable on the
1829 commandline).")
1830 (home-page "https://www.joachim-breitner.de/projects#screen-message")
1831 (license license:gpl2+)))
1832
1833 (define-public xss-lock
1834 ;; xss-lock does not seem to be maintained any longer, but the last commits
1835 ;; fix important issues so we package them.
1836 (let ((version "0.3.0")
1837 (revision "1")
1838 (commit "1e158fb20108058dbd62bd51d8e8c003c0a48717"))
1839 (package
1840 (name "xss-lock")
1841 (version (git-version version revision commit))
1842 (source (origin
1843 (method git-fetch)
1844 (uri (git-reference
1845 (url "https://bitbucket.org/raymonad/xss-lock.git")
1846 (commit commit)))
1847 (file-name (git-file-name name version))
1848 (sha256
1849 (base32
1850 "10hx7k7ga8g08akwz8qrsvj8iqr5nd4siiva6sjx789jvf0sak7r"))))
1851 (build-system cmake-build-system)
1852 (inputs `(("glib" ,glib)
1853 ("xcb-util" ,xcb-util)))
1854 (native-inputs
1855 `(("python-docutils" ,python-docutils)
1856 ("pkg-config" ,pkg-config)))
1857 (arguments
1858 `(#:tests? #f))
1859 (synopsis "Use external screen locker on events")
1860 (description "@code{xss-lock} listens to X signals to fire up a
1861 user-defined screensaver. In effect this automatically locks the
1862 screen when closing a laptop lid or after a period of user inactivity (as set
1863 with @code{xset s TIMEOUT}). The notifier command, if specified, is executed
1864 first. Additionally, xss-lock uses the inhibition logic to lock the screen
1865 before the system goes to sleep.")
1866 (home-page "https://bitbucket.org/raymonad/xss-lock")
1867 (license license:expat))))
1868
1869 (define-public python-pyperclip
1870 (package
1871 (name "python-pyperclip")
1872 (version "1.6.4")
1873 (source
1874 (origin
1875 (method url-fetch)
1876 (uri (pypi-uri "pyperclip" version))
1877 (sha256
1878 (base32
1879 "1p505c23ji06r28k1y67siihsbdzdf1brhlqpyv9ams4gk9863pp"))))
1880 (build-system python-build-system)
1881 (arguments
1882 '(#:tests? #f)) ; Not clear how to make tests pass.
1883 (inputs
1884 `(("xclip" ,xclip)
1885 ("xsel" ,xsel)))
1886 (home-page "https://github.com/asweigart/pyperclip")
1887 (synopsis "Python clipboard module")
1888 (description
1889 "Pyperclip is a clipboard module for Python, handling copy/pasting from
1890 the X11 clipboard")
1891 (license license:bsd-3)))
1892
1893 (define-public numlockx
1894 (package
1895 (name "numlockx")
1896 (version "1.2")
1897 (source (origin
1898 (method git-fetch)
1899 (uri (git-reference
1900 ;; It seems that upstream is gone.
1901 (url "https://github.com/rg3/numlockx")
1902 (commit version)))
1903 (file-name (git-file-name name version))
1904 (sha256
1905 (base32
1906 "1w49fayhwzn5rx0z1q2lrvm7z8jrd34lgb89p853a024bixc3cf2"))))
1907 (build-system gnu-build-system)
1908 (inputs
1909 `(("xorg-server" ,xorg-server)))
1910 (home-page "https://github.com/rg3/numlockx")
1911 (synopsis "Turns on the numlock key in X11")
1912 (description "@command{numlockx} is a tiny program that lets you turn on
1913 the numlock key in X11. It can be called from the user's initialization files
1914 to automatically turn it on on login.")
1915 (license license:expat)))
1916
1917 (define-public xrandr-invert-colors
1918 (package
1919 (name "xrandr-invert-colors")
1920 (version "0.01")
1921 (source (origin
1922 (method git-fetch)
1923 (uri (git-reference
1924 (url "https://github.com/zoltanp/xrandr-invert-colors")
1925 (commit (string-append "v" version))))
1926 (file-name (git-file-name name version))
1927 (sha256
1928 (base32
1929 "1br3x9vr6xm4ika06n8cfxx1b3wdchdqvyzjl4y1chmivrml8x9h"))))
1930 (build-system gnu-build-system)
1931 (arguments
1932 `(#:make-flags (list "CC=gcc")
1933 #:tests? #f ; there are none
1934 #:phases
1935 (modify-phases %standard-phases
1936 (delete 'configure)
1937 (replace 'install
1938 (lambda* (#:key outputs #:allow-other-keys)
1939 (let* ((out (assoc-ref outputs "out"))
1940 (bin (string-append out "/bin")))
1941 (install-file "xrandr-invert-colors.bin" bin)
1942 #t))))))
1943 (inputs
1944 `(("libxrandr" ,libxrandr)))
1945 (home-page "https://github.com/zoltanp/xrandr-invert-colors")
1946 (synopsis "Invert display colors")
1947 (description "This package provides a small utility for inverting the
1948 colors on all monitors attached to an XRandR-capable X11 display server.")
1949 (license license:gpl3+)))
1950
1951 (define-public sct
1952 (package
1953 (name "sct")
1954 (version "0.5")
1955 (source
1956 (origin
1957 (method url-fetch)
1958 (uri
1959 (string-append "https://www.umaxx.net/dl/sct-"
1960 version ".tar.gz"))
1961 (sha256
1962 (base32 "0lrhx771iccbw04wrhj0ygids1pzmjfc4hvklm30m3p3flvhqf0m"))))
1963 (build-system gnu-build-system)
1964 (arguments
1965 `(#:make-flags
1966 (list ,(string-append "CC=" (cc-for-target)))
1967 #:tests? #f ; no test suite
1968 #:phases
1969 (modify-phases %standard-phases
1970 (delete 'configure)
1971 (add-after 'unpack 'fix-sctd-paths
1972 (lambda* (#:key outputs inputs #:allow-other-keys)
1973 (let ((out (assoc-ref outputs "out"))
1974 (coreutils (assoc-ref inputs "coreutils"))
1975 (inetutils (assoc-ref inputs "inetutils"))
1976 (sed (assoc-ref inputs "sed")))
1977 (substitute* "sctd.sh"
1978 (("\\$\\(which sct\\)") (string-append out "/bin/sct"))
1979 (("date") (string-append coreutils "/bin/date"))
1980 (("printf") (string-append coreutils "/bin/printf"))
1981 (("sleep") (string-append coreutils "/bin/sleep"))
1982 (("logger") (string-append inetutils "/bin/logger"))
1983 (("sed") (string-append sed "/bin/sed"))))))
1984 (replace 'install
1985 (lambda* (#:key outputs #:allow-other-keys)
1986 (let ((out (assoc-ref outputs "out")))
1987 (install-file "sct" (string-append out "/bin"))
1988 (install-file "sctd.sh" (string-append out "/bin"))
1989 (install-file "sct.1" (string-append out "/man/man1"))
1990 (install-file "sctd.1" (string-append out "/man/man1"))
1991 (rename-file (string-append out "/bin/sctd.sh")
1992 (string-append out "/bin/sctd"))
1993 #t))))))
1994 (inputs
1995 `(("coreutils" ,coreutils) ; sctd uses "date", "printf" and "sleep"
1996 ("inetutils" ,inetutils) ; sctd uses "logger"
1997 ("libxrandr" ,libxrandr)
1998 ("sed" ,sed))) ; sctd uses "sed"
1999 (home-page "https://www.umaxx.net")
2000 (synopsis "Set the color temperature of the screen")
2001 (description "@code{sct} is a lightweight utility to set the color
2002 temperature of the screen.")
2003 (license (license:non-copyleft "file://sct.c")))) ; "OpenBSD" license
2004
2005 (define-public xsecurelock
2006 (package
2007 (name "xsecurelock")
2008 (version "1.6.0")
2009 (source (origin
2010 (method url-fetch)
2011 (uri (string-append
2012 "https://github.com/google/xsecurelock/releases"
2013 "/download/v" version "/xsecurelock-" version ".tar.gz"))
2014 (sha256
2015 (base32 "070gknyv0s5hz9hkc6v73m2v7ssyjwgl93b5hd4glayfqxqjbmdp"))))
2016 (build-system gnu-build-system)
2017 (arguments
2018 '(#:configure-flags
2019 '("--with-pam-service-name=login"
2020 "--with-xkb"
2021 "--with-default-authproto-module=/run/setuid-programs/authproto_pam")))
2022 (native-inputs
2023 `(("pandoc" ,ghc-pandoc)
2024 ("pkg-config" ,pkg-config)))
2025 (inputs
2026 `(("fontconfig" ,fontconfig)
2027 ("libX11" ,libx11)
2028 ("libxcomposite" ,libxcomposite)
2029 ("libxext" ,libxext)
2030 ("libxfixes" ,libxfixes)
2031 ("libxft" ,libxft)
2032 ("libxmu" ,libxmu)
2033 ("libxrandr" ,libxrandr)
2034 ("libxscrnsaver" ,libxscrnsaver)
2035 ("linux-pam" ,linux-pam)))
2036 (home-page "https://github.com/google/xsecurelock")
2037 (synopsis "X11 screen lock utility with the primary goal of security")
2038 (description "@code{xsecurelock} is an X11 screen locker which uses
2039 a modular design to avoid the usual pitfalls of screen locking utility design.
2040
2041 As a consequence of the modular design, the usual screen locker service
2042 shouldn't be used with @code{xsecurelock}. Instead, you need to add a helper
2043 binary to setuid-binaries:
2044 @example
2045 (setuid-programs (cons*
2046 (file-append xsecurelock \"/libexec/xsecurelock/authproto_pam\")
2047 %setuid-programs))
2048 @end example")
2049 (license license:asl2.0)))
2050
2051 (define-public wl-clipboard
2052 (package
2053 (name "wl-clipboard")
2054 (version "2.0.0")
2055 (source
2056 (origin
2057 (method git-fetch)
2058 (uri (git-reference
2059 (url "https://github.com/bugaevc/wl-clipboard")
2060 (commit (string-append "v" version))))
2061 (file-name (git-file-name name version))
2062 (sha256
2063 (base32 "0c4w87ipsw09aii34szj9p0xfy0m00wyjpll0gb0aqmwa60p0c5d"))))
2064 (build-system meson-build-system)
2065 (native-inputs
2066 `(("pkg-config" ,pkg-config)))
2067 (inputs
2068 `(("wayland" ,wayland)
2069 ("wayland-protocols" ,wayland-protocols)))
2070 (home-page "https://github.com/bugaevc/wl-clipboard")
2071 (synopsis "Command-line copy/paste utilities for Wayland")
2072 (description "Wl-clipboard is a set of command-line copy/paste utilities for
2073 Wayland.")
2074 (license license:gpl3+)))
2075
2076 (define-public autocutsel
2077 (package
2078 (name "autocutsel")
2079 (version "0.10.0")
2080 (source (origin
2081 (method url-fetch)
2082 (uri (string-append "https://github.com/sigmike/autocutsel"
2083 "/releases/download/" version "/"
2084 "autocutsel-" version ".tar.gz"))
2085 (sha256
2086 (base32
2087 "0gsys2dzh4az51ndcsabhlbbrjn2nm75lnjr45kg6r8sm8q66dx2"))))
2088 (build-system gnu-build-system)
2089 (arguments
2090 '(#:tests? #f)) ; no "check" target
2091 (native-inputs `(("libx11" ,libx11)
2092 ("libxaw" ,libxaw)))
2093 (home-page "https://www.nongnu.org/autocutsel/")
2094 (synopsis "Automated X11 clipboard and cutbuffer synchronization")
2095 (description "@code{autocutsel} tracks changes in the server's cutbuffer
2096 and clipboard selection. When the clipboard is changed, it updates the
2097 cutbuffer. When the cutbuffer is changed, it owns the clipboard selection.
2098 The cutbuffer and clipboard selection are always synchronized.")
2099 (license license:gpl2+)))
2100
2101 (define-public jgmenu
2102 (package
2103 (name "jgmenu")
2104 (version "4.1.0")
2105 (source
2106 (origin
2107 (method git-fetch)
2108 (uri (git-reference
2109 (url "https://github.com/johanmalm/jgmenu")
2110 (commit (string-append "v" version))))
2111 (file-name (git-file-name name version))
2112 (sha256
2113 (base32
2114 "1wsh37rapb1bszlq36hvwxqvfds39hbvbl152m8as4zlh93wfvvk"))))
2115 (build-system gnu-build-system)
2116 (native-inputs
2117 `(("cppcheck" ,cppcheck)
2118 ("perl" ,perl)
2119 ("pkg-config" ,pkg-config)))
2120 (inputs
2121 `(("cairo" ,cairo)
2122 ("glib" ,glib)
2123 ("librsvg" ,librsvg)
2124 ("libx11" ,libx11)
2125 ("libxml2" ,libxml2)
2126 ("libxrandr" ,libxrandr)
2127 ("pango" ,pango)))
2128 (arguments
2129 `(#:phases
2130 (modify-phases %standard-phases
2131 (add-after 'unpack 'fix-tests
2132 (lambda _
2133 (substitute* "scripts/cppcheck-wrapper.sh"
2134 (("--library=/usr/share/cppcheck/cfg/gnu\\.cfg")
2135 ""))
2136 #t))
2137 (replace 'configure
2138 (lambda* (#:key outputs #:allow-other-keys)
2139 (setenv "CC" "gcc")
2140 (invoke "./configure"
2141 (string-append "--prefix=" (assoc-ref outputs "out")))
2142 #t)))))
2143 (synopsis "Simple X11 menu")
2144 (description
2145 "This is a simple menu for X11 designed for scripting and tweaking. It
2146 can optionally use some appearance settings from XSettings, tint2 and GTK.")
2147 (home-page "https://jgmenu.github.io/")
2148 (license license:gpl2)))
2149
2150 (define-public xwallpaper
2151 (package
2152 (name "xwallpaper")
2153 (version "0.6.5")
2154 (source
2155 (origin
2156 (method git-fetch)
2157 (uri (git-reference
2158 (url "https://github.com/stoeckmann/xwallpaper")
2159 (commit (string-append "v" version))))
2160 (file-name (git-file-name name version))
2161 (sha256
2162 (base32 "121ai4dc0v65qk12gn9w62ixly8hc8a5qrygkbb82vy8ck4jqxj7"))))
2163 (build-system gnu-build-system)
2164 (native-inputs
2165 `(("autoconf" ,autoconf)
2166 ("automake" ,automake)
2167 ("pkg-config" ,pkg-config)))
2168 (inputs
2169 `(("libjpeg-turbo" ,libjpeg-turbo)
2170 ("libpng" ,libpng)
2171 ("libxpm" ,libxpm)
2172 ("pixman" ,pixman)
2173 ("xcb-util" ,xcb-util)
2174 ("xcb-util-image" ,xcb-util-image)))
2175 (home-page "https://github.com/stoeckmann/xwallpaper")
2176 (synopsis "Wallpaper setting utility for X")
2177 (description
2178 "The xwallpaper utility allows you to set image files as your X
2179 wallpaper. JPEG, PNG, and XPM file formats are supported.
2180
2181 The wallpaper is also advertised to programs which support semi-transparent
2182 backgrounds.")
2183 (license license:isc)))
2184
2185 (define-public xwrits
2186 (package
2187 (name "xwrits")
2188 (version "2.26")
2189 (source
2190 (origin
2191 (method url-fetch)
2192 (uri (string-append "https://www.lcdf.org/~eddietwo/xwrits/"
2193 "xwrits-" version ".tar.gz"))
2194 (sha256
2195 (base32 "1n7y0fqpcvmzznvbsn14hzy5ddaa3lilm8aw6ckscqndnh4lijma"))))
2196 (build-system gnu-build-system)
2197 (arguments
2198 `(#:phases
2199 (modify-phases %standard-phases
2200 (add-after 'install 'install-docs
2201 (lambda* (#:key outputs #:allow-other-keys)
2202 (let* ((out (assoc-ref outputs "out"))
2203 (doc (string-append out "/share/doc/xwrits")))
2204 (install-file "GESTURES" doc)
2205 (install-file "README" doc)
2206 #t))))))
2207 (inputs
2208 `(("libx11" ,libx11)
2209 ("libxinerama" ,libxinerama)))
2210 (home-page "https://www.lcdf.org/~eddietwo/xwrits/")
2211 (synopsis "Reminds you to take wrist breaks")
2212 (description "Xwrits reminds you to take wrist breaks for prevention or
2213 management of repetitive stress injuries. When you should take a break, it
2214 pops up an X window, the warning window. You click on the warning window,
2215 then take a break. The window changes appearance while you take the break.
2216 It changes again when your break is over. Then you just resume typing.
2217 Xwrits hides itself until you should take another break.")
2218 (license license:gpl2)))
2219
2220 (define-public xsettingsd
2221 (package
2222 (name "xsettingsd")
2223 (version "1.0.0")
2224 (source
2225 (origin
2226 (method git-fetch)
2227 (uri (git-reference
2228 (url "https://github.com/derat/xsettingsd")
2229 (commit (string-append "v" version))))
2230 (file-name (git-file-name name version))
2231 (sha256
2232 (base32
2233 "05m4jlw0mgwp24cvyklncpziq1prr2lg0cq9c055sh4n9d93d07v"))))
2234 (build-system scons-build-system)
2235 (inputs
2236 `(("libx11" ,libx11)))
2237 (native-inputs
2238 `(("pkg-config" ,pkg-config)
2239 ("googletest" ,googletest)
2240 ("googletest-source" ,(package-source googletest))))
2241 (arguments
2242 `(#:scons ,scons-python2
2243 #:scons-flags
2244 (list "CC=gcc")
2245 #:phases
2246 (modify-phases %standard-phases
2247 (add-before 'build 'patch-sconstruct
2248 (lambda* (#:key inputs #:allow-other-keys)
2249 (substitute* "SConstruct"
2250 ;; scons doesn't pick up environment variables automatically
2251 ;; so it needs help to find path variables
2252 (("env = Environment\\(")
2253 "env = Environment(
2254 ENV = {
2255 'PATH': os.environ['PATH'],
2256 'CPATH': os.environ['C_INCLUDE_PATH'],
2257 'LIBRARY_PATH': os.environ['LIBRARY_PATH'],
2258 'PKG_CONFIG_PATH': os.environ['PKG_CONFIG_PATH']
2259 },")
2260 ;; Update path to gtest source files used in tests
2261 (("/usr/src/gtest") (string-append
2262 (assoc-ref inputs "googletest-source")
2263 "/googletest"))
2264 ;; Exclude one warning that causes a build error
2265 (("-Werror") "-Werror -Wno-error=sign-compare"))
2266 #t))
2267 ;; The SConstruct script doesn't configure installation so
2268 ;; binaries must be copied to the output path directly
2269 (replace 'install
2270 (lambda* (#:key outputs #:allow-other-keys)
2271 (let* ((out (assoc-ref outputs "out"))
2272 (bin (string-append out "/bin")))
2273 (mkdir-p bin)
2274 (install-file "xsettingsd" bin)
2275 (install-file "dump_xsettings" bin)
2276 #t))))))
2277 (home-page "https://github.com/derat/xsettingsd")
2278 (synopsis "Xorg settings daemon")
2279 (description "@command{xsettingsd} is a lightweight daemon that provides settings to
2280 Xorg applications via the XSETTINGS specification. It is used for defining
2281 font and theme settings when a complete desktop environment (GNOME, KDE) is
2282 not running. With a simple @file{.xsettingsd} configuration file one can avoid
2283 configuring visual settings in different UI toolkits separately.")
2284 (license license:bsd-3)))
2285
2286 (define-public clipnotify
2287 (package
2288 (name "clipnotify")
2289 (version "1.0.2")
2290 (source
2291 (origin
2292 (method git-fetch)
2293 (uri (git-reference
2294 (url "https://github.com/cdown/clipnotify")
2295 (commit version)))
2296 (file-name (git-file-name name version))
2297 (sha256
2298 (base32
2299 "1v3ydm5ljy8z1savmdxrjyx7a5bm5013rzw80frp3qbbjaci0wbg"))))
2300 (build-system gnu-build-system)
2301 (arguments
2302 `(#:phases
2303 (modify-phases %standard-phases
2304 (delete 'configure)
2305 (replace 'install
2306 (lambda* (#:key inputs outputs #:allow-other-keys)
2307 (let* ((out (assoc-ref outputs "out"))
2308 (bin (string-append out "/bin"))
2309 (doc (string-append %output "/share/doc/" ,name "-" ,version)))
2310 (install-file "clipnotify" bin)
2311 (install-file "README.md" doc)
2312 #t))))
2313 #:make-flags
2314 (list ,(string-append "CC=" (cc-for-target)))
2315 #:tests? #f)) ; no test suite
2316 (inputs
2317 `(("libx11" ,libx11)
2318 ("libXfixes" ,libxfixes)))
2319 (home-page "https://github.com/cdown/clipnotify")
2320 (synopsis "Notify on new X clipboard events")
2321 (description "@command{clipnotify} is a simple program that, using the
2322 XFIXES extension to X11, waits until a new selection is available and then
2323 exits.
2324
2325 It was primarily designed for clipmenu, to avoid polling for new selections.
2326
2327 @command{clipnotify} doesn't try to print anything about the contents of the
2328 selection, it just exits when it changes. This is intentional -- X11's
2329 selection API is verging on the insane, and there are plenty of others who
2330 have already lost their sanity to bring us xclip/xsel/etc. Use one of those
2331 tools to complement clipnotify.")
2332 (license license:public-domain)))
2333
2334 (define-public clipmenu
2335 (let ((commit "bcbe7b144598db4a103f14e8408c4b7327d6d5e1")
2336 (revision "1"))
2337 (package
2338 (name "clipmenu")
2339 (version (string-append "6.0.1-"
2340 revision "." (string-take commit 7)))
2341 (source
2342 (origin
2343 (method git-fetch)
2344 (uri (git-reference
2345 (url "https://github.com/cdown/clipmenu")
2346 (commit commit)))
2347 (file-name (git-file-name name version))
2348 (sha256
2349 (base32
2350 "0053j4i14lz5m2bzc5sch5id5ilr1bl196mp8fp0q8x74w3vavs9"))))
2351 (build-system gnu-build-system)
2352 (arguments
2353 `(#:phases
2354 (modify-phases %standard-phases
2355 (delete 'configure)
2356 (delete 'build)
2357 (replace 'install
2358 (lambda* (#:key inputs outputs #:allow-other-keys)
2359 (let* ((out (assoc-ref outputs "out"))
2360 (bin (string-append out "/bin"))
2361 (doc (string-append %output "/share/doc/"
2362 ,name "-" ,version)))
2363 (install-file "clipdel" bin)
2364 (install-file "clipmenu" bin)
2365 (install-file "clipmenud" bin)
2366 (install-file "README.md" doc)
2367 #t)))
2368 (add-after 'install 'wrap-script
2369 (lambda* (#:key inputs outputs #:allow-other-keys)
2370 (let* ((out (assoc-ref outputs "out"))
2371 (clipnotify (assoc-ref inputs "clipnotify"))
2372 (coreutils-minimal (assoc-ref inputs "coreutils-minimal"))
2373 (gawk (assoc-ref inputs "gawk"))
2374 (util-linux (assoc-ref inputs "util-linux"))
2375 (xdotool (assoc-ref inputs "xdotool"))
2376 (xsel (assoc-ref inputs "xsel")))
2377 (for-each
2378 (lambda (prog)
2379 (wrap-script (string-append out "/bin/" prog)
2380 `("PATH" ":" prefix
2381 ,(map (lambda (dir)
2382 (string-append dir "/bin"))
2383 (list clipnotify coreutils-minimal
2384 gawk util-linux xdotool xsel)))))
2385 '("clipmenu" "clipmenud" "clipdel")))
2386 #t))
2387 (replace 'check
2388 (lambda* (#:key inputs outputs #:allow-other-keys)
2389 ;; substitute a shebang appearing inside a string (the test
2390 ;; file writes this string to a temporary file):
2391 (substitute* "tests/test-clipmenu"
2392 (("#!/usr/bin/env bash")
2393 (string-append "#!" (which "bash"))))
2394 (invoke "tests/test-clipmenu")
2395 #t)))))
2396 (inputs
2397 `(("clipnotify" ,clipnotify)
2398 ("coreutils-minimal" ,coreutils-minimal)
2399 ("gawk" ,gawk)
2400 ("guile" ,guile-3.0) ; for wrap-script
2401 ("util-linux" ,util-linux)
2402 ("xdotool" ,xdotool)
2403 ("xsel" ,xsel)))
2404 (home-page "https://github.com/cdown/clipmenu")
2405 (synopsis "Simple clipboard manager using dmenu or rofi and xsel")
2406 (description "Start @command{clipmenud}, then run @command{clipmenu} to
2407 select something to put on the clipboard.
2408
2409 When @command{clipmenud} detects changes to the clipboard contents, it writes
2410 them out to the cache directory. @command{clipmenu} reads the cache directory
2411 to find all available clips and launches @command{dmenu} (or @command{rofi},
2412 depending on the value of @code{CM_LAUNCHER}) to let the user select a clip.
2413 After selection, the clip is put onto the PRIMARY and CLIPBOARD X selections.")
2414 (license license:public-domain))))
2415
2416 (define-public kbdd
2417 (package
2418 (name "kbdd")
2419 (version "0.7.1")
2420 (source
2421 (origin
2422 (method git-fetch)
2423 (uri (git-reference
2424 (url "https://github.com/qnikst/kbdd")
2425 (commit (string-append "v" version))))
2426 (file-name (git-file-name name version))
2427 (sha256
2428 (base32
2429 "0qkq75grbd4wkx4nlvswgavpijk9ad0pzqyj89a0ayjsbsn36pqy"))))
2430 (build-system gnu-build-system)
2431 (native-inputs
2432 `(("autoconf" ,autoconf)
2433 ("automake" ,automake)
2434 ("glib" ,glib "bin")
2435 ("pkg-config" ,pkg-config)))
2436 (inputs
2437 `(("dbus-glib", dbus-glib)
2438 ("glib" ,glib)
2439 ("libx11" ,libx11)))
2440 (home-page "https://github.com/qnikst/kbdd")
2441 (synopsis "Per-window keyboard layout switching daemon for X")
2442 (description "@command{kbdd} is a simple keyboard layout switching
2443 program, which is designed to run in an X11 session and remember
2444 keyboard layouts on a per-window basis. That can be very handy for a
2445 user of a non-US keyboard who does not want to jump through layouts back
2446 and forth while typing in terminals (mostly in a latin alphabet) and
2447 some kind of chat (in native language).
2448
2449 @command{kbdd} also supports D-Bus signals, which makes it possible to
2450 create layout indicator widgets.")
2451 (license license:bsd-2)))
2452
2453 (define-public j4-dmenu-desktop
2454 (package
2455 (name "j4-dmenu-desktop")
2456 (version "2.17")
2457 (source (origin
2458 (method git-fetch)
2459 (uri (git-reference
2460 (url "https://github.com/enkore/j4-dmenu-desktop")
2461 (commit (string-append "r" version))))
2462 (file-name (git-file-name name version))
2463 (sha256
2464 (base32
2465 "0v23fimkn83dcm5p53y2ymhklff3kwppxhf75sm8xmswrzkixpgc"))))
2466 (build-system cmake-build-system)
2467 (native-inputs
2468 `(("catch2" ,catch-framework2)))
2469 (arguments
2470 `(#:configure-flags '("-DWITH_GIT_CATCH=off")
2471 #:phases
2472 (modify-phases %standard-phases
2473 (add-after 'unpack 'find-catch
2474 (lambda _
2475 (substitute* "CMakeLists.txt"
2476 (("PATH_SUFFIXES catch") "PATH_SUFFIXES catch2"))
2477 #t))
2478 (replace 'check
2479 (lambda _
2480 (invoke "./j4-dmenu-tests" "exclude:SearchPath/XDG_DATA_HOME"))))))
2481 (synopsis "Fast desktop menu")
2482 (description
2483 "j4-dmenu-desktop is a replacement for i3-dmenu-desktop. Its purpose
2484 is to find @file{.desktop} files and offer you a menu to start an application
2485 using @command{dmenu}.")
2486 (home-page "https://github.com/enkore/j4-dmenu-desktop")
2487 (license license:gpl3+)))
2488
2489 (define-public wofi
2490 (package
2491 (name "wofi")
2492 (version "1.1.2")
2493 (source (origin
2494 (method hg-fetch)
2495 (uri (hg-reference
2496 (url "https://hg.sr.ht/~scoopta/wofi")
2497 (changeset (string-append "v" version))))
2498 (file-name (git-file-name name version))
2499 (sha256
2500 (base32
2501 "086j5wshawjbwdmmmldivfagc2rr7g5a2gk11l0snqqslm294xsn"))))
2502 (build-system meson-build-system)
2503 (arguments
2504 `(#:glib-or-gtk? #t))
2505 (native-inputs
2506 `(("pkg-config" ,pkg-config)))
2507 (inputs
2508 `(("gtk3" ,gtk+)
2509 ("wayland" ,wayland)))
2510 (synopsis "Launcher/menu program for wayland")
2511 (description
2512 "Wofi is a launcher/menu program for wlroots based wayland compositors
2513 such as sway, similar to @command{rofi}.")
2514 (home-page "https://hg.sr.ht/~scoopta/wofi")
2515 (license license:gpl3+)))