gnu: libdvdcss: Update to 1.4.3.
[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")
cc808564 703 (version "1.5")
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
cc808564 713 (base32 "0x64b7xqi5cbq29pb8s8r2kzbxaday1f5k0j70n3s2p7sahjxy72"))))
1410f342 714 (build-system gnu-build-system)
7953675f
TGR
715 (native-inputs
716 `(("autoconf" ,autoconf)
d258d9c7 717 ("autoconf-archive" ,autoconf-archive)
7953675f 718 ("automake" ,automake)))
1410f342 719 (inputs
7953675f 720 `(("giblib" ,giblib)
d258d9c7 721 ("libx11" ,libx11)
84d31a5c 722 ("libxcomposite" ,libxcomposite)
cc808564 723 ("libxext" ,libxext)
d258d9c7 724 ("libXfixes" ,libxfixes)))
7953675f 725 (home-page "https://github.com/resurrecting-open-source-projects/scrot")
1410f342
AK
726 (synopsis "Command-line screen capture utility for X Window System")
727 (description
0dfe4c3d 728 "Scrot saves a screenshot of a full screen, a window or a part
1410f342
AK
729of the screen selected by mouse.")
730 ;; This license removes a clause about X Consortium from the original
731 ;; X11 license.
732 (license (license:x11-style "file://COPYING"
733 "See 'COPYING' in the distribution."))))
4a01b30b 734
9f1d33be
AK
735(define-public slop
736 (package
737 (name "slop")
d2879269 738 (version "7.5")
9f1d33be 739 (source (origin
25d09f60
RW
740 (method git-fetch)
741 (uri (git-reference
b0e7b699 742 (url "https://github.com/naelstrof/slop")
25d09f60
RW
743 (commit (string-append "v" version))))
744 (file-name (git-file-name name version))
9f1d33be
AK
745 (sha256
746 (base32
d2879269 747 "1k8xxb4rj2fylr4vj16yvsf73cyywliz9cy78pl4ibmi03jhg837"))))
9f1d33be 748 (build-system cmake-build-system)
937b71df 749 (arguments
e1c014d7 750 '(#:tests? #f)) ; no "check" target
9f1d33be 751 (inputs
eb2b5f9d
MB
752 `(("glew" ,glew)
753 ("glm" ,glm)
01614de1 754 ("icu4c" ,icu4c)
9f1d33be 755 ("libxext" ,libxext)
e1c014d7 756 ("libxrender" ,libxrender)
9f1d33be
AK
757 ("mesa" ,mesa)))
758 (home-page "https://github.com/naelstrof/slop")
759 (synopsis "Select a region and print its bounds to stdout")
760 (description
761 "slop (Select Operation) is a tool that queries for a selection from a
762user and prints the region to stdout. It grabs the mouse and turns it into a
763crosshair, lets the user click and drag to make a selection (or click on a
764window) while drawing a pretty box around it, then finally prints the
765selection's dimensions to stdout.")
766 (license license:gpl3+)))
767
5c93de73
AK
768(define-public maim
769 (package
770 (name "maim")
09a79ec2 771 (version "5.6.3")
5c93de73 772 (source (origin
ab3159f8
RW
773 (method git-fetch)
774 (uri (git-reference
b0e7b699 775 (url "https://github.com/naelstrof/maim")
ab3159f8
RW
776 (commit (string-append "v" version))))
777 (file-name (git-file-name name version))
5c93de73
AK
778 (sha256
779 (base32
09a79ec2 780 "181mjjrjb9fs1ficcv9miqbk94v95j1yli7fjp2dj514g7nj9l3x"))))
5c93de73
AK
781 (build-system cmake-build-system)
782 (arguments
2b7d10d2 783 '(#:tests? #f)) ; no "check" target
5c93de73 784 (inputs
2b7d10d2
MB
785 `(("glm" ,glm)
786 ("libjpeg" ,libjpeg-turbo)
787 ("libpng" ,libpng)
788 ("libxcomposite" ,libxcomposite)
5c93de73 789 ("libxfixes" ,libxfixes)
2b7d10d2
MB
790 ("libxrandr" ,libxrandr)
791 ("mesa" ,mesa)
792 ("slop" ,slop)
793 ("zlib" ,zlib)))
5c93de73
AK
794 (home-page "https://github.com/naelstrof/maim")
795 (synopsis "Screenshot utility for X Window System")
796 (description
797 "maim (Make Image) is a tool that takes screenshots of your desktop and
798saves it in any format. Along with a full screen, it allows you to capture a
799predefined region or a particular window. Also, it makes it possible to
800include cursor in the resulting image.")
801 (license license:gpl3+)))
802
4a01b30b
AK
803(define-public unclutter
804 (package
805 (name "unclutter")
806 (version "8")
807 (source (origin
808 (method url-fetch)
809 (uri (string-append
810 "http://ftp.x.org/contrib/utilities/unclutter-"
811 version ".tar.Z"))
812 (sha256
813 (base32
814 "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
815 (build-system gnu-build-system)
816 (arguments
817 '(#:tests? #f ; no check target
ea0836cd
EF
818 #:phases
819 (modify-phases %standard-phases
820 (delete 'configure)
821 (replace 'install
822 (lambda* (#:key inputs outputs #:allow-other-keys)
823 (let* ((out (assoc-ref outputs "out"))
824 (bin (string-append out "/bin"))
825 (man1 (string-append out "/share/man/man1")))
826 (mkdir-p bin)
827 (mkdir-p man1)
e61c2991
TGR
828 (invoke "make" "install" "install.man"
829 (string-append "BINDIR=" bin)
830 (string-append "MANDIR=" man1))))))))
4a01b30b
AK
831 (inputs `(("libx11" ,libx11)))
832 (home-page "http://ftp.x.org/contrib/utilities/")
833 (synopsis "Hide idle mouse cursor")
834 (description
835 "Unclutter is a program which runs permanently in the background of an
836X11 session. It checks on the X11 pointer (cursor) position every few
837seconds, and when it finds it has not moved (and no buttons are pressed
838on the mouse, and the cursor is not in the root window) it creates a
839small sub-window as a child of the window the cursor is in. The new
840window installs a cursor of size 1x1 but a mask of all 0, i.e. an
841invisible cursor. This allows you to see all the text in an xterm or
842xedit, for example. The human factors crowd would agree it should make
843things less distracting.")
844 (license license:public-domain)))
ab69d9ac 845
6e79949f 846(define-public xautomation
847 (package
848 (name "xautomation")
849 (version "1.09")
850 (source
851 (origin
852 (method url-fetch)
853 (uri (string-append "https://www.hoopajoo.net/static/projects/"
854 "xautomation-" version ".tar.gz"))
855
856 (sha256
857 (base32
858 "03azv5wpg65h40ip2kk1kdh58vix4vy1r9bihgsq59jx2rhjr3zf"))))
859 (build-system gnu-build-system)
860 (inputs
861 `(("libpng" ,libpng)
862 ("libx11" ,libx11)
863 ("libxi" ,libxi)
864 ("libxtst" ,libxtst)))
865 (native-inputs
82b4d9ec 866 `(("xorgproto" ,xorgproto)))
6e79949f 867 (synopsis "Tools to automate tasks in X such as detecting on screen images")
868 (description
869 "Xautomation can control X from the command line for scripts, and
870do visual scraping to find things on the screen. The control interface
871allows mouse movement, clicking, button up/down, key up/down, etc, and
872uses the XTest extension so you don't have the annoying problems that
873xse has when apps ignore sent events. The visgrep program can find
168d5634 874images inside of images and reports the coordinates, allowing programs
6e79949f 875to find buttons, etc, on the screen to click on.")
876 (home-page "https://www.hoopajoo.net/projects/xautomation.html")
877 (license license:gpl2+)))
878
0ea0452c
MB
879(define-public xbanish
880 (package
881 (name "xbanish")
c59c04d3 882 (version "1.7")
0ea0452c
MB
883 (home-page "https://github.com/jcs/xbanish")
884 (source (origin
885 (method git-fetch)
886 (uri (git-reference (url home-page)
887 (commit (string-append "v" version))))
f1d4d79f 888 (file-name (git-file-name name version))
0ea0452c
MB
889 (sha256
890 (base32
c59c04d3 891 "0ic5f7zgc32p5g1wxas9y5h8dhik0pvsa8wmn6skdry56gw9vg9q"))))
0ea0452c
MB
892 (build-system gnu-build-system)
893 (arguments
c59c04d3 894 `(#:tests? #f ; no tests
0ea0452c
MB
895 #:make-flags (list "CC=gcc"
896 (string-append "PREFIX=" (assoc-ref %outputs "out")))
897 #:phases (modify-phases %standard-phases
c59c04d3 898 (delete 'configure)))) ; no configure script
0ea0452c
MB
899 (inputs
900 `(("libx11" ,libx11)
901 ("libxfixes" ,libxfixes)
902 ("libxi" ,libxi)
903 ("libxt" ,libxt)))
904 (synopsis "Banish the mouse cursor")
905 (description
906 "@command{xbanish} hides the mouse cursor when you start typing, and
907shows it again when the mouse cursor moves or a mouse button is pressed.")
908 (license license:bsd-3)))
909
ab69d9ac
LC
910(define-public xlockmore
911 (package
912 (name "xlockmore")
04056379 913 (version "5.66")
ab69d9ac
LC
914 (source (origin
915 (method url-fetch)
2ec42868 916 (uri (list (string-append "http://sillycycle.com/xlock/"
3596b994 917 "xlockmore-" version ".tar.xz")
2ec42868
TGR
918 ;; Previous releases are moved to a subdirectory.
919 (string-append "http://sillycycle.com/xlock/"
920 "recent-releases/"
3596b994 921 "xlockmore-" version ".tar.xz")))
ab69d9ac
LC
922 (sha256
923 (base32
04056379 924 "0wdb7gpyjw3sigmhiplgg1bqxz6wipr0c3n9492x2a18cv1saxjr"))))
ab69d9ac
LC
925 (build-system gnu-build-system)
926 (arguments
927 '(#:configure-flags (list (string-append "--enable-appdefaultdir="
928 (assoc-ref %outputs "out")
929 "/lib/X11/app-defaults"))
930 #:tests? #f)) ;no such thing as a test suite
931 (inputs
932 `(("libX11" ,libx11)
933 ("libXext" ,libxext)
934 ("libXt" ,libxt)
935 ("linux-pam" ,linux-pam)))
81166ee4 936 (home-page "https://sillycycle.com/xlockmore.html")
ab69d9ac
LC
937 (synopsis "Screen locker for the X Window System")
938 (description
939 "XLockMore is a classic screen locker and screen saver for the
940X Window System.")
166191b3 941 (license (license:non-copyleft #f "See xlock.c.")
e4ddf924 942 ))) ; + GPLv2 in modes/glx/biof.c.
11447a79
AK
943
944(define-public xosd
945 (package
946 (name "xosd")
947 (version "2.2.14")
948 (source (origin
949 (method url-fetch)
950 (uri (string-append
de67e922
LF
951 "mirror://sourceforge/libxosd/libxosd/xosd-" version "/"
952 name "-" version ".tar.gz"))
11447a79
AK
953 (sha256
954 (base32
955 "025m7ha89q29swkc7s38knnbn8ysl24g2h5s7imfxflm91psj7sg"))))
956 (build-system gnu-build-system)
957 (arguments
958 '(#:configure-flags
959 (list (string-append "--mandir=" %output "/share/man"))))
960 (inputs
961 `(("libx11" ,libx11)
962 ("libxt" ,libxt)
963 ("libxext" ,libxext)
964 ("libxinerama" ,libxinerama)))
3b3b60d0 965 (home-page "https://sourceforge.net/projects/libxosd/")
11447a79
AK
966 (synopsis "X On Screen Display")
967 (description
968 "XOSD provides a C library and a simple utility (osd_cat) for displaying
969transparent text on your screen.")
970 (license license:gpl2+)))
76212b57 971
7f891056
NG
972(define-public wob
973 (package
974 (name "wob")
975 (version "0.11")
976 (source
977 (origin
978 (method url-fetch)
979 (uri (string-append "https://github.com/francma/wob/releases/download/"
980 version "/wob-" version ".tar.gz"))
981 (sha256
982 (base32 "1vgngcg8wxn6zfg34czn9w55ia0zmhlgnpzf0gh31dc72li9353k"))))
983 (build-system meson-build-system)
984 (native-inputs
985 `(("pkg-config" ,pkg-config)
986 ("scdoc" ,scdoc)))
987 (inputs
988 `(("libseccomp" ,libseccomp)
989 ("wayland" ,wayland)
990 ("wayland-protocols" ,wayland-protocols)))
991 (home-page "https://github.com/francma/wob")
992 (synopsis "Lightweight overlay bar for Wayland")
993 (description
994 "Wob, or Wayland Overlay Bar, is a lightweight overlay volume,
995backlight, progress, or anything bar for Wayland.")
996 (license license:isc)))
997
76212b57
ML
998(define-public xbindkeys
999 (package
1000 (name "xbindkeys")
854c39ae 1001 (version "1.8.7")
76212b57
ML
1002 (source (origin
1003 (method url-fetch)
1004 ;; Download from the savannah mirror list fails
1005 (uri (string-append
1006 "http://www.nongnu.org/xbindkeys/xbindkeys-"
1007 version
1008 ".tar.gz"))
1009 (sha256
1010 (base32
854c39ae 1011 "1wl2vc5alisiwyk8m07y1ryq8w3ll9ym83j27g4apm4ixjl8d6x2"))))
76212b57 1012 (build-system gnu-build-system)
72fabd8d
TGR
1013 (arguments
1014 `(#:phases
1015 (modify-phases %standard-phases
1016 (add-after 'unpack 'sanitise-shebang
1017 ;; This wish script uses a strange double shebang that escapes our
1018 ;; patch-shebangs phase. Assume that it's unnecessary & replace it.
1019 (lambda _
1020 (substitute* "xbindkeys_show"
1021 (("^#!.*|^exec wish.*") "")
1022 (("^# \\\\") (string-append "#!" (which "wish"))))
2c9d481c
TGR
1023 #t))
1024 (add-after 'unpack 'patch-references
1025 (lambda* (#:key outputs #:allow-other-keys)
1026 (let ((out (assoc-ref outputs "out")))
1027 (substitute* "xbindkeys_show"
1028 (("\"(xbindkeys)\"" _ command)
1029 (format #f "\"~a/bin/~a\"" out command)))
1030 #t))))))
854c39ae
TGR
1031 (native-inputs
1032 `(("pkg-config" ,pkg-config)))
76212b57 1033 (inputs
b230a47f 1034 `(("guile" ,guile-2.2)
72fabd8d
TGR
1035 ("libx11" ,libx11)
1036 ("tk" ,tk)))
340978d7 1037 (home-page "https://www.nongnu.org/xbindkeys/")
76212b57
ML
1038 (synopsis "Associate a combination of keys with a shell command")
1039 (description
1040 "XBindKeys is a program that allows you to launch shell commands with
1041your keyboard or your mouse under the X Window System. It links commands to
1042keys or mouse buttons, using a configuration file. It's independent of the
1043window manager and can capture all keyboard keys (ex: Power, Wake...). It
1044optionally supports a Guile-based configuration file layout, which enables you
1045to access all XBindKeys internals, so you can have key combinations, double
1046clicks or timed double clicks take actions. Also all functions that work in
1047Guile will work for XBindKeys.")
1048 (license license:gpl2+)))
42f2c2b9 1049
998b8c07 1050(define-public sxhkd
1051 (package
1052 (name "sxhkd")
4582e715 1053 (version "0.6.2")
998b8c07 1054 (source
1055 (origin
f8f0b652
TGR
1056 (method git-fetch)
1057 (uri (git-reference
1058 (url "https://github.com/baskerville/sxhkd")
1059 (commit version)))
f9447ded 1060 (file-name (git-file-name name version))
998b8c07 1061 (sha256
4582e715 1062 (base32 "1winwzdy9yxvxnrv8gqpigl9y0c2px27mnms62bdilp4x6llrs9r"))))
998b8c07 1063 (build-system gnu-build-system)
1064 (inputs
1065 `(("asciidoc" ,asciidoc)
1066 ("libxcb" ,libxcb)
1067 ("xcb-util" ,xcb-util)
1068 ("xcb-util-keysyms" ,xcb-util-keysyms)
1069 ("xcb-util-wm" ,xcb-util-wm)))
1070 (arguments
f8f0b652 1071 `(#:phases (modify-phases %standard-phases (delete 'configure))
998b8c07 1072 #:tests? #f ; no check target
f8f0b652
TGR
1073 #:make-flags
1074 (list "CC=gcc"
1075 (string-append "PREFIX=" %output)
1076 ;; Keep the documentation where the build system installs LICENSE.
1077 (string-append "DOCPREFIX=" %output
1078 "/share/doc/" ,name "-" ,version))))
998b8c07 1079 (home-page "https://github.com/baskerville/sxhkd")
1080 (synopsis "Simple X hotkey daemon")
1081 (description "sxhkd is a simple X hotkey daemon with a powerful and
1082compact configuration syntax.")
1083 (license license:bsd-2)))
1084
42f2c2b9
AG
1085(define-public rxvt-unicode
1086 (package
1087 (name "rxvt-unicode")
71ca0539 1088 (version "9.22")
1ef3f91a
ML
1089 (source (origin
1090 (method url-fetch)
63999415 1091 (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/"
1ef3f91a 1092 name "-" version ".tar.bz2"))
0fd0bb56 1093 (patches (search-patches "rxvt-unicode-escape-sequences.patch"))
1ef3f91a
ML
1094 (sha256
1095 (base32
71ca0539 1096 "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"))))
42f2c2b9 1097 (build-system gnu-build-system)
1ef3f91a
ML
1098 (arguments
1099 ;; This sets the destination when installing the necessary terminal
1100 ;; capability data, which are not provided by 'ncurses'. See
1101 ;; https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html
4835d52e
JH
1102 `(#:configure-flags (list "--enable-256-color")
1103 #:make-flags (list (string-append "TERMINFO="
1ef3f91a 1104 (assoc-ref %outputs "out")
33c93ea3 1105 "/share/terminfo"))
1106 #:phases
1107 (modify-phases %standard-phases
1108 (add-after 'install 'install-desktop-urxvt
1109 (lambda* (#:key outputs #:allow-other-keys)
1110 (let* ((output (assoc-ref outputs "out"))
1111 (desktop (string-append output "/share/applications")))
1112 (mkdir-p desktop)
1113 (with-output-to-file
1114 (string-append desktop "/urxvt.desktop")
1115 (lambda _
1116 (format #t
1117 "[Desktop Entry]~@
1118 Name=rxvt-unicode~@
1119 Comment=~@
1120 Exec=~a/bin/urxvt~@
1121 TryExec=~@*~a/bin/urxvt~@
1122 Icon=~@
1123 Type=Application~%"
1124 output)))
1125 #t)))
1126 (add-after 'install 'install-desktop-urxvtc
1127 (lambda* (#:key outputs #:allow-other-keys)
1128 (let* ((output (assoc-ref outputs "out"))
1129 (desktop (string-append output "/share/applications")))
1130 (mkdir-p desktop)
1131 (with-output-to-file
1132 (string-append desktop "/urxvtc.desktop")
1133 (lambda _
1134 (format #t
1135 "[Desktop Entry]~@
120349bf 1136 Name=rxvt-unicode (client)~@
33c93ea3 1137 Comment=Rxvt clone with XFT and unicode support~@
1138 Exec=~a/bin/urxvtc~@
1139 TryExec=~@*~a/bin/urxvtc~@
1140 Icon=~@
1141 Type=Application~%"
1142 output)))
1143 #t))))))
42f2c2b9
AG
1144 (inputs
1145 `(("libXft" ,libxft)
1146 ("libX11" ,libx11)))
1147 (native-inputs
1ef3f91a
ML
1148 `(("ncurses" ,ncurses) ;trigger the installation of terminfo data
1149 ("perl" ,perl)
42f2c2b9 1150 ("pkg-config" ,pkg-config)))
1ef3f91a
ML
1151 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
1152 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
1153 (native-search-paths
1154 (list (search-path-specification
1155 (variable "TERMINFO_DIRS")
1156 (files '("share/terminfo")))))
42f2c2b9
AG
1157 (home-page "http://software.schmorp.de/pkg/rxvt-unicode.html")
1158 (synopsis "Rxvt clone with XFT and unicode support")
1159 (description "Rxvt-unicode (urxvt) is a colour vt102 terminal emulator
1160intended as an xterm replacement for users who do not require features such as
1161Tektronix 4014 emulation and toolkit-style configurability. It supports
1162unicode, XFT and may be extended with Perl plugins. It also comes with a
1163client/daemon pair that lets you open any number of terminal windows from
1164within a single process.")
1165 (license license:gpl3+)))
ca0d2a63
AG
1166
1167(define-public xcape
1168 (package
1169 (name "xcape")
82f44a36 1170 (version "1.2")
4bb74ed5
RW
1171 (source (origin
1172 (method git-fetch)
1173 (uri (git-reference
b0e7b699 1174 (url "https://github.com/alols/xcape")
4bb74ed5
RW
1175 (commit (string-append "v" version))))
1176 (file-name (git-file-name name version))
1177 (sha256
1178 (base32
1179 "09a05cxgrip6nqy1qmwblamp2bhknqnqmxn7i2a1rgxa0nba95dm"))))
ca0d2a63
AG
1180 (build-system gnu-build-system)
1181 (arguments
1182 `(#:tests? #f ; no check target
dc1d3cde
KK
1183 ;; no configure script
1184 #:phases (modify-phases %standard-phases (delete 'configure))
ca0d2a63
AG
1185 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1186 "MANDIR=/share/man/man1"
1187 "CC=gcc")))
1188 (inputs
1189 `(("libxtst" ,libxtst)
1190 ("libx11" ,libx11)))
1191 (native-inputs
1192 `(("pkg-config" ,pkg-config)))
7bf837fd 1193 (home-page "https://github.com/alols/xcape")
ca0d2a63
AG
1194 (synopsis "Use a modifier key in X.org as another key")
1195 (description
839f0229 1196 "This utility for X.org uses a modifier key as another key when
ca0d2a63
AG
1197pressed and released on its own. The default behaviour is to generate the
1198Escape key when Left Control is pressed and released on its own.")
1199 (license license:gpl3+)))
f1f7049e
AW
1200
1201(define-public libwacom
1202 (package
1203 (name "libwacom")
2fd79876 1204 (version "1.7")
f1f7049e
AW
1205 (source (origin
1206 (method url-fetch)
0ac68e72
TGR
1207 (uri (string-append
1208 "https://github.com/linuxwacom/libwacom/releases/download/"
cffdcbef 1209 "libwacom-" version "/libwacom-" version ".tar.bz2"))
f1f7049e
AW
1210 (sha256
1211 (base32
2fd79876 1212 "0797gc055dgg2jfqijy9823bd83jwr4wb2z9id992qlcr0xmz1rw"))))
f1f7049e 1213 (build-system glib-or-gtk-build-system)
4ad2c9db
MB
1214 (arguments
1215 `(#:configure-flags '("--disable-static")))
f1f7049e 1216 (native-inputs
2fd79876
TGR
1217 `(("pkg-config" ,pkg-config)
1218 ;; For tests.
1219 ("python" ,python)))
f1f7049e 1220 (inputs
34efce4f 1221 `(("gtk+" ,gtk+)
b9cbe316 1222 ("libgudev" ,libgudev)
f1f7049e
AW
1223 ("eudev" ,eudev)
1224 ("libxml2" ,libxml2)))
34efce4f
AW
1225 (propagated-inputs
1226 ;; libwacom includes header files that include GLib, and libinput uses
1227 ;; those header files.
1228 `(("glib" ,glib)))
81dc1d12 1229 (home-page "https://linuxwacom.github.io/")
f1f7049e
AW
1230 (synopsis "Helper library for Wacom tablet settings")
1231 (description
34efce4f
AW
1232 "Libwacom is a library to help implement Wacom tablet settings. It is
1233intended to be used by client-programs that need model identification. It is
1234already being used by the gnome-settings-daemon and the GNOME Control Center
1235Wacom tablet applet.")
f1f7049e 1236 (license license:x11)))
ab42a2a7
AW
1237
1238(define-public xf86-input-wacom
1239 (package
1240 (name "xf86-input-wacom")
f01d8e9c 1241 (version "0.39.0")
fe049752
TGR
1242 (source
1243 (origin
1244 (method url-fetch)
1245 (uri (string-append
1246 "https://github.com/linuxwacom/xf86-input-wacom/releases/download/"
b106dd84
TGR
1247 "xf86-input-wacom-" version "/"
1248 "xf86-input-wacom-" version ".tar.bz2"))
fe049752 1249 (sha256
f01d8e9c 1250 (base32 "11qk58az6qwii774ga45h5yqzipwn56f0d74kdbajqdv45p85gqj"))))
ab42a2a7
AW
1251 (arguments
1252 `(#:configure-flags
1253 (list (string-append "--with-sdkdir="
1254 (assoc-ref %outputs "out")
1255 "/include/xorg")
1256 (string-append "--with-xorg-conf-dir="
1257 (assoc-ref %outputs "out")
1258 "/share/X11/xorg.conf.d"))))
1259 (build-system gnu-build-system)
1260 (native-inputs
1261 `(("pkg-config" ,pkg-config)))
1262 (inputs
1263 `(("xorg-server" ,xorg-server)
1264 ("libxrandr" ,libxrandr)
1265 ("libxinerama" ,libxinerama)
1266 ("libxi" ,libxi)
1267 ("eudev" ,eudev)))
81dc1d12 1268 (home-page "https://linuxwacom.github.io/")
ab42a2a7
AW
1269 (synopsis "Wacom input driver for X")
1270 (description
1271 "The xf86-input-wacom driver is the wacom-specific X11 input driver for
1272the X.Org X Server version 1.7 and later (X11R7.5 or later).")
1273 (license license:x11)))
6645753b
FPS
1274
1275(define-public redshift
1276 (package
1277 (name "redshift")
a5a568d2 1278 (version "1.12")
6645753b
FPS
1279 (source
1280 (origin
1281 (method url-fetch)
1282 (uri
1283 (string-append "https://github.com/jonls/redshift/"
1284 "releases/download/v" version
1285 "/redshift-" version ".tar.xz"))
1286 (sha256
1287 (base32
a5a568d2 1288 "1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
6645753b 1289 (build-system gnu-build-system)
22070ad1
MB
1290 (arguments
1291 `(#:imported-modules (,@%gnu-build-system-modules
1292 (guix build python-build-system))
1293 #:phases
1294 (modify-phases %standard-phases
1295 (add-after 'install 'split-outputs
1296 (lambda* (#:key outputs #:allow-other-keys)
1297 (let ((out (assoc-ref outputs "out"))
1298 (gtk (assoc-ref outputs "gtk"))
1299 (desktop-file "/share/applications/redshift-gtk.desktop"))
1300 (mkdir-p (string-append gtk "/bin"))
1301 (link (string-append out "/bin/redshift-gtk")
1302 (string-append gtk "/bin/redshift-gtk"))
1303 (delete-file (string-append out "/bin/redshift-gtk"))
1304 (copy-recursively (string-append out "/lib")
1305 (string-append gtk "/lib"))
1306 (delete-file-recursively (string-append out "/lib"))
1307 (mkdir-p (string-append gtk "/share/applications"))
1308 (link (string-append out desktop-file)
1309 (string-append gtk desktop-file))
1310 (delete-file (string-append out desktop-file))
1311 (with-directory-excursion (string-append out "/share")
1312 (for-each (lambda (dir)
1313 (copy-recursively
1314 (string-append out "/share/" dir)
1315 (string-append gtk "/share/" dir))
1316 (delete-file-recursively dir))
1317 '("appdata" "icons")))
1318 #t)))
1319 (add-after 'split-outputs 'wrap
1320 (lambda* (#:key inputs outputs #:allow-other-keys)
1321 (let* ((gtk (assoc-ref outputs "gtk"))
1322 (python-version
1323 (@ (guix build python-build-system) python-version))
1324 (python (assoc-ref inputs "python"))
1325 (sitedir (string-append gtk "/lib/python"
1326 (python-version python)
1327 "/site-packages")))
1328 (wrap-program (string-append gtk "/bin/redshift-gtk")
1329 `("PYTHONPATH" ":" prefix
1330 (,(string-append sitedir ":" (getenv "PYTHONPATH"))))
1331 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
1332 #t))))))
1333 (outputs '("out" "gtk"))
6645753b
FPS
1334 (native-inputs
1335 `(("pkg-config" ,pkg-config)
1336 ("intltool" ,intltool)))
1337 (inputs
1338 `(("libdrm" ,libdrm)
1339 ("libx11" ,libx11)
1340 ("libxcb" ,libxcb)
b3546174 1341 ("libxxf86vm" ,libxxf86vm)
22070ad1
MB
1342 ("glib" ,glib) ;for Geoclue2 support
1343
1344 ;; To build the GTK3 GUI, we need these.
1345 ("gtk+" ,gtk+)
1346 ("python" ,python)
1347 ("python-pygobject" ,python-pygobject)
1348 ("python-pyxdg" ,python-pyxdg)))
6645753b
FPS
1349 (home-page "https://github.com/jonls/redshift")
1350 (synopsis "Adjust the color temperature of your screen")
1351 (description
1352 "Redshift adjusts the color temperature according to the position of the
1353sun. A different color temperature is set during night and daytime. During
1354twilight and early morning, the color temperature transitions smoothly from
1355night to daytime temperature to allow your eyes to slowly adapt. At night the
1356color temperature should be set to match the lamps in your room.")
1357 (license license:gpl3+)))
b4c400a7 1358
264a63d6
JH
1359(define-public redshift-wayland
1360 (let ((commit "7da875d34854a6a34612d5ce4bd8718c32bec804")
1361 (revision "1"))
1362 (package
1363 (name "redshift-wayland")
1364 (version (string-append "1.12-"
1365 revision "." (string-take commit 7)))
1366 (source (origin
1367 (method git-fetch)
1368 (uri (git-reference
b0e7b699 1369 (url "https://github.com/minus7/redshift")
264a63d6
JH
1370 (commit commit)))
1371 (file-name (string-append name "-" version))
1372 (sha256
1373 (base32
1374 "0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"))))
1375 (build-system gnu-build-system)
b1affd47
MB
1376 (arguments
1377 '(#:phases (modify-phases %standard-phases
1378 (add-after 'install 'create-desktop-file
1379 (lambda* (#:key outputs #:allow-other-keys)
1380 ;; For the GeoClue provider to work, a .desktop file
1381 ;; needs to be provided. A template is available,
1382 ;; but it only gets installed when the GUI is enabled.
1383 ;; Install it manually for this Wayland variant.
1384 (let* ((out (assoc-ref outputs "out"))
1385 (desktop-file
1386 (string-append
1387 out "/share/applications/redshift.desktop")))
1388 (mkdir-p (dirname desktop-file))
1389 (copy-file "data/applications/redshift.desktop.in"
1390 desktop-file)
1391 (substitute* desktop-file
1392 (("^_") ""))
1393 #t))))))
264a63d6
JH
1394 (native-inputs
1395 `(("autoconf" ,autoconf)
1396 ("automake" ,automake)
1397 ("libtool" ,libtool)
1398 ("pkg-config" ,pkg-config)
1399 ("intltool" ,intltool)))
1400 (inputs
1401 `(("libdrm" ,libdrm)
1402 ("libx11" ,libx11)
1403 ("libxcb" ,libxcb)
1404 ("libxxf86vm" ,libxxf86vm)
1405 ("glib" ,glib) ; for Geoclue2 support
1406 ("wayland" ,wayland)))
1407 (home-page "https://github.com/minus7/redshift")
1408 (synopsis "Adjust the color temperature of your screen (with Wayland support)")
1409 (description
1410 "Redshift adjusts the color temperature according to the position of the
1411sun. A different color temperature is set during night and daytime. During
1412twilight and early morning, the color temperature transitions smoothly from
1413night to daytime temperature to allow your eyes to slowly adapt. At night the
1414color temperature should be set to match the lamps in your room.
1415
1416This is a fork with added support for Wayland using the wlr-gamma-control
1417protocol.")
1418 (license license:gpl3+))))
cf95ef7f
NG
1419
1420(define-public gammastep
1421 (package
1422 (name "gammastep")
1423 (version "2.0.7")
1424 (source
1425 (origin
1426 (method git-fetch)
1427 (uri (git-reference
1428 (url "https://gitlab.com/chinstrap/gammastep")
1429 (commit (string-append "v" version))))
1430 (file-name (git-file-name name version))
1431 (sha256
1432 (base32 "11j54rdd3cgngdhjwyapwjbrdm8cii4i7g4zdvfykvmb1w4zdk7g"))))
1433 (build-system gnu-build-system)
1434 (arguments
1435 `(#:phases
1436 (modify-phases %standard-phases
1437 (add-after 'install 'wrap-python-and-typelib
1438 (lambda* (#:key outputs #:allow-other-keys)
1439 ;; Gammastep GUI needs Typelib files from GTK and access
1440 ;; to Python libraries.
1441 (wrap-program (string-append (assoc-ref outputs "out")
1442 "/bin/gammastep-indicator")
1443 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
1444 `("GI_TYPELIB_PATH" ":" prefix
1445 (,(getenv "GI_TYPELIB_PATH")))))))))
1446 (native-inputs
1447 `(("autoconf" ,autoconf)
1448 ("automake" ,automake)
1449 ("gettext" ,gettext-minimal)
1450 ("intltool" ,intltool)
1451 ("libtool" ,libtool)
1452 ("pkg-config" ,pkg-config)))
1453 (inputs
1454 `(("glib" ,glib)
1455 ("gtk" ,gtk+)
1456 ("libappindicator" ,libappindicator)
1457 ("libdrm" ,libdrm)
1458 ("libX11" ,libx11)
1459 ("libxxf86vm" ,libxxf86vm)
1460 ("libxcb" ,libxcb)
1461 ("python" ,python)
1462 ("python-pygobject" ,python-pygobject)
1463 ("python-pyxdg" ,python-pyxdg)
1464 ("wayland" ,wayland)))
1465 (home-page "https://gitlab.com/chinstrap/gammastep")
1466 (synopsis "Adjust the color temperature of your screen")
1467 (description
1468 "Gammastep automatically adjusts the color temperature of your
1469screen according to your surroundings. This may help your eyes hurt
1470less if you are working in front of the screen at night.")
1471 (license license:gpl3)))
264a63d6 1472
b4c400a7
CAW
1473(define-public xscreensaver
1474 (package
1475 (name "xscreensaver")
f7158350 1476 (version "5.45")
b4c400a7
CAW
1477 (source
1478 (origin
1479 (method url-fetch)
1480 (uri
1481 (string-append "https://www.jwz.org/xscreensaver/xscreensaver-"
1482 version ".tar.gz"))
1483 (sha256
f7158350 1484 (base32 "03fmyjlwjinzv7mih6n07glmys8s877snd8zijk2c0ds6rkxy5kh"))))
b4c400a7
CAW
1485 (build-system gnu-build-system)
1486 (arguments
4995a404 1487 `(#:tests? #f ; no check target
b4c400a7
CAW
1488 #:phases
1489 (modify-phases %standard-phases
1490 (add-before 'configure 'adjust-gtk-resource-paths
1491 (lambda _
1492 (substitute* '("driver/Makefile.in" "po/Makefile.in.in")
1493 (("@GTK_DATADIR@") "@datadir@")
c6bf07d1
MW
1494 (("@PO_DATADIR@") "@datadir@"))
1495 #t)))
b4c400a7
CAW
1496 #:configure-flags '("--with-pam" "--with-proc-interrupts"
1497 "--without-readdisplay")
4cf57c3c 1498 #:make-flags (list (string-append "AD_DIR="
b4c400a7 1499 (assoc-ref %outputs "out")
faf69055 1500 "/lib/X11/app-defaults"))))
b4c400a7
CAW
1501 (native-inputs
1502 `(("pkg-config" ,pkg-config)
1503 ("intltool" ,intltool)))
1504 (inputs
1505 `(("libx11" ,libx11)
1506 ("libxext" ,libxext)
1507 ("libxi" ,libxi)
1508 ("libxt" ,libxt)
1509 ("libxft" ,libxft)
1510 ("libxmu" ,libxmu)
1511 ("libxpm" ,libxpm)
1512 ("libglade" ,libglade)
1513 ("libxml2" ,libxml2)
1514 ("libsm" ,libsm)
4bd428a7 1515 ("libjpeg" ,libjpeg-turbo)
b4c400a7
CAW
1516 ("linux-pam" ,linux-pam)
1517 ("pango" ,pango)
1518 ("gtk+" ,gtk+)
1519 ("perl" ,perl)
1520 ("cairo" ,cairo)
1521 ("bc" ,bc)
1522 ("libxrandr" ,libxrandr)
1523 ("glu" ,glu)
1524 ("glib" ,glib)))
1525 (home-page "https://www.jwz.org/xscreensaver/")
1526 (synopsis "Classic screen saver suite supporting screen locking")
1527 (description
1528 "xscreensaver is a popular screen saver collection with many entertaining
1529demos. It also acts as a nice screen locker.")
1530 ;; xscreensaver doesn't have a single copyright file and instead relies on
1531 ;; source comment headers, though most files have the same lax
1532 ;; permissions. To reduce complexity, we're pointing at Debian's
1533 ;; breakdown of the copyright information.
1534 (license (license:non-copyleft
1535 (string-append
1536 "http://metadata.ftp-master.debian.org/changelogs/"
706998e7 1537 "/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
f40dfcd0 1538
7bbe4655
IK
1539(define-public xssproxy
1540 (package
1541 (name "xssproxy")
1542 (version "1.0.0")
1543 (source (origin
1544 (method git-fetch)
1545 (uri (git-reference
1546 (url "https://github.com/timakro/xssproxy")
1547 (commit (string-append "v" version))))
1548 (file-name (string-append name "-" version "-checkout"))
1549 (sha256
1550 (base32
1551 "0c83wmipnsdnbihc5niyczs7jrkss2s8n6iwwjdia7hkjzbd0hl7"))))
1552 (build-system gnu-build-system)
1553 (arguments `(#:make-flags `("bindir=/bin"
1554 "man1dir=/share/man/man1"
1555 ,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
1556 "CC=gcc")
1557 #:phases (modify-phases %standard-phases
1558 (delete 'configure)
1559 (delete 'check))))
1560 (native-inputs
1561 `(("pkg-config" ,pkg-config)))
1562 (inputs
1563 `(("glib" ,glib)
1564 ("libx11" ,libx11)
1565 ("libxext" ,libxext)
1566 ("libxscrnsaver" ,libxscrnsaver)
1567 ("dbus" ,dbus)))
1568 (synopsis "Forward freedesktop.org Idle Inhibition Service calls to Xss")
1569 (description "xssproxy implements the @code{org.freedesktop.ScreenSaver}
1570D-Bus interface described in the Idle Inhibition Service Draft by the
1571freedesktop.org developers. The inhibition of the screensaver is then
1572controlled using the XScreenSaverSuspend function from the Xss (X11 Screen
1573Saver extension) library.")
1574 (home-page "https://github.com/timakro/xssproxy")
1575 (license license:gpl3+)))
1576
cab1c117
MB
1577(define-public xsel
1578 (package
1579 (name "xsel")
1580 (version "1.2.0")
1581 (source (origin
1582 (method url-fetch)
1583 (uri (string-append "http://www.vergenet.net/~conrad/software"
1584 "/xsel/download/xsel-" version ".tar.gz"))
1585 (sha256
1586 (base32
1587 "070lbcpw77j143jrbkh0y1v10ppn1jwmjf92800w7x42vh4cw9xr"))))
1588 (build-system gnu-build-system)
1589 (inputs
1590 `(("libxt" ,libxt)))
1591 (home-page "http://www.vergenet.net/~conrad/software/xsel/")
1592 (synopsis "Manipulate X selection")
1593 (description
1594 "XSel is a command-line program for getting and setting the contents of
1595the X selection. Normally this is only accessible by manually highlighting
1596information and pasting it with the middle mouse button.
1597
1598XSel reads from standard input and writes to standard output by default,
1599but can also follow a growing file, display contents, delete entries and more.")
1600 (license (license:x11-style "file://COPYING"
1601 "See COPYING in the distribution."))))
1602
6cfd1a68
AK
1603(define-public xdpyprobe
1604 (package
1605 (name "xdpyprobe")
1606 (version "0.1")
1607 (source (origin
1608 (method url-fetch)
1609 (uri (string-append "https://github.com/alezost/" name
1610 "/releases/download/v" version
1611 "/" name "-" version ".tar.gz"))
1612 (sha256
1613 (base32
1614 "1h09wd2qcg08rj5hcakvdh9q01hkrj8vxly94ax3ch2x06lm0zq8"))))
1615 (build-system gnu-build-system)
1616 (inputs
1617 `(("libx11" ,libx11)))
1618 (home-page "https://github.com/alezost/xdpyprobe")
1619 (synopsis "Probe X server for connectivity")
1620 (description
1621 "Xdpyprobe is a tiny C program whose only purpose is to probe a
1622connectivity of the X server running on a particular @code{DISPLAY}.")
1623 (license license:gpl3+)))
1624
f40dfcd0
DM
1625(define-public rofi
1626 (package
1627 (name "rofi")
7e15b2d2 1628 (version "1.6.1")
f40dfcd0
DM
1629 (source (origin
1630 (method url-fetch)
1631 (uri (string-append "https://github.com/DaveDavenport/rofi/"
1632 "releases/download/"
1633 version "/rofi-" version ".tar.xz"))
1634 (sha256
1635 (base32
7e15b2d2 1636 "12p9z8bl1gg8k024m4a6zfz7gf1zbyffardh98raqgabn6knwk22"))))
f40dfcd0
DM
1637 (build-system gnu-build-system)
1638 (inputs
68c35ba9 1639 `(("pango" ,pango)
f40dfcd0
DM
1640 ("cairo" ,cairo)
1641 ("glib" ,glib)
1642 ("startup-notification" ,startup-notification)
e641a956 1643 ("libjpeg" ,libjpeg-turbo)
23e12d9d 1644 ("librsvg" ,librsvg)
f40dfcd0
DM
1645 ("libxkbcommon" ,libxkbcommon)
1646 ("libxcb" ,libxcb)
1647 ("xcb-util" ,xcb-util)
68c35ba9 1648 ("xcb-util-xrm" ,xcb-util-xrm)
f40dfcd0
DM
1649 ("xcb-util-wm" ,xcb-util-wm)))
1650 (native-inputs
23e12d9d 1651 `(("bison" ,bison)
dfdf8d74 1652 ("check" ,check)
23e12d9d 1653 ("flex" ,flex)
a3a7eb2f 1654 ("glib:bin" ,glib "bin")
23e12d9d 1655 ("pkg-config" ,pkg-config)))
f40dfcd0 1656 (arguments
8cba7d2a 1657 `(#:parallel-tests? #f ; fails in some circumstances
46d6219d 1658 #:phases
f40dfcd0
DM
1659 (modify-phases %standard-phases
1660 (add-before 'configure 'adjust-tests
1661 (lambda _
1662 (substitute* '("test/helper-expand.c")
1663 (("~root") "/root")
1664 (("~") "")
a3a7eb2f 1665 (("g_get_home_dir \\(\\)") "\"/\""))
576e0ae4 1666 #t)))))
06229f18 1667 (home-page "https://github.com/DaveDavenport/rofi")
89be33f7
TGR
1668 (synopsis "Application launcher")
1669 (description "Rofi is a minimalist application launcher. It memorizes which
1670applications you regularly use and also allows you to search for an application
f40dfcd0
DM
1671by name.")
1672 (license license:expat)))
751f6871
ML
1673
1674(define-public tint2
1675 (package
1676 (name "tint2")
1ffe4171 1677 (version "0.14.6")
751f6871
ML
1678 (source (origin
1679 (method url-fetch)
1680 (uri (string-append "https://gitlab.com/o9000/" name
1681 "/repository/archive.tar.gz?ref=" version))
1682 (file-name (string-append name "-" version ".tar.gz"))
1683 (sha256
1684 (base32
1ffe4171 1685 "1kwzwxy4myagybm3rc7dgynfgp75742n348qibn1p2an9ggyivda"))))
751f6871
ML
1686 (build-system cmake-build-system)
1687 (arguments
1688 '(#:tests? #f ;no test target
1689 #:phases
1690 (modify-phases %standard-phases
1691 (add-after 'unpack 'fix-installation-prefix
1692 (lambda _
1693 (substitute* "CMakeLists.txt"
c6bf07d1
MW
1694 (("/etc") "${CMAKE_INSTALL_PREFIX}/etc"))
1695 #t)))))
751f6871
ML
1696 (inputs
1697 `(("gtk+" ,gtk+-2)
1698 ("imlib2" ,imlib2)
1699 ("librsvg" ,librsvg)
1700 ("libxcomposite" ,libxcomposite)
1701 ("libxdamage" ,libxdamage)
1702 ("libxft" ,libxft)
1703 ("libxinerama" ,libxinerama)
1704 ("libxrandr" ,libxrandr)
1705 ("startup-notification" ,startup-notification)))
1706 (native-inputs
b94a6ca0 1707 `(("gettext" ,gettext-minimal)
751f6871
ML
1708 ("pkg-config" ,pkg-config)))
1709 (home-page "https://gitlab.com/o9000/tint2")
1710 (synopsis "Lightweight task bar")
1711 (description
1712 "Tint2 is a simple task bar made for modern X window managers. It was
1713specifically made for Openbox but it should also work with other window
1714managers (GNOME, KDE, XFCE etc.).
1715
1716The taskbar includes transparency and color settings for the font, icons,
1717border, and background. It also supports multihead setups, customized mouse
1718actions, a built-in clock, a battery monitor and a system tray.")
1719 (license license:gpl2)))
4493a3c2 1720
37447422
MM
1721(define-public dzen
1722 (let ((commit "488ab66019f475e35e067646621827c18a879ba1")
1723 (revision "1"))
1724 (package
1725 (name "dzen")
1726 (version (string-append "0.9.5-" ; Taken from `config.mk`.
1727 revision "." (string-take commit 7)))
1728 (source (origin
1729 (method git-fetch)
1730 (uri (git-reference
b0e7b699 1731 (url "https://github.com/robm/dzen")
37447422
MM
1732 (commit commit)))
1733 (file-name (string-append name "-" version))
1734 (sha256
1735 (base32
1736 "0y47d6ii87vf4a517gi4fh0yl06f8b085sra77immnsasbq9pxnw"))))
1737 (build-system gnu-build-system)
1738 (arguments
1739 `(#:tests? #f ; No test suite.
1740 #:make-flags ; Replacement for `config.mk`.
1741 (list
1742 (string-append "VERSION = " ,version)
1743 (string-append "PREFIX = " %output)
1744 "MANPREFIX = ${PREFIX}/share/man"
1745 "INCS = -I."
1746 "LIBS = -lc -lX11 -lXinerama -lXpm $(shell pkg-config --libs xft)"
1747 "CFLAGS = -Wall -Os ${INCS} -DVERSION=\\\"${VERSION}\\\"\
1748 -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT $(shell pkg-config --cflags xft)"
1749 "LDFLAGS = ${LIBS}"
1750 "CC = gcc"
1751 "LD = ${CC}")
1752 #:phases
1753 (modify-phases %standard-phases
1754 (delete 'configure) ; No configuration script.
1755 ;; Use own make-flags instead of `config.mk`.
1756 (add-before 'build 'dont-include-config-mk
1757 (lambda _
1758 (substitute* "Makefile" (("include config.mk") ""))
1759 #t)))))
1760 (inputs
1761 `(("libx11" ,libx11)
1762 ("libxft" ,libxft)
1763 ("libxpm" ,libxpm)
1764 ("libxinerama" ,libxinerama)))
1765 (native-inputs `(("pkg-config" ,pkg-config)))
1766 (synopsis "General purpose messaging, notification and menuing program for X11")
1767 (description "Dzen is a general purpose messaging, notification and menuing
1768program for X11. It was designed to be fast, tiny and scriptable in any language.")
1769 (home-page "https://github.com/robm/dzen")
1770 (license license:expat))))
1771
af96c417
KA
1772(define-public xftwidth
1773 (package
1774 (name "xftwidth")
1775 (version "20170402")
1776 (source
1777 (origin
1778 (method git-fetch)
1779 (uri (git-reference
1780 (url "http://github.com/vixus0/xftwidth")
1781 (commit "35ff963908d41a8a6a7101c434c88255728025ee")))
1782 (sha256
1783 (base32
1784 "1jwl25785li24kbp0m1wxfwk4dgxkliynn03nsj813cjr34kq16h"))
1785 (file-name (string-append name "-" version "-checkout"))))
1786 (build-system gnu-build-system)
1787 (inputs `(("freetype" ,freetype)
1788 ("libx11" ,libx11)
1789 ("fontconfig" ,fontconfig)
1790 ("libxft" ,libxft)))
1791 (native-inputs
1792 `(("pkg-config" ,pkg-config)))
1793 (arguments
1794 '(#:phases
1795 (modify-phases %standard-phases
1796 (add-after 'unpack 'fix-makefile ; /usr/bin doesn't show up in PATH
1797 (lambda _ (substitute* "Makefile" (("usr/") "")) #t))
1798 (delete 'check) ; no check included in Makefile
1799 (delete 'configure))
1800 #:make-flags
1801 (let ((out (assoc-ref %outputs "out")))
1802 (list (string-append "DESTDIR=" out)))))
91e21700 1803 (home-page "https://github.com/vixus0/xftwidth")
af96c417
KA
1804 (synopsis "Calculator for determining pixel widths of displayed text using Xft fonts")
1805 (description "xftwidth is a small C program for calculating the pixel
1806widths of displayed text using Xft fonts. It is especially useful in scripts
1807for displaying text in graphical panels, menus, popups, and notification
1808windows generated using dzen. These scripts are often used in conjunction with
1809minimalistic tiling window managers such as herbstluftwm and bspwm.")
af96c417
KA
1810 (license license:expat)))
1811
4493a3c2
MB
1812(define-public xcb-util-xrm
1813 (package
1814 (name "xcb-util-xrm")
40fb6b84 1815 (version "1.3")
4493a3c2
MB
1816 (source (origin
1817 (method url-fetch)
1818 (uri (string-append
1819 "https://github.com/Airblader/xcb-util-xrm/releases"
1820 "/download/v" version "/xcb-util-xrm-" version ".tar.bz2"))
1821 (sha256
1822 (base32
40fb6b84 1823 "118cj1ybw86pgw0l5whn9vbg5n5b0ijcpx295mwahzi004vz671h"))
4493a3c2
MB
1824 (modules '((guix build utils)))
1825 (snippet
1826 ;; Drop bundled m4.
6cbee49d
MW
1827 '(begin
1828 (delete-file-recursively "m4")
1829 #t))))
4493a3c2
MB
1830 (build-system gnu-build-system)
1831 (native-inputs
1832 `(("pkg-config" ,pkg-config)
1833 ("m4" ,m4)
1834 ("libx11" ,libx11))) ; for tests
1835 (inputs
1836 `(("libxcb" ,libxcb)
1837 ("xcb-util" ,xcb-util)))
1838 (home-page "https://github.com/Airblader/xcb-util-xrm")
1839 (synopsis "XCB utility functions for the X resource manager")
1840 (description
1841 "The XCB util module provides a number of libraries which sit on
1842top of libxcb, the core X protocol library, and some of the extension
1843libraries. These experimental libraries provide convenience functions
1844and interfaces which make the raw X protocol more usable. Some of the
1845libraries also provide client-side code which is not strictly part of
1846the X protocol but which has traditionally been provided by Xlib.
1847
1848XCB util-xrm module provides the following libraries:
1849
1850- xrm: utility functions for the X resource manager.")
1851 (license license:x11)))
01278f16
P
1852
1853(define-public xcalib
1854 (package
1855 (name "xcalib")
6d727bf4
TGR
1856 (version "0.10")
1857 (home-page "https://github.com/OpenICC/xcalib")
01278f16 1858 (source (origin
6d727bf4
TGR
1859 (method git-fetch)
1860 (uri (git-reference
1861 (url home-page)
1862 (commit version)))
f1d4d79f 1863 (file-name (git-file-name name version))
01278f16
P
1864 (sha256
1865 (base32
6d727bf4
TGR
1866 "05fzdjmhiafgi2jf0k41i3nm0837a78sb6yv59cwc23nla8g0bhr"))
1867 (patches
1868 (list
1869 ;; Add missing documentation for the new --output option.
1870 ;; This upstream patch can be removed on the next update.
1871 (origin
1872 (method url-fetch)
1873 (uri (string-append
1874 home-page "/commit/"
1875 "ae03889b91fe984b18e925ad2b5e6f2f7354e058.patch"))
1876 (file-name "xcalib-update-man-page.patch")
1877 (sha256
1878 (base32
1879 "0f7b4d5484x4b9n1bwhqmar0kcaa029ffff7bp3xpr734n1qgqb6")))))))
1880 (build-system cmake-build-system)
01278f16 1881 (arguments
6d727bf4 1882 '(#:tests? #f)) ; no test suite
c695fb76
TGR
1883 (inputs `(("libx11" ,libx11)
1884 ("libxext" ,libxext)
6d727bf4 1885 ("libxrandr" ,libxrandr)
c695fb76 1886 ("libxxf86vm" ,libxxf86vm)))
01278f16
P
1887 (synopsis "Tiny monitor calibration loader for XFree86 (or X.org)")
1888 (description "xcalib is a tiny tool to load the content of vcgt-Tags in ICC
1889profiles to the video card's gamma ramp. It does work with most video card
1890drivers except the generic VESA driver. Alter brightness, contrast, RGB, and
1891invert colors on a specific display/screen.")
01278f16 1892 (license license:gpl2)))
f021382b
MB
1893
1894(define-public nxbelld
1895 (package
1896 (name "nxbelld")
1897 (version "0.1.2")
1898 (source (origin
1899 (method git-fetch)
1900 (uri (git-reference
b0e7b699 1901 (url "https://github.com/dusxmt/nxbelld")
f021382b
MB
1902 (commit version)))
1903 (sha256
1904 (base32
1905 "04qwhmjs51irinz5mjlxdb3dc6vr79dqmc5fkj80x1ll3ylh5n3z"))
1906 (file-name (git-file-name name version))))
1907 (build-system gnu-build-system)
1908 (arguments '(#:configure-flags `("--enable-sound"
1909 "--enable-wave"
4cbbb160
RW
1910 "--enable-alsa")))
1911 (native-inputs `(("autoconf" ,autoconf)
1912 ("automake" ,automake)
1913 ("pkg-config" ,pkg-config)
1914 ("perl" ,perl)))
f021382b
MB
1915 (inputs `(("libx11" ,libx11)
1916 ("alsa-lib" ,alsa-lib)))
1917 (synopsis "Daemon that performs an action every time the X11 bell is rung")
1918 (description "nxbelld is a tiny utility to aid people who either don't
1919like the default PC speaker beep, or use a sound driver that doesn't have
1920support for the PC speaker. The utility performs a given action every time
1921the X bell is rung. The actions nxbelld can currently perform include running
1922a specified program, emulating the PC speaker beep using the sound card (default),
1923or playing a PCM encoded WAVE file.")
1924 (home-page "https://github.com/dusxmt/nxbelld")
1925 (license license:gpl3+)))
1d752e43
MG
1926
1927(define-public xautolock
1928 (package
1929 (name "xautolock")
1930 (version "2.2")
1931 (source (origin
1932 (method url-fetch)
46128e94
TGR
1933 (uri (string-append "https://www.ibiblio.org/pub/linux/X11/"
1934 "screensavers/xautolock-" version ".tgz"))
1d752e43
MG
1935 (sha256
1936 (base32
1937 "18jd3k3pvlm5x1adyqw63z2b3f4ixh9mfvz9asvnskk3fm8jgw0i"))))
1938 (build-system gnu-build-system)
1939 (native-inputs
1940 `(("imake" ,imake)))
1941 (inputs
1942 `(("libx11" ,libx11)
1943 ("libxext" ,libxext)
1944 ("libxscrnsaver" ,libxscrnsaver)))
1945 (arguments
1946 `(#:tests? #f
1947 #:phases
1948 (modify-phases %standard-phases
1949 (replace 'configure
1950 (lambda* (#:key inputs outputs #:allow-other-keys)
1951 (let ((imake (assoc-ref inputs "imake"))
1952 (out (assoc-ref outputs "out")))
1953 ;; Generate Makefile
1954 (invoke "xmkmf")
1955 (substitute* "Makefile"
1956 ;; These imake variables somehow remain undefined
1957 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
1958 ;; Reset a few variable defaults that are set in imake templates
1959 ((imake) out)
1960 (("(MANPATH = )[[:graph:]]*" _ front)
1961 (string-append front out "/share/man")))
1962 ;; Old BSD-style 'union wait' is unneeded (defining
1963 ;; _USE_BSD did not seem to fix it)
1964 (substitute* "src/engine.c"
1965 (("union wait status") "int status = 0"))
1966 #t)))
1967 (add-after 'install 'install/man
1968 (lambda _
e61c2991 1969 (invoke "make" "install.man"))))))
46128e94 1970 (home-page "https://ibiblio.org/pub/Linux/X11/screensavers/")
1d752e43
MG
1971 (synopsis "Program launcher for idle X sessions")
1972 (description "Xautolock monitors input devices under the X Window
1973System, and launches a program of your choice if there is no activity after
1974a user-configurable period of time.")
1975 (license license:gpl2)))
af1e3dfe
T
1976
1977(define-public screen-message
1978 (package
1979 (name "screen-message")
4b317975 1980 (version "0.26")
af1e3dfe
T
1981 (source (origin
1982 (method url-fetch)
1983 (uri (string-append
1984 "https://www.joachim-breitner.de/archive/screen-message"
1985 "/screen-message-" version ".tar.gz"))
1986 (sha256
1987 (base32
4b317975 1988 "0dwgm4z3dfk6xz41w8xiv0hmnwr74gf3ykb91b090hc4ffwsf4mw"))))
af1e3dfe
T
1989 (build-system gnu-build-system)
1990 (inputs `(("gtk3" ,gtk+)
1991 ("gdk" ,gdk-pixbuf)
1992 ("pango" ,pango)))
1993 (native-inputs `(("pkg-config" ,pkg-config)))
1994 (arguments
1995 ;; The default configure puts the 'sm' binary in games/ instead of bin/ -
1996 ;; this fixes it:
1997 `(#:make-flags (list (string-append "execgamesdir=" %output "/bin"))))
1998 (synopsis "Print messages on your screen")
1999 (description "@code{screen-message} is a tool for displaying text on
2000your screen. It will make the text as large as possible and display it
2001with black color on a white background (colors are configurable on the
2002commandline).")
2003 (home-page "https://www.joachim-breitner.de/projects#screen-message")
2004 (license license:gpl2+)))
428adbc2
PN
2005
2006(define-public xss-lock
2007 ;; xss-lock does not seem to be maintained any longer, but the last commits
2008 ;; fix important issues so we package them.
2009 (let ((version "0.3.0")
2010 (revision "1")
2011 (commit "1e158fb20108058dbd62bd51d8e8c003c0a48717"))
2012 (package
2013 (name "xss-lock")
2014 (version (git-version version revision commit))
2015 (source (origin
2016 (method git-fetch)
2017 (uri (git-reference
2018 (url "https://bitbucket.org/raymonad/xss-lock.git")
2019 (commit commit)))
2020 (file-name (git-file-name name version))
2021 (sha256
2022 (base32
2023 "10hx7k7ga8g08akwz8qrsvj8iqr5nd4siiva6sjx789jvf0sak7r"))))
2024 (build-system cmake-build-system)
2025 (inputs `(("glib" ,glib)
2026 ("xcb-util" ,xcb-util)))
2027 (native-inputs
2028 `(("python-docutils" ,python-docutils)
2029 ("pkg-config" ,pkg-config)))
2030 (arguments
2031 `(#:tests? #f))
2032 (synopsis "Use external screen locker on events")
2033 (description "@code{xss-lock} listens to X signals to fire up a
7f7a6e87 2034user-defined screensaver. In effect this automatically locks the
428adbc2
PN
2035screen when closing a laptop lid or after a period of user inactivity (as set
2036with @code{xset s TIMEOUT}). The notifier command, if specified, is executed
2037first. Additionally, xss-lock uses the inhibition logic to lock the screen
2038before the system goes to sleep.")
2039 (home-page "https://bitbucket.org/raymonad/xss-lock")
2040 (license license:expat))))
19110787
EF
2041
2042(define-public python-pyperclip
2043 (package
2044 (name "python-pyperclip")
2045 (version "1.6.4")
2046 (source
2047 (origin
2048 (method url-fetch)
2049 (uri (pypi-uri "pyperclip" version))
2050 (sha256
2051 (base32
2052 "1p505c23ji06r28k1y67siihsbdzdf1brhlqpyv9ams4gk9863pp"))))
2053 (build-system python-build-system)
2054 (arguments
2055 '(#:tests? #f)) ; Not clear how to make tests pass.
2056 (inputs
2057 `(("xclip" ,xclip)
2058 ("xsel" ,xsel)))
2059 (home-page "https://github.com/asweigart/pyperclip")
2060 (synopsis "Python clipboard module")
2061 (description
2062 "Pyperclip is a clipboard module for Python, handling copy/pasting from
2063the X11 clipboard")
2064 (license license:bsd-3)))
90337891
PN
2065
2066(define-public numlockx
2067 (package
2068 (name "numlockx")
2069 (version "1.2")
2070 (source (origin
2071 (method git-fetch)
2072 (uri (git-reference
2073 ;; It seems that upstream is gone.
2074 (url "https://github.com/rg3/numlockx")
2075 (commit version)))
2076 (file-name (git-file-name name version))
2077 (sha256
2078 (base32
2079 "1w49fayhwzn5rx0z1q2lrvm7z8jrd34lgb89p853a024bixc3cf2"))))
2080 (build-system gnu-build-system)
2081 (inputs
2082 `(("xorg-server" ,xorg-server)))
2083 (home-page "https://github.com/rg3/numlockx")
2084 (synopsis "Turns on the numlock key in X11")
2085 (description "@command{numlockx} is a tiny program that lets you turn on
2086the numlock key in X11. It can be called from the user's initialization files
2087to automatically turn it on on login.")
2088 (license license:expat)))
67e0fb8b
RW
2089
2090(define-public xrandr-invert-colors
2091 (package
2092 (name "xrandr-invert-colors")
2093 (version "0.01")
2094 (source (origin
2095 (method git-fetch)
2096 (uri (git-reference
b0e7b699 2097 (url "https://github.com/zoltanp/xrandr-invert-colors")
67e0fb8b
RW
2098 (commit (string-append "v" version))))
2099 (file-name (git-file-name name version))
2100 (sha256
2101 (base32
2102 "1br3x9vr6xm4ika06n8cfxx1b3wdchdqvyzjl4y1chmivrml8x9h"))))
2103 (build-system gnu-build-system)
2104 (arguments
2105 `(#:make-flags (list "CC=gcc")
2106 #:tests? #f ; there are none
2107 #:phases
2108 (modify-phases %standard-phases
2109 (delete 'configure)
2110 (replace 'install
2111 (lambda* (#:key outputs #:allow-other-keys)
2112 (let* ((out (assoc-ref outputs "out"))
2113 (bin (string-append out "/bin")))
2114 (install-file "xrandr-invert-colors.bin" bin)
2115 #t))))))
2116 (inputs
2117 `(("libxrandr" ,libxrandr)))
2118 (home-page "https://github.com/zoltanp/xrandr-invert-colors")
2119 (synopsis "Invert display colors")
2120 (description "This package provides a small utility for inverting the
2121colors on all monitors attached to an XRandR-capable X11 display server.")
2122 (license license:gpl3+)))
d852cf9e
NN
2123
2124(define-public sct
2125 (package
2126 (name "sct")
d9fda980 2127 (version "0.5")
d852cf9e
NN
2128 (source
2129 (origin
2130 (method url-fetch)
2131 (uri
2132 (string-append "https://www.umaxx.net/dl/sct-"
2133 version ".tar.gz"))
2134 (sha256
d9fda980 2135 (base32 "0lrhx771iccbw04wrhj0ygids1pzmjfc4hvklm30m3p3flvhqf0m"))))
d852cf9e
NN
2136 (build-system gnu-build-system)
2137 (arguments
395659d8
TGR
2138 `(#:make-flags
2139 (list ,(string-append "CC=" (cc-for-target)))
2140 #:tests? #f ; no test suite
d852cf9e
NN
2141 #:phases
2142 (modify-phases %standard-phases
2143 (delete 'configure)
2144 (add-after 'unpack 'fix-sctd-paths
2145 (lambda* (#:key outputs inputs #:allow-other-keys)
2146 (let ((out (assoc-ref outputs "out"))
2147 (coreutils (assoc-ref inputs "coreutils"))
2148 (inetutils (assoc-ref inputs "inetutils"))
2149 (sed (assoc-ref inputs "sed")))
2150 (substitute* "sctd.sh"
2151 (("\\$\\(which sct\\)") (string-append out "/bin/sct"))
2152 (("date") (string-append coreutils "/bin/date"))
2153 (("printf") (string-append coreutils "/bin/printf"))
2154 (("sleep") (string-append coreutils "/bin/sleep"))
2155 (("logger") (string-append inetutils "/bin/logger"))
2156 (("sed") (string-append sed "/bin/sed"))))))
2157 (replace 'install
2158 (lambda* (#:key outputs #:allow-other-keys)
2159 (let ((out (assoc-ref outputs "out")))
2160 (install-file "sct" (string-append out "/bin"))
2161 (install-file "sctd.sh" (string-append out "/bin"))
2162 (install-file "sct.1" (string-append out "/man/man1"))
2163 (install-file "sctd.1" (string-append out "/man/man1"))
2164 (rename-file (string-append out "/bin/sctd.sh")
2165 (string-append out "/bin/sctd"))
2166 #t))))))
2167 (inputs
2168 `(("coreutils" ,coreutils) ; sctd uses "date", "printf" and "sleep"
2169 ("inetutils" ,inetutils) ; sctd uses "logger"
2170 ("libxrandr" ,libxrandr)
2171 ("sed" ,sed))) ; sctd uses "sed"
2172 (home-page "https://www.umaxx.net")
2173 (synopsis "Set the color temperature of the screen")
2174 (description "@code{sct} is a lightweight utility to set the color
2175temperature of the screen.")
dbd346ae 2176 (license (license:non-copyleft "file://sct.c")))) ; "OpenBSD" license
95bf2fb6 2177
d2536ed1
JK
2178(define-public xsecurelock
2179 (package
2180 (name "xsecurelock")
2181 (version "1.6.0")
2182 (source (origin
2183 (method url-fetch)
2184 (uri (string-append
2185 "https://github.com/google/xsecurelock/releases"
2186 "/download/v" version "/xsecurelock-" version ".tar.gz"))
2187 (sha256
2188 (base32 "070gknyv0s5hz9hkc6v73m2v7ssyjwgl93b5hd4glayfqxqjbmdp"))))
2189 (build-system gnu-build-system)
2190 (arguments
2191 '(#:configure-flags
2192 '("--with-pam-service-name=login"
2193 "--with-xkb"
2194 "--with-default-authproto-module=/run/setuid-programs/authproto_pam")))
2195 (native-inputs
47908a75 2196 `(("pandoc" ,pandoc)
d2536ed1
JK
2197 ("pkg-config" ,pkg-config)))
2198 (inputs
2199 `(("fontconfig" ,fontconfig)
2200 ("libX11" ,libx11)
2201 ("libxcomposite" ,libxcomposite)
2202 ("libxext" ,libxext)
2203 ("libxfixes" ,libxfixes)
2204 ("libxft" ,libxft)
2205 ("libxmu" ,libxmu)
2206 ("libxrandr" ,libxrandr)
2207 ("libxscrnsaver" ,libxscrnsaver)
2208 ("linux-pam" ,linux-pam)))
2209 (home-page "https://github.com/google/xsecurelock")
2210 (synopsis "X11 screen lock utility with the primary goal of security")
2211 (description "@code{xsecurelock} is an X11 screen locker which uses
09e74518 2212a modular design to avoid the usual pitfalls of screen locking utility design.
d2536ed1
JK
2213
2214As a consequence of the modular design, the usual screen locker service
2215shouldn't be used with @code{xsecurelock}. Instead, you need to add a helper
2216binary to setuid-binaries:
2217@example
2218(setuid-programs (cons*
2219 (file-append xsecurelock \"/libexec/xsecurelock/authproto_pam\")
2220 %setuid-programs))
2221@end example")
2222 (license license:asl2.0)))
2223
95bf2fb6
RH
2224(define-public wl-clipboard
2225 (package
2226 (name "wl-clipboard")
ab2454ce 2227 (version "2.0.0")
95bf2fb6
RH
2228 (source
2229 (origin
2230 (method git-fetch)
2231 (uri (git-reference
b0e7b699 2232 (url "https://github.com/bugaevc/wl-clipboard")
ab2454ce 2233 (commit (string-append "v" version))))
95bf2fb6
RH
2234 (file-name (git-file-name name version))
2235 (sha256
ab2454ce 2236 (base32 "0c4w87ipsw09aii34szj9p0xfy0m00wyjpll0gb0aqmwa60p0c5d"))))
95bf2fb6
RH
2237 (build-system meson-build-system)
2238 (native-inputs
2239 `(("pkg-config" ,pkg-config)))
2240 (inputs
2241 `(("wayland" ,wayland)
2242 ("wayland-protocols" ,wayland-protocols)))
2243 (home-page "https://github.com/bugaevc/wl-clipboard")
2244 (synopsis "Command-line copy/paste utilities for Wayland")
2245 (description "Wl-clipboard is a set of command-line copy/paste utilities for
2246Wayland.")
2247 (license license:gpl3+)))
9ba1e308
2248
2249(define-public autocutsel
2250 (package
2251 (name "autocutsel")
6ff78268 2252 (version "0.10.1")
9ba1e308
2253 (source (origin
2254 (method url-fetch)
2255 (uri (string-append "https://github.com/sigmike/autocutsel"
2256 "/releases/download/" version "/"
2257 "autocutsel-" version ".tar.gz"))
2258 (sha256
2259 (base32
6ff78268 2260 "05zb85imp42birvrc320q20r98qddc5vxx169dnl753l5za0czpi"))))
9ba1e308
2261 (build-system gnu-build-system)
2262 (arguments
2263 '(#:tests? #f)) ; no "check" target
2264 (native-inputs `(("libx11" ,libx11)
2265 ("libxaw" ,libxaw)))
2266 (home-page "https://www.nongnu.org/autocutsel/")
2267 (synopsis "Automated X11 clipboard and cutbuffer synchronization")
2268 (description "@code{autocutsel} tracks changes in the server's cutbuffer
2269and clipboard selection. When the clipboard is changed, it updates the
2270cutbuffer. When the cutbuffer is changed, it owns the clipboard selection.
2271The cutbuffer and clipboard selection are always synchronized.")
2272 (license license:gpl2+)))
198af489
GLV
2273
2274(define-public jgmenu
2275 (package
2276 (name "jgmenu")
69b03ecd 2277 (version "4.1.0")
198af489
GLV
2278 (source
2279 (origin
2280 (method git-fetch)
2281 (uri (git-reference
b0e7b699 2282 (url "https://github.com/johanmalm/jgmenu")
198af489
GLV
2283 (commit (string-append "v" version))))
2284 (file-name (git-file-name name version))
2285 (sha256
2286 (base32
69b03ecd 2287 "1wsh37rapb1bszlq36hvwxqvfds39hbvbl152m8as4zlh93wfvvk"))))
198af489
GLV
2288 (build-system gnu-build-system)
2289 (native-inputs
8c5cde25
GLV
2290 `(("cppcheck" ,cppcheck)
2291 ("perl" ,perl)
198af489
GLV
2292 ("pkg-config" ,pkg-config)))
2293 (inputs
2294 `(("cairo" ,cairo)
8c5cde25 2295 ("glib" ,glib)
198af489
GLV
2296 ("librsvg" ,librsvg)
2297 ("libx11" ,libx11)
2298 ("libxml2" ,libxml2)
2299 ("libxrandr" ,libxrandr)
8c5cde25 2300 ("pango" ,pango)))
198af489 2301 (arguments
8c5cde25
GLV
2302 `(#:phases
2303 (modify-phases %standard-phases
2304 (add-after 'unpack 'fix-tests
2305 (lambda _
2306 (substitute* "scripts/cppcheck-wrapper.sh"
2307 (("--library=/usr/share/cppcheck/cfg/gnu\\.cfg")
2308 ""))
2309 #t))
2310 (replace 'configure
2311 (lambda* (#:key outputs #:allow-other-keys)
2312 (setenv "CC" "gcc")
2313 (invoke "./configure"
2314 (string-append "--prefix=" (assoc-ref outputs "out")))
2315 #t)))))
198af489
GLV
2316 (synopsis "Simple X11 menu")
2317 (description
2318 "This is a simple menu for X11 designed for scripting and tweaking. It
2319can optionally use some appearance settings from XSettings, tint2 and GTK.")
2320 (home-page "https://jgmenu.github.io/")
2321 (license license:gpl2)))
261d0e8e 2322
79e5d150
JS
2323(define-public xwallpaper
2324 (package
2325 (name "xwallpaper")
05dc279b 2326 (version "0.6.6")
79e5d150
JS
2327 (source
2328 (origin
2329 (method git-fetch)
2330 (uri (git-reference
2331 (url "https://github.com/stoeckmann/xwallpaper")
2332 (commit (string-append "v" version))))
2333 (file-name (git-file-name name version))
2334 (sha256
05dc279b 2335 (base32 "10klm81rs3k3l2i7whpvcsg95x51ja11l86fmwbrvg3kq705p2sr"))))
79e5d150
JS
2336 (build-system gnu-build-system)
2337 (native-inputs
2338 `(("autoconf" ,autoconf)
2339 ("automake" ,automake)
2340 ("pkg-config" ,pkg-config)))
2341 (inputs
2342 `(("libjpeg-turbo" ,libjpeg-turbo)
2343 ("libpng" ,libpng)
2344 ("libxpm" ,libxpm)
2345 ("pixman" ,pixman)
2346 ("xcb-util" ,xcb-util)
2347 ("xcb-util-image" ,xcb-util-image)))
2348 (home-page "https://github.com/stoeckmann/xwallpaper")
2349 (synopsis "Wallpaper setting utility for X")
2350 (description
2351 "The xwallpaper utility allows you to set image files as your X
2352wallpaper. JPEG, PNG, and XPM file formats are supported.
2353
2354The wallpaper is also advertised to programs which support semi-transparent
2355backgrounds.")
2356 (license license:isc)))
2357
2a2da783
IVB
2358(define-public xwrits
2359 (package
2360 (name "xwrits")
2361 (version "2.26")
2362 (source
2363 (origin
2364 (method url-fetch)
2365 (uri (string-append "https://www.lcdf.org/~eddietwo/xwrits/"
2366 "xwrits-" version ".tar.gz"))
2367 (sha256
2368 (base32 "1n7y0fqpcvmzznvbsn14hzy5ddaa3lilm8aw6ckscqndnh4lijma"))))
2369 (build-system gnu-build-system)
2370 (arguments
2371 `(#:phases
2372 (modify-phases %standard-phases
2373 (add-after 'install 'install-docs
2374 (lambda* (#:key outputs #:allow-other-keys)
2375 (let* ((out (assoc-ref outputs "out"))
2376 (doc (string-append out "/share/doc/xwrits")))
2377 (install-file "GESTURES" doc)
2378 (install-file "README" doc)
2379 #t))))))
2380 (inputs
2381 `(("libx11" ,libx11)
2382 ("libxinerama" ,libxinerama)))
2383 (home-page "https://www.lcdf.org/~eddietwo/xwrits/")
2384 (synopsis "Reminds you to take wrist breaks")
2385 (description "Xwrits reminds you to take wrist breaks for prevention or
2386management of repetitive stress injuries. When you should take a break, it
2387pops up an X window, the warning window. You click on the warning window,
2388then take a break. The window changes appearance while you take the break.
2389It changes again when your break is over. Then you just resume typing.
2390Xwrits hides itself until you should take another break.")
2391 (license license:gpl2)))
2392
261d0e8e
DW
2393(define-public xsettingsd
2394 (package
2395 (name "xsettingsd")
bcf2f79c 2396 (version "1.0.2")
261d0e8e
DW
2397 (source
2398 (origin
2399 (method git-fetch)
2400 (uri (git-reference
b0e7b699 2401 (url "https://github.com/derat/xsettingsd")
261d0e8e
DW
2402 (commit (string-append "v" version))))
2403 (file-name (git-file-name name version))
2404 (sha256
bcf2f79c 2405 (base32 "14gnkz18dipsa2v24f4nm9syxaa7g21iqjm7y65jn849ka2jr1h8"))))
261d0e8e
DW
2406 (build-system scons-build-system)
2407 (inputs
2408 `(("libx11" ,libx11)))
2409 (native-inputs
2410 `(("pkg-config" ,pkg-config)
2411 ("googletest" ,googletest)
2412 ("googletest-source" ,(package-source googletest))))
2413 (arguments
2414 `(#:scons ,scons-python2
2415 #:scons-flags
2416 (list "CC=gcc")
2417 #:phases
2418 (modify-phases %standard-phases
2419 (add-before 'build 'patch-sconstruct
2420 (lambda* (#:key inputs #:allow-other-keys)
2421 (substitute* "SConstruct"
2422 ;; scons doesn't pick up environment variables automatically
2423 ;; so it needs help to find path variables
2424 (("env = Environment\\(")
2425 "env = Environment(
2426 ENV = {
2427 'PATH': os.environ['PATH'],
8f929fdf 2428 'CPATH': os.environ['C_INCLUDE_PATH'],
261d0e8e
DW
2429 'LIBRARY_PATH': os.environ['LIBRARY_PATH'],
2430 'PKG_CONFIG_PATH': os.environ['PKG_CONFIG_PATH']
2431 },")
2432 ;; Update path to gtest source files used in tests
2433 (("/usr/src/gtest") (string-append
2434 (assoc-ref inputs "googletest-source")
2435 "/googletest"))
2436 ;; Exclude one warning that causes a build error
2437 (("-Werror") "-Werror -Wno-error=sign-compare"))
2438 #t))
2439 ;; The SConstruct script doesn't configure installation so
2440 ;; binaries must be copied to the output path directly
2441 (replace 'install
2442 (lambda* (#:key outputs #:allow-other-keys)
2443 (let* ((out (assoc-ref outputs "out"))
2444 (bin (string-append out "/bin")))
2445 (mkdir-p bin)
2446 (install-file "xsettingsd" bin)
2447 (install-file "dump_xsettings" bin)
2448 #t))))))
2449 (home-page "https://github.com/derat/xsettingsd")
2450 (synopsis "Xorg settings daemon")
2451 (description "@command{xsettingsd} is a lightweight daemon that provides settings to
2452Xorg applications via the XSETTINGS specification. It is used for defining
2453font and theme settings when a complete desktop environment (GNOME, KDE) is
2454not running. With a simple @file{.xsettingsd} configuration file one can avoid
2455configuring visual settings in different UI toolkits separately.")
2456 (license license:bsd-3)))
51f187be
DC
2457
2458(define-public clipnotify
2459 (package
2460 (name "clipnotify")
2461 (version "1.0.2")
2462 (source
2463 (origin
2464 (method git-fetch)
2465 (uri (git-reference
b0e7b699 2466 (url "https://github.com/cdown/clipnotify")
51f187be
DC
2467 (commit version)))
2468 (file-name (git-file-name name version))
2469 (sha256
2470 (base32
2471 "1v3ydm5ljy8z1savmdxrjyx7a5bm5013rzw80frp3qbbjaci0wbg"))))
2472 (build-system gnu-build-system)
2473 (arguments
2474 `(#:phases
2475 (modify-phases %standard-phases
2476 (delete 'configure)
2477 (replace 'install
2478 (lambda* (#:key inputs outputs #:allow-other-keys)
2479 (let* ((out (assoc-ref outputs "out"))
2480 (bin (string-append out "/bin"))
2481 (doc (string-append %output "/share/doc/" ,name "-" ,version)))
2482 (install-file "clipnotify" bin)
2483 (install-file "README.md" doc)
2484 #t))))
3a169fe3
TGR
2485 #:make-flags
2486 (list ,(string-append "CC=" (cc-for-target)))
2487 #:tests? #f)) ; no test suite
51f187be
DC
2488 (inputs
2489 `(("libx11" ,libx11)
2490 ("libXfixes" ,libxfixes)))
2491 (home-page "https://github.com/cdown/clipnotify")
2492 (synopsis "Notify on new X clipboard events")
2493 (description "@command{clipnotify} is a simple program that, using the
2494XFIXES extension to X11, waits until a new selection is available and then
2495exits.
2496
2497It was primarily designed for clipmenu, to avoid polling for new selections.
2498
2499@command{clipnotify} doesn't try to print anything about the contents of the
2500selection, it just exits when it changes. This is intentional -- X11's
2501selection API is verging on the insane, and there are plenty of others who
2502have already lost their sanity to bring us xclip/xsel/etc. Use one of those
2503tools to complement clipnotify.")
2504 (license license:public-domain)))
ad2c0f5b
DC
2505
2506(define-public clipmenu
1ace39da 2507 (let ((commit "bcbe7b144598db4a103f14e8408c4b7327d6d5e1")
ad2c0f5b
DC
2508 (revision "1"))
2509 (package
08df188e 2510 (name "clipmenu")
1ace39da 2511 (version (string-append "6.0.1-"
08df188e
DC
2512 revision "." (string-take commit 7)))
2513 (source
2514 (origin
2515 (method git-fetch)
2516 (uri (git-reference
b0e7b699 2517 (url "https://github.com/cdown/clipmenu")
08df188e
DC
2518 (commit commit)))
2519 (file-name (git-file-name name version))
2520 (sha256
2521 (base32
9fb2b7ee 2522 "0053j4i14lz5m2bzc5sch5id5ilr1bl196mp8fp0q8x74w3vavs9"))))
08df188e
DC
2523 (build-system gnu-build-system)
2524 (arguments
2525 `(#:phases
2526 (modify-phases %standard-phases
08df188e
DC
2527 (delete 'configure)
2528 (delete 'build)
2529 (replace 'install
2530 (lambda* (#:key inputs outputs #:allow-other-keys)
2531 (let* ((out (assoc-ref outputs "out"))
2532 (bin (string-append out "/bin"))
2533 (doc (string-append %output "/share/doc/"
2534 ,name "-" ,version)))
2535 (install-file "clipdel" bin)
2536 (install-file "clipmenu" bin)
2537 (install-file "clipmenud" bin)
2538 (install-file "README.md" doc)
f5e06344
DC
2539 #t)))
2540 (add-after 'install 'wrap-script
2541 (lambda* (#:key inputs outputs #:allow-other-keys)
2542 (let* ((out (assoc-ref outputs "out"))
2543 (clipnotify (assoc-ref inputs "clipnotify"))
2544 (coreutils-minimal (assoc-ref inputs "coreutils-minimal"))
2545 (gawk (assoc-ref inputs "gawk"))
2546 (util-linux (assoc-ref inputs "util-linux"))
2547 (xdotool (assoc-ref inputs "xdotool"))
2548 (xsel (assoc-ref inputs "xsel")))
2549 (for-each
2550 (lambda (prog)
2551 (wrap-script (string-append out "/bin/" prog)
2552 `("PATH" ":" prefix
2553 ,(map (lambda (dir)
2554 (string-append dir "/bin"))
2555 (list clipnotify coreutils-minimal
2556 gawk util-linux xdotool xsel)))))
2557 '("clipmenu" "clipmenud" "clipdel")))
2558 #t))
2559 (replace 'check
2560 (lambda* (#:key inputs outputs #:allow-other-keys)
2561 ;; substitute a shebang appearing inside a string (the test
2562 ;; file writes this string to a temporary file):
2563 (substitute* "tests/test-clipmenu"
2564 (("#!/usr/bin/env bash")
2565 (string-append "#!" (which "bash"))))
2566 (invoke "tests/test-clipmenu")
2567 #t)))))
08df188e
DC
2568 (inputs
2569 `(("clipnotify" ,clipnotify)
f5e06344
DC
2570 ("coreutils-minimal" ,coreutils-minimal)
2571 ("gawk" ,gawk)
2572 ("guile" ,guile-3.0) ; for wrap-script
2573 ("util-linux" ,util-linux)
2574 ("xdotool" ,xdotool)
08df188e
DC
2575 ("xsel" ,xsel)))
2576 (home-page "https://github.com/cdown/clipmenu")
2577 (synopsis "Simple clipboard manager using dmenu or rofi and xsel")
2578 (description "Start @command{clipmenud}, then run @command{clipmenu} to
ad2c0f5b
DC
2579select something to put on the clipboard.
2580
2581When @command{clipmenud} detects changes to the clipboard contents, it writes
2582them out to the cache directory. @command{clipmenu} reads the cache directory
2583to find all available clips and launches @command{dmenu} (or @command{rofi},
2584depending on the value of @code{CM_LAUNCHER}) to let the user select a clip.
2585After selection, the clip is put onto the PRIMARY and CLIPBOARD X selections.")
08df188e 2586 (license license:public-domain))))
83812f34
BD
2587
2588(define-public kbdd
2589 (package
2590 (name "kbdd")
2591 (version "0.7.1")
2592 (source
2593 (origin
2594 (method git-fetch)
2595 (uri (git-reference
b0e7b699 2596 (url "https://github.com/qnikst/kbdd")
83812f34
BD
2597 (commit (string-append "v" version))))
2598 (file-name (git-file-name name version))
2599 (sha256
2600 (base32
2601 "0qkq75grbd4wkx4nlvswgavpijk9ad0pzqyj89a0ayjsbsn36pqy"))))
2602 (build-system gnu-build-system)
2603 (native-inputs
2604 `(("autoconf" ,autoconf)
2605 ("automake" ,automake)
2606 ("glib" ,glib "bin")
2607 ("pkg-config" ,pkg-config)))
2608 (inputs
1628d57b 2609 `(("dbus-glib" ,dbus-glib)
83812f34
BD
2610 ("glib" ,glib)
2611 ("libx11" ,libx11)))
2612 (home-page "https://github.com/qnikst/kbdd")
2613 (synopsis "Per-window keyboard layout switching daemon for X")
2614 (description "@command{kbdd} is a simple keyboard layout switching
2615program, which is designed to run in an X11 session and remember
2616keyboard layouts on a per-window basis. That can be very handy for a
2617user of a non-US keyboard who does not want to jump through layouts back
2618and forth while typing in terminals (mostly in a latin alphabet) and
2619some kind of chat (in native language).
2620
2621@command{kbdd} also supports D-Bus signals, which makes it possible to
2622create layout indicator widgets.")
2623 (license license:bsd-2)))
c65e2434
AM
2624
2625(define-public j4-dmenu-desktop
2626 (package
2627 (name "j4-dmenu-desktop")
f89d97c8 2628 (version "2.18")
c65e2434
AM
2629 (source (origin
2630 (method git-fetch)
2631 (uri (git-reference
b0e7b699 2632 (url "https://github.com/enkore/j4-dmenu-desktop")
c65e2434
AM
2633 (commit (string-append "r" version))))
2634 (file-name (git-file-name name version))
2635 (sha256
2636 (base32
f89d97c8 2637 "1gxpgifzy0hnpd0ymw3r32amzr32z3bgb90ldjzl438p6h1q0i26"))))
c65e2434
AM
2638 (build-system cmake-build-system)
2639 (native-inputs
2640 `(("catch2" ,catch-framework2)))
2641 (arguments
2642 `(#:configure-flags '("-DWITH_GIT_CATCH=off")
2643 #:phases
2644 (modify-phases %standard-phases
7f101e7c
EF
2645 (add-after 'unpack 'find-catch
2646 (lambda _
2647 (substitute* "CMakeLists.txt"
2648 (("PATH_SUFFIXES catch") "PATH_SUFFIXES catch2"))
2649 #t))
c65e2434
AM
2650 (replace 'check
2651 (lambda _
2652 (invoke "./j4-dmenu-tests" "exclude:SearchPath/XDG_DATA_HOME"))))))
2653 (synopsis "Fast desktop menu")
2654 (description
2655 "j4-dmenu-desktop is a replacement for i3-dmenu-desktop. Its purpose
2656is to find @file{.desktop} files and offer you a menu to start an application
2657using @command{dmenu}.")
2658 (home-page "https://github.com/enkore/j4-dmenu-desktop")
2659 (license license:gpl3+)))
970fcb0d
AM
2660
2661(define-public wofi
2662 (package
2663 (name "wofi")
04a18e93 2664 (version "1.2.4")
970fcb0d
AM
2665 (source (origin
2666 (method hg-fetch)
2667 (uri (hg-reference
2668 (url "https://hg.sr.ht/~scoopta/wofi")
2669 (changeset (string-append "v" version))))
2670 (file-name (git-file-name name version))
2671 (sha256
2672 (base32
04a18e93 2673 "1bnf078fg1kwslzwm1mjxwcqqq3bhk1dzymwfw9gk3brqbxrl75c"))))
970fcb0d
AM
2674 (build-system meson-build-system)
2675 (arguments
2676 `(#:glib-or-gtk? #t))
2677 (native-inputs
2678 `(("pkg-config" ,pkg-config)))
2679 (inputs
2680 `(("gtk3" ,gtk+)
2681 ("wayland" ,wayland)))
2682 (synopsis "Launcher/menu program for wayland")
2683 (description
2684 "Wofi is a launcher/menu program for wlroots based wayland compositors
2685such as sway, similar to @command{rofi}.")
2686 (home-page "https://hg.sr.ht/~scoopta/wofi")
2687 (license license:gpl3+)))
3182d629
JS
2688
2689(define-public dex
2690 (package
2691 (name "dex")
2692 (version "0.9.0")
2693 (source (origin
2694 (method git-fetch)
2695 (uri (git-reference
2696 (url (string-append "https://github.com/jceb/dex"))
2697 (commit (string-append "v" version))))
2698 (sha256
2699 (base32
2700 "03aapcywnz4kl548cygpi25m8adwbmqlmwgxa66v4156ax9dqs86"))
2701 (file-name (git-file-name name version))))
2702 (build-system gnu-build-system)
2703 (arguments
2704 `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2705 #:phases
2706 (modify-phases %standard-phases
2707 (delete 'configure))
2708 #:tests? #f))
2709 (inputs
ade77dd0 2710 `(("python" ,python)))
3182d629
JS
2711 (native-inputs
2712 `(("python-sphinx" ,python-sphinx)))
2713 (home-page "https://github.com/jceb/dex")
2714 (synopsis "Execute DesktopEntry files")
2715 (description
2716 "@command{dex}, @dfn{DesktopEntry Execution}, is a program to generate
2717and execute @file{.desktop} files of the Application type.")
2718 (license license:gpl3+)))
7f9888e5
SB
2719
2720(define-public sx
2721 (package
2722 (name "sx")
2723 (version "2.1.6")
2724 (source (origin
2725 (method git-fetch)
2726 (uri (git-reference
2727 (url "https://github.com/Earnestly/sx")
2728 (commit version)))
2729 (file-name (git-file-name name version))
2730 (sha256
2731 (base32
2732 "0p24ghp1ygvyc2hv81byhxax7491yhcc5priq5ldv07nzl7akagc"))))
2733 (build-system gnu-build-system)
2734 (arguments
2735 '(#:tests? #f ; no tests
2736 #:make-flags
2737 (let ((out (assoc-ref %outputs "out")))
2738 (list (string-append "PREFIX=" out)))
2739 #:phases
2740 (modify-phases %standard-phases
2741 ;; no configure script
2742 (delete 'configure))))
2743 (propagated-inputs
2744 `(("xauth" ,xauth)))
2745 (home-page "https://github.com/Earnestly/sx")
2746 (synopsis "Start an xorg server")
2747 (description
2748 "@command{sx} is a simple alternative to both @command{xinit} and
2749@command{startx} for starting an Xorg server.")
2750 (license license:x11)))
382e0fee
ZJ
2751
2752(define-public hsetroot
2753 (package
2754 (name "hsetroot")
2755 (version "1.0.5")
2756 (home-page "https://github.com/himdel/hsetroot")
2757 (source (origin
2758 (method git-fetch)
2759 (file-name (git-file-name name version))
2760 (uri (git-reference
2761 (url home-page)
2762 (commit version)))
2763 (sha256
2764 (base32
2765 "1jbk5hlxm48zmjzkaq5946s58rqwg1v1ds2sdyd2ba029hmvr722"))))
2766 (build-system gnu-build-system)
2767 (arguments
2768 `(#:tests? #f
2769 #:make-flags
2770 (list
2771 "CC=gcc"
2772 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2773 #:phases
2774 (modify-phases %standard-phases
2775 (delete 'configure)
2776 (add-before 'install 'mkdir-install-path
2777 (lambda* (#:key outputs #:allow-other-keys)
2778 (let ((out (assoc-ref outputs "out")))
2779 (mkdir-p (string-append out "/bin"))))))))
2780 (inputs
2781 `(("libx11" ,libx11)
2782 ("imlib2" ,imlib2)
2783 ("libxinerama" ,libxinerama)))
2784 (native-inputs
2785 `(("pkg-config" ,pkg-config)))
2786 (synopsis "Imlib2-based wallpaper changer")
2787 (description
2788 "The @command{hsetroot} command composes wallpapers for X.
2789This package is the fork of hsetroot by Hyriand.")
2790 (license license:gpl2+)))