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