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