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