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