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