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