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