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