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