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