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