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