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