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